|
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 |