U ovom prilogu prikazaćemo vam kako da promenite ikonu koja se prikazuje u MessageBox-u koristeći Windows API funkciju „MessgeBoxIndirect„. Ovu API funkciju ćemo ugraditi u proceduru nazvanu „MojMessageBox“, koja će nam omogućiti prikaz MessageBox-a sa ikonicom naše aplikacije.
procedure MojMessageBox
(Text: String);
var
MsgPars: TMsgBoxParams;
begin
with MsgPars do
begin
cbSize := SizeOf(MsgPars);
hwndOwner := Sysinit.HInstance;
hInstance := Sysinit.hInstance; //izvor
lpszText := PChar(Text); //ukoliko koristite
Delphi 1, morate koristiti StrPCopy.
lpszCaption := 'About';
dwStyle := MB_OK or MB_USERICON;
lpszIcon := 'MAINICON'; //ikona vaše
aplikacije, ugrađena u *.exe
dwContextHelpId := 0; // kontekst help
lpfnMsgBoxCallback := nil;
dwLanguageId := LANG_NEUTRAL;
end; //with
MessageBoxIndirect(MsgPars);
end;
Sada ovu proceduru možete koristiti u event handler-u, kao na primer:
procedure TForm1.Button1Click(Sender: TObject);
begin
MojMessageBox('Primer promene podrazumevane MessageBox ikone');
end;
Obratite pažnju na to, da u MojMessageBox proceduri, smo koristili sledeću deklaraciju:
hwndOwner := Sysinit.HInstance;
hInstance := Sysinit.hInstance;
Da bi izbegli moguću konfuziju u korišćenju dve hinstance varijable, koristimo *with* naredbu. Jedna varijabla je hinstance član TMsgBoxParams , a druga pripada aplikaciji koja je definisana i inicijalizovana u Sysinit unit-u. Obratite pažnju na to, da objektni Paskal nije osetljiv na veličinu slova (mala-velika: hInstance i HInstance znače isto). „lpszIcon“ član TMsgBoxParams podatka predstavlja naziv kompajlirane ikone.
Pratite Krstaricu na www.krstarica.com