Delphi – Promena ikone u MessageBox-u

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