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 [gelöst] MessageDlg Bilder in noVCL-Dialog (https://www.delphipraxis.net/141111-%5Bgeloest%5D-messagedlg-bilder-novcl-dialog.html)

Schwedenbitter 2. Okt 2009 22:55


[gelöst] MessageDlg Bilder in noVCL-Dialog
 
Hallo,

ich habe hier ein Programm, was bis auf 2 Dialog-Boxen keine VCL-Units eingebunden hat. Ob es damit per Definition nonVCL ist, weiß ich nicht. Es ist aber ohne die Dialoge schön klein (45 KB). Mit der Unit Dialogs, die Forms mitschleift, sind es dann gepackt 170 KB. Zum Erstellen/Bearbeiten der Dialoge benutze ich ResEdit.

Nun stört mich aber, dass die Dialoge nicht genauso aussehen, wie die von MessageDlg und insbesondere, dass ich nicht weiß, wo ich die Grafiken (Sprechblase mit Fragezeichen bie mtConfirmation; Gelbes Dreieck mit Ausrufezeichen bei mtWarning). Das Kreuz auf rotem Kreis bei mtError ist als "stop_??_h.bmp" bei \Borland Shared\Images\GlyFX\Icons mit dabei.

Wo finde ich das bzw. wie kann ich da rankommen?

Gruß, Alex

turboPASCAL 2. Okt 2009 23:14

Re: MessageDlg Bilder in noVCL-Dialog
 
Wie wäre es mit einer Delphi-Referenz durchsuchenMessageBox ?

Schwedenbitter 3. Okt 2009 00:09

Re: MessageDlg Bilder in noVCL-Dialog
 
Zitat:

Zitat von turboPASCAL
Wie wäre es mit einer Delphi-Referenz durchsuchenMessageBox ?

Gute Idee. Der Dialog sieht schon Mal besser aus! :cheers:
Das hätte ich durch langesprobieren nach dieser Anleitung evtl. auch so hinbekommen. Es geht mir hauptsächlich um die schönen Bildchen. Die sind bei MessageBox leider auch nicht dabei.

Gruß, Alex

Luckie 3. Okt 2009 01:19

Re: MessageDlg Bilder in noVCL-Dialog
 
Nö, die sind alle dabei. Siehe Hilfe MSDN-Library durchsuchenMessageBox.
Code:
To display an icon in the message box, specify one of the following values.

MB_ICONEXCLAMATION
    An exclamation-point icon appears in the message box.
MB_ICONWARNING
    An exclamation-point icon appears in the message box.
MB_ICONINFORMATION
    An icon consisting of a lowercase letter i in a circle appears in the message box.
MB_ICONASTERISK
    An icon consisting of a lowercase letter i in a circle appears in the message box.
MB_ICONQUESTION
    A question-mark icon appears in the message box. The question-mark message icon is no longer recommended because it does not clearly represent a specific type of message and because the phrasing of a message as a question could apply to any message type. In addition, users can confuse the message symbol question mark with Help information. Therefore, do not use this question mark message symbol in your message boxes. The system continues to support its inclusion only for backward compatibility.
MB_ICONSTOP
    A stop-sign icon appears in the message box.

Schwedenbitter 3. Okt 2009 09:03

Re: MessageDlg Bilder in noVCL-Dialog
 
Zitat:

Zitat von Luckie
Nö, die sind alle dabei. Siehe Hilfe MSDN-Library durchsuchenMessageBox.

Du hast - wie immer - Recht! Das sind sie tatsächlich.

Ich wäre ggf. selbst drauf gekommen, wenn davon auch nur ein Sterbenswörtchen in der Hilfe bzw. in diesen Hints von Delphi gestanden häte, die immer kommen, wenn man nach einer Function die Klammer auf setzt. Das zeigt mir, dass ich nun wirklich immer bei msdn nachsehen muss. Ich hatte ein ähnliches Erlebnis zuletzt mit CopyFile. Meine Dateien wurden nicht kopiert. Ich war am Verzweifeln, weil ich doch OverWrite auf True gesetzt hatte. Bei msdn wurde erklärt, der letzte Bool-Wert wäre FailIfExists und musst dann natürlich False sein ...

Für alle übrigen und auch zu meiner Erinnerung: Die Icons werden über den leztzten Wert uType (mit)bestimmt und in der Form
Delphi-Quellcode:
MB_??? Or MB_MessageType
gesetzt.

Danke turboPASCAL und Luckie!

Gruß, Alex

Luckie 3. Okt 2009 13:05

Re: [gelöst] MessageDlg Bilder in noVCL-Dialog
 
Ergänzung:
Mit der API-Funktion MSDN-Library durchsuchenMessageBoxIndirect kannst du dein eigens Icon aus einer Ressource darstellen:
Delphi-Quellcode:
function MsgBoxIndirect(Text, Caption: string; Flags, IDIcon: DWORD): LRESULT;
var
  MsgInfo          : TMsgBoxParams;
begin
  ZeroMemory(@MsgInfo, sizeof(TMsgBoxParams));
  MsgInfo.cbSize := SizeOf(TMsgBoxParams);
  MsgInfo.hwndOwner := FHandle;
  MsgInfo.hInstance := HInstance
  MsgInfo.lpszText := @Text[1];
  MsgInfo.lpszCaption := @Caption[1];
  MsgInfo.dwStyle := MB_USERICON or Flags;
  MsgInfo.lpszIcon := MAKEINTRESOURCE(IDICON);
  result := MessageBoxIndirect(@MsgInfo);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 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