Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi MessageBox mit Icon in der Titelzeile (https://www.delphipraxis.net/58045-messagebox-mit-icon-der-titelzeile.html)

Baeuerle 30. Nov 2005 14:26


MessageBox mit Icon in der Titelzeile
 
Hallo,

wie bekomme ich bei einer
Delphi-Quellcode:
MessageBox(0,PChar(e.Message),PChar('Titelzeile'),MB_OK or MB_ICONERROR);
ein Icon in die TITELZEILE ???

Danke im vorraus

Baeuerle

P.S.: Muss doch über das Handle des Fensters gehen? Oder??

Luckie 30. Nov 2005 14:45

Re: MessageBox mit Icon in der Titelzeile
 
Die Messagebox hat kein Icon in der Titelzeile. Man könnte zwar eins mit WM_SETICON reinsetzten, wird aber sehr umständlich, da du ständig pürfen musst, ob eine Messagebox von deinem Programm angezeigt wird. Eine Alternative wäre entweder der MesaageDlg aus der VCL oder ein eigene Form, die du modal anzeigst.

PS: Ansatt null übergib besser das Handle des aufrufenden fensters, sonst gehört die Messagebox zu keinem Fenster und sie kann im Hintergrund verschwinden.

Baeuerle 30. Nov 2005 15:31

Re: MessageBox mit Icon in der Titelzeile
 
Icon wird jetzt gesetzt aber die Titelzeile wird überschreiben !!

anstatt "Fehler" wird nur "hler" angezeigt!!

Wo liegt der Fehler?

Delphi-Quellcode:
.
.
.
Timer1.Enabled:=true;
MessageBox(0,PChar(e.Message),PChar('Fehler'),MB_OK or MB_ICONERROR);
.
.
.

procedure TtfConfig.Timer1Timer(Sender: TObject);
var hndl: Integer;
begin
Timer1.Enabled:=False;
hndl:=FindWindow(nil,'Fehler');
if hndl<>0 then
 begin
 SetForegroundWindow(hndl);
 SendMessage(hndl,WM_SETICON,ICON_SMALL,Application.Icon.Handle);
 end;
end;

Luckie 30. Nov 2005 15:35

Re: MessageBox mit Icon in der Titelzeile
 
Genau das meinte ich. Du hast jetzt ständig einen Timer laufen, nur um deine Messagebox mit einem Icon zu versehen. Das steht für mich in keinem Verhältnis.

Baeuerle 30. Nov 2005 15:38

Re: MessageBox mit Icon in der Titelzeile
 
nein ist bei mir nur einmalig da das Program nach dieser Meldung beendet wird !

Delphi-Quellcode:
Application.terminate
Aber sag mir doch bitte warum die Titelzeile jetzt nur noch "hler" heisst und nicht "Fehler" wie kann ich die Titelzeile mit einer Botschaft neu setzen???

Danke

Baeuerle 30. Nov 2005 15:41

Re: MessageBox mit Icon in der Titelzeile
 
Habs gefunden danke

Delphi-Quellcode:
SendMessage(hndl,WM_SETTEXT,0,Integer(PChar('Fehler')));


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz