Stránka je vo výstavbe
|
Powered by |
42) {Jak změnit velikost obrázku při změně velikosti komponenty Image ?} ------------------------------------ Hodnota 0 značí málo paměti nebo zdrojů. Hodnota 1 - poąkození EXE souboru. Hodnota 2 - Cesta nebyla nalezena a nakonec Hodnota 3 - soubor nebyl nalezen. var Hlaska : integer; begin Hlaska := Winexec (PChar('C:\Windows\calc.exe'), sw_showNormal); Hlaska := Winexec (PChar('C:\Windows\calc.exe'), sw_showMaximized); Hlaska := Winexec (PChar('C:\Windows\calc.exe'), sw_showMinimized); end; Zpět ------------------------------------ Jak zjistit, zda je CD v mechanice ? function Uvnitr(Drive: Char): boolean; var DrivePath: string; DriveResult: integer; begin DrivePath := Drive + ':\'; DriveResult := GetDriveType(PChar(DrivePath)); Result := DriveResult = DRIVE_CDROM; end; Zpět ------------------------------------ Jak zobrazit okno po připojení sí»ové jednotky ? begin WNetConnectionDialog(0, RESOURCETYPE_DISK ); end; Zpět ------------------------------------ Jak vyvolat dialog "připojení k síti" ? ResourceType - hodnota RESOURCETYPE_DISK - znamená: Connects to disk resources Tato funkce vrací hodnoty: ERROR_EXTENDED_ERROR - chyba sítě ERROR_INVALID_PASSWORD - ąpatné heslo ERROR_NO_NETWORK - nenalezena sí» ERROR_NOT_ENOUGH_MEMORY - nedostatek paměti var Hlaska, ResourceType:DWord; Handle:HWND; // Handle okna begin Hlaska:=WNetConnectionDialog (Handle, ResourceType); end; Zpět ------------------------------------ Jak vyvolat dialog "odpojení od sítě" ? ResourceType - hodnota RESOURCETYPE_DISK - znamená: Disconnects to disk resources RESOURCETYPE_PRINT - Disconnects from print resources. Tato funkce vrací hodnoty: ERROR_EXTENDED_ERROR - chyba sítě ERROR_NO_NETWORK - nenalezena sí» ERROR_NOT_ENOUGH_MEMORY - nedostatek paměti var Hlaska, ResourceType:DWord; Handle:HWND; //Handle okna begin Hlaska:=WNetDisconnectDialog (Handle, ResourceType); end; Zpět ------------------------------------ Jak nastavit hlasitost WAVů ? 1) Do uses přidejte unitu: MMSystem 2) ScrollBar1.MaxValue nastavet na 65 a MinValue na 0 3) do ScrollBar1Change napiąte begin waveOutSetVolume(a,ScrollBar1.Position * 1000); // hlasitost end; Zpět ------------------------------------ Jak zjistit Handle okna jiné aplikace ? Pokud známe caption daného okna můľeme pouľít tuto funkci. Funkce má dva parametry. První parametr je ukazatel na class name (jméno třídy). Druhý parametr je ukazatel na window name (název okna - caption). Pokud je vąe v pořádku vrátí fce Handle okna, jinak vrací hodnotu NULL. HWND FindWindow(Nil,'Caption okna'); Zpět ------------------------------------ Jak zavřít okno jiného programu ? Nejjednoduąąí řeąení tohoto problému je poslat zprávu oknu programu, ľe se má zavřít. PostMessage(HWND, UINT Msg, WPARAM, LPARAM ); HWND = handl daného okna UINT Msg = WM_QUIT // zpráva, která je poslána oknu WPARAM = 0 // první parametr zprávy LPARAM = 0 // druhý parametr zprávy Příklad: PostMessage(FindWindow(Nil,'Caption okna'),WM_QUIT,0,0); Pokud vąe proběhne v pořádku, fce vrátí nějaké číslo. Pokud nastala chyba návratová hodnota je 0. Zpět ------------------------------------ Jak zjistit rozliąení ? Rozliąení lze zjistit pomocí fce int GetSystemMetrics( int nIndex); ąířka := GetSystemMetrics(SM_CXSCREEN); výąka := GetSystemMetrics(SM_CYSCREEN); Zpět ------------------------------------ V jakém módu jsou nastartována Windows ? Opět zjistíme pomocí fce int GetSystemMetrics( int nIndex ); mod : = GetSystemMetrics(SM_CLEANBOOT); návratové hodnoty - 0 - Normal boot 1 - Fail-safe boot 2 - Fail-safe with network boot Zpět ------------------------------------ Jak vytvořit skrytou obrazovku (okno About) ? Přidejte do programu daląí formulář. Na formulář umístěte komponentu PaintBox, který překryjte komponentou Panel. Vyberte Panel a přiřaďte mu událost OnMouseDown. Pak můľe kód vypadat takto: procedure TForm3.SkrytaObrazovka(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i, cas: integer; begin {Uľivatel musí zmáčknout tato tlačítka:} if (Button = mbRight) and (ssShift in Shift) and (ssCtrl in Shift) then begin Panel1.Visible := False; // Zneviditelní komponentu Panel for I := 0 to 310 do // Cyklus, který bude vypisovat text do komponenty PaintBox with PaintBox1.Canvas do begin TextOut (10, 100-I, 'Název programu'); TextOut (10, 150-I, ' '); TextOut (10, 180-I, 'Sdělení '); TextOut (10, 210-I, 'Autor programu'); TextOut (10, 240-I, ' '); TextOut (10, 280-I, 'Verze '); TextOut (10, 310-I, ' '); Application.ProcessMessages; for cas:= 1 to 5000000 do // Časová mezera výpisu řádků end; Panel1.Visible := True; // Zviditelní Panel end; end; Daląí moľností je pouľití systémového okna About. ShellAbout (Handle, 'Název titulku okna About#sdělení','Daląí text', 0 ); U této moľnosti se vąak před sdělením objeví jméno Microsoft, coľ zajisté není příjemné, hlavně pro odpůrce této firmy :-) Zpět ------------------------------------ Jak zvětąit okno přehrávaného videa ? Mějme komponentu MediaPlayer pomocí níľ chceme přehrát video o rozliąení menąí neľ je rozliąení obrazovky. Film budeme přehrávat třeba na komponentu Panel. Panel zarovnáme na celou plochu formuláře. U vlastnosti Display komponenty MediaPlayer nastavíme Panel (zobrazení filmu na panel). Pokud změníme velikost formuláře (třeba ho maximalizujeme), zůstane film přehráván v původním malém okně. Abychom dosáhli zvětąení okna filmu, přidáme do programu událost OnResize u formuláře a pouľijeme tento kód: MediaPlayer1.DisplayRect := ClientRect; Zpět ------------------------------------ Jak změnit velikost obrázku při změně velikosti komponenty Image ? Pokud chcete zobrazit velký obrázek do menąí komponenty Image nastavte její vlastnost Stretch na True. Pomocí této vlastnosti lze vytvořit náhled obrázku. Zpět ------------------------------------
1) Přidejte do USES unitu ShellApi 2) ShellExecute(0,'open',Pchar('www.seznam.cz'),nil,nil,Sw_ShowNormal) 3) Tato funkce vrati číslo, pokud je číslo menší než 35 tak došlo k chybě
var MyForm: tForm; begin MyForm := TForm.Create(form1); With MyForm do begin Top := 100; Left := 100; Width := 320; Height := 200; Name := 'My form' Caption := 'Novej Form' show; end; end; ps. Pokud chcete vytvořit více formů tak použijte např. pole komponent viz tip 11.
// pokud TShape není na formu již použita, musí se předem zapsat do USES var a : Array[1..30] of Tshape; // Deklarace pole [1..30] Shapů, práce s tímto, j e stejná jako s jakýmkoliv polem... i: integer; begin for i := 1 to 30 do begin a[i] := Tshape.create(form1); // Vytvoří Shape, dále se na ni budete odkazovat a[i] (i := 1..30) a[i].parent := form1; // kam se má Shape vytvořit ... a[i].top := i * 4; // * a[i].left := i * 4; // * a[i].width := i * 10; // * a[i].height := i * 10; // * a[i].visible := true; // ** end; end; // * nastavení jak má Shape vypadat // ** komponenta se vytvoří neviditelná, musíte ji zviditelnit Pokud již pole s komponenty nebudete potřebovat nezapomeňte je uvolnit z paměti: for i := 1 to 30 do a[i].free;
1) Vypnout Windowsosvské klávesy + klávesové zkratky... var Dummy: Integer; begin SystemParametersInfo( SPI_SETFASTTASKSWITCH, 1, @Dummy, 0); SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @Dummy, 0); end; 1) Zapnout Windowsosvské klávesy + klávesové zkratky... var Dummy: Integer; begin SystemParametersInfo( SPI_SETFASTTASKSWITCH, 0, @Dummy, 0); SystemParametersInfo( SPI_SCREENSAVERRUNNING, 0, @Dummy, 0); end;
1) Přidejte do USES unitu : MMSystem 2) otevřít CD mechaniku : begin mciSendString('Set cdaudio door open', nil, 0, hinstance); end; 2) zavřít CD mechaniku : begin mciSendString('Set cdaudio door closed wait', nil, 0, handle); end;
Jak vytvořit průhledný form procedure TForm1.DoInvisible; var AControl : TControl; A, Margin, X, Y, CtlX, CtlY : Integer; begin Margin := ( Width - ClientWidth ) div 2; FullRgn := CreateRectRgn(0, 0, Width, Height); X := Margin; Y := Height - ClientHeight - Margin; ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight ); CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF ); for A := 0 to ControlCount - 1 do begin AControl := Controls[A]; if ( AControl is TWinControl ) or ( AControl is TGraphicControl ) then with AControl do begin if Visible then begin CtlX := X + Left; CtlY := Y + Top; CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height ); CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR ); end; end; end; SetWindowRgn(Handle, FullRgn, TRUE); end; Jak vrátit původní nastavení: procedure TForm1.DoVisible; begin FullRgn := CreateRectRgn(0, 0, Width, Height); CombineRgn(FullRgn, FullRgn, FullRgn, RGN_COPY); SetWindowRgn(Handle, FullRgn, TRUE); end;
var pozice: Tpoint; dwExtraInfo,dwData: cardinal; begin GetCursorPos(pozice); // zjisti pozici kurzoru mouse_event(MOUSEEVENTF_LEFTDOWN,pozice.x,pozice.y,dwData,dwExtraInfo); // posle mouse down mouse_event(MOUSEEVENTF_LEFTUP,pozice.x,pozice.y,dwData,dwExtraInfo); //posle mouse up end;
var dwExtraInfo: Dword; begin keybd_event(13,13,KEYEVENTF_EXTENDEDKEY,dwExtraInfo); //odesle stisk entru end;
var a: DWord; begin a := GetTickCount; // zjití jak douho běží windows ShowMessage('Windows běží již: ' + intToStr(a) + ' milisekund'); end; poznámka: Každou milisekundu se tento čas zvýší o 1, proměná DWORD je v rozsahu 0 až 4294967295 (232-1). To znamená pokud by systém Windows běžel bez restaru 49,7 dne tak se proměná vynuluje (dle Apihelpu), ale co na to běh systému ??? To se asi nikdo nedozví, protože tak dlouho bez restartu nikdo nevydří ;-)
var a : string; begin a := Application.ExeName; // cesta k vasi aplikaci ShowMessage(ExtractFilePath(a)); // zobrazí cestu bez jména souboru ShowMessage(ExtractFileName(a)); // zobrazi jeno souboru end;
Tento příklad si ukážeme na komponentě TPanel, ale můžeme ji použít i na TForm, TButton, TListBox .... adt Jedna z mála komponent na kterou to nelze použít je TImage, pokud by tento problém nekdo vyřešil, prossíím ať mi to zašle na mail 1) Nastavte constantu const kSC_DragMove = $F012 ; 2) Do procetury Panel1.DoMouseDown zapište následující text begin ReleaseCapture(); // obnoví windowsovský 'mouse input procesing' Panel1.Perform(WM_SYSCOMMAND, kSC_DragMove, 0); //přesune panel end;
1) deklarujte proměnné : var DesktopBitmap: Tbitmap; DC: HDC; DesktopWnd: HWND; 2) zapište tento kod : DesktopBitmap := TBitmap.Create; //vytvoří DesktopBitmap jako Tbitmap DesktopBitmap.Width := Screen.Width; // nastaví šířku bitmapy na šířku screenu DesktopBitmap.Height := Screen.Height; // nastaví výšku bitmapy na výšku screenu DesktopWnd := GetDesktopWindow; // zjiti wokno plochy DC := GetWindowDC(DesktopWnd); // zjiti handle wokna plochy BitBlt(DesktopBitmap.Canvas.Handle,0,0,Screen.Width,Screen.Height, GetDC(GetDesktopWindow),0,0,SrcCopy); // zkopíruje obsah screenu pomocí WinApi funkce Bitblt do DesktopBitmap ReleaseDC(DesktopWnd, DC); // uvolni DC
1) Do uses přidejte unitu: IniFiles 2) Zápis do INI souboru var ini: TiniFile; begin ini := TIniFile.Create('c:\pokus.ini'); // otevre a:\pokus.ini ini.WriteString('nadpis','text','Ahoj lidi'); // zapise string ini.WriteInteger('nadpis','pocet',50); // zapise integer ini.WriteBool('nadpis','zobrazit',true); // zapise boolean ini.Free; // uvolni ini z pameti end; 3) Čtení z INI souboru var ini: TIniFile; kolik : Integer; znovu: boolean; begin ini := TIniFile.Create('c:\pokus.ini'); // otevre a:\pokus.ini Button2.caption := ini.ReadString('nadpis','text','error'); // cte string kolik := ini.ReadInteger('nadpis','pocet',0); // cte integer znovu := ini.ReadBool('nadpis','zobrazit',true); // cte boolean ini.Free; // uvolni ini z pameti end; 'error' - Defaultní hodnota, pokud dojde k chybě
1) Do uses přidejte unitu: Registry 2) Zápis do Registru var reg: TRegistry; begin reg := TRegistry.Create; // vytvori reg reg.RootKey := HKEY_CURRENT_USER; // korenovy klic reg.OpenKey('\software\pokus\',true); //otevre klic reg.WriteString('cti','Toto je pokusnej string'); // zapise string reg.CloseKey; //zavre klic reg.Free; // uvolni reg end; 3) Čtení z Registru var reg: TRegistry; begin reg := TRegistry.Create; // vytvori reg reg.RootKey := HKEY_CURRENT_USER; // korenovy klic reg.OpenKey('\software\pokus\',true); //otevre klic ShowMessage(reg.ReadString('cti')); // precte string reg.CloseKey; //zavre klic reg.Free; // uvolni reg end; 1) jak zobrazit ovládací panely - WinExec('rundll32 shell32.dll,Control_RunDLL',SW_SHOW); 2) jak zobrazit Nastavení obrazovky - WinExec('rundll32 shell32.dll,Control_RunDLL desk.cpl,,0',SW_SHOW); 3) jak zobrazit Nastavení myši - WinExec('rundll32 shell32.dll,Control_RunDLL main.cpl,,1',SW_SHOW); 4) jak zobrazit Nastavení multimedii - WinExec('rundll32 shell32.dll,Control_RunDLL MMSys.cpl,,0',SW_SHOW); 5) jak zobrazit Nastavení datumu - WinExec('rundll32 shell32.dll,Control_RunDLL TimeDate.cpl,,0',SW_SHOW); 6) jak zobrazit Nastavení plochy - WinExec('rundll32 shell32.dll,Control_RunDLL Themes.cpl,,0',SW_SHOW); 7) jak zobrazit Nastavení systému - WinExec('rundll32 shell32.dll,Control_RunDLL SysDm.cpl,,0',SW_SHOW); 8) jak zobrazit Nastavení power - WinExec('rundll32 shell32.dll,Control_RunDLL PowerCfg.cpl,,0',SW_SHOW); 9) jak zobrazit Nastavení síť - WinExec('rundll32 shell32.dll,Control_RunDLL NETcpl.cpl,,0',SW_SHOW); 10) jak zobrazit Místní nastavení - WinExec('rundll32 shell32.dll,Control_RunDLL Intl.cpl,,0',SW_SHOW); 11) jak zobrazit Nastavení internet - WinExec('rundll32 shell32.dll,Control_RunDLL InetCpl.cpl,,0',SW_SHOW); 12) jak zobrazit Add / Remove programs - WinExec('rundll32 shell32.dll,Control_RunDLL AppWiz.cpl,,0',SW_SHOW); Číslo aktivní karty v spuštěném dialogu
System posílá oknu message OnMouseDown, OnMouseMove a OnMouseUp pouze pokud je kurzor myši na oknem. Pokud "Uvězníte myš" bude posílat message i pokud je mimo okno. 1) Uvěznit myš - SetCapture(hwnd) SetCapture(form1.handle); //system bude zasilat mouse message i pokud je mys mimo form1 2) Osvobodit myš - ReleaseCapture ReleaseCapture; //system uvloni mys
Na co je to dobre ??? Představte si že Váš program má nakreslit obdélník tažením myši, kreslit začne procedura onMouseDown pote to kresli procedura OnMouseMove a OnMouseUp to zakonci. Vše je v pořádku pokud se nazajede kurzorem za okraj okna. Pokud by jste opusli kurzorem okno tak by Windows již nazaslali OnMouseUp a obdelnik by se tudiz neukončil a proto můžeme uvěznit myš.
1) Do uses přidejte unitu: Windows // pokud tam již není 2) Zapište tento text begin SetSystemPowerState(true,true); end; poznámka: Tato Api funkce fuguje pokud Váš počítač podporuje SUSPEND mód, pokud ne ,tak funkce vrátí návratovou hodnotu - 0
1) Do uses přidejte unitu: Windows // pokud tam již není 2) Jak schovat aplikaci begin ShowWindow(Application.Handle, SW_HIDE); //schová aplikaci end; 3) Jak zobrazit aplikaci begin ShowWindow(Application.Handle, SW_SHOW); //zobrazí aplikaci end;
1) Jak schovat TaskBar begin ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_HIDE); //schová TaskBar end; 3) Jak zobrazit TaskBar begin ShowWindow(FindWindow('Shell_TrayWnd', nil), SW_SHOW); //zobrazí aplikaci end;
1) Parametry var a: string; begin a := UpperCase(ParamStr(1)); // zjsiti prvni parametr ShowMessage(a); // zobrazi prvni parametr end; Poznámky: (1) - číslo parametru UpperCase = vrátí maximalni hodnotu u znaku např "a" vrátí "A" Užitečné pro porovnání dvou stringů
1) Porovnání dvou stringů (na form dáme dvě komponety typu Tedit) var text1,text2: String; begin Text1 := AnsiUpperCase(Edit1.text); // Vrati maximalni hodnotu znaku Text2 := AnsiUpperCase(Edit2.text); If Text1 = Text2 then ShowMessage('Ok'); // Porovna oba stringy end; Poznámky: AnsiUpperCase = vrátí maximalni hodnotu u znaku např "a" vrátí "A" UpperCase = provádí to samé ale nepodporuje české znaky.
1) Jakk zjistit pozici kurzoru var pozice: Tpoint; begin GetCursorPos(pozice); // zjití pozici kurzoru a uloží do proměnné POZICE (která je TPoint) end; 2) Jak nastavit pozici kurzoru (předpokládejme, že máme uloženou pozici v proměnné POZICE, která je TPoint) begin SetCursorPos(pozice.x + 100,pozice.y + 100); // nastaví pozici kurzoru na POZICE.X + 100 a POZICE.Y + 100 end;
Jak vybrat daší komponentu : 1) Seřaďte si komponenty na formu pomocí Tab control : 2) Do jedné komponenty napište do procedury OnKeyPress: begin if key = chr(13) then // pokud se stiskne Enter SelectNext( ActiveControl as TWinControl, True, True ); // vybere dalsi komponentu end; 3) Všem komponentám mezi kterými má focus skákat nastavte společnou proceduru OnKeyPress: Jak vybrat předchozí komponentu : 1) Seřaďte si komponenty na formu pomocí Tab control : 2) Do jedné komponenty napište do procedury OnKeyPress: begin if key = chr(13) then // pokud se stiskne Enter SelectNext( ActiveControl as TWinControl, False, True ); // vybere predchozi komponentu end; 3) Všem komponentám mezi kterými má focus skákat nastavte společnou proceduru OnKeyPress: Poznámky: Pořadí komponent nastavíte, pokud na formu kliknete pravým tlačítkem a vyberete položku tab control
1) Jak skrýt kurzor begin ShowCursor(False); //skryje kurzor end; 2) Jak zobrazit kurzor begin ShowCursor(True); // zobrazí kurzor end;
1) Jak vypnout počítač var a : cardinal; begin ExitWindowsEx(EWX_Force,a); // potlačí hlášky systému ExitWindowsEx(EWX_SHUTDOWN,a); // vypnutí počítače end; 2) Jak restarovat počítač var a : cardinal; begin ExitWindowsEx(EWX_Force,a); // potlačí hlášky systému ExitWindowsEx(EWX_REBOOT,a); // restart počítače end;
1) Jak vytvořit kulatý form var R : HRgn; begin form1.width := 200; // nastaví šířku formu na 200 form1.height := form1.width; // nastavení čtvercového formu R := CreateEllipticRgn(0,0,width,height); // nastaví velikost elipsy SetWindowRgn(Handle,R,True); // aplikuje elipsu na form end;
1) Přidejte do USES : Jpeg 2) zapište tento kod: var MyJPEG : TJPEGImage; // cílový soubor MyBMP : TBitmap; // zdrojový soubor begin { Převeď BMP na JPEG } MyBMP := TBitmap.Create; // vytvoří tBitmap MyBMP.LoadFromFile('YourBmpHere.BMP'); // otevře bitmapu MyJPEG := TJPEGImage.Create; // vytvoří tJepegImage MyJPEG.Assign(MyBMP); // připojí MyBmp k MyJpg MyJPEG.SaveToFile('YourJpegHere.JPEG'); // uloží jepeg MyBitmap.free; // uvolní MyBmp z paměti MyJpeg.free; // uvolní MyJpg z paměti end;
1) Přidejte do USES : Jpeg 2) zapište tento kod: var MyJPEG : TJPEGImage; // cílový soubor MyBMP : TBitmap; // zdrojový soubor begin { Převeď Jpeg na Bmp } MyJPEG := TJPEGImage.Create; // vytvoří tJepegImage MyJPEG.LoadFromFile('YourJpegHere.JPEG'); // otevře Jpeg MyBMP := TBitmap.Create; // vytvoří tBitmap MyBMP.Width := MyJPEG.Width; // nastaví šířku MyBMP.Height := MyJPEG.Height; // nastaví výšku MyBMP.Canvas.Draw(0,0,MyJPEG); // přenese MyJEPEG na canvas MyBMP MyBMP.SaveToFile('YourBmpHere.BMP'); // uloží Bitmapu MyBitmap.free; // uvolní MyBmp z paměti MyJpeg.free; // uvolní MyJpeg z paměti end;
1) Přidejte do USES : MMSystem 2) zapište tento kod: begin PlaySound(PChar('c:\budik.wav'), 0, SND_FILENAME + SND_ASYNC); //přehraje c:\budik.wav end;
|
Mapa webu
O programovaní
Joke Master
|
V prípade návrhov alebo kritiky prosím kontaktujte webmastra (joke@szm.sk) Optimalizované pre Internet Explorer 5 a vyššie pri rozlíšení 800x600 Posledná aktualizácia: 03.03.2003 |