![]() |
MessageDlg mit eigenen Icons
Hallo Jungs,
ich hab folgende Frage: Wie kann man (falls es geht) in einem MessageDlg eigene Icons einbringen? Ausser den Windows-Icons (Question, Information, Error, Warning, ...) mfg Helmi :thuimb: |
Re: MessageDlg mit eigenen Icons
Guckst du in der OH bei "MessageDlg (Funktion)". Da ist ne lange Liste mit Überladungen, wobei manche die Angabe einer BitMap zulassen.
|
Re: MessageDlg mit eigenen Icons
oki danke
nur wie kann ich eine solche überladene Funktion laden? |
Re: MessageDlg mit eigenen Icons
vielleicht hilft dir die dp suche, da gabs schon ein paar threads dazu!
|
Re: MessageDlg mit eigenen Icons
Zitat:
Viele Grüße, Sebastian |
Re: MessageDlg mit eigenen Icons
Zitat:
|
Re: MessageDlg mit eigenen Icons
nein musst du nicht
|
Re: MessageDlg mit eigenen Icons
wenn ich aber eine andere funktion von MessageDlg haben will und einfach drauf los programmiere
dann erhalte ich vom Compiler folgende Fehlermeldung: Zitat:
Code:
function MessageDlg(const Msg: WideString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultBtn: TMsgDlgBtn = mbNone; Bitmap: TBitmap = nil): Integer; overload;
|
Re: MessageDlg mit eigenen Icons
Hallo Helmi,
nein, brauchst du nicht (du musst für die MessageDlg Funktionen die Unit 'Dialogs' eingebunden haben, die ist aber standardmäßig sowieso dabei). Hier ein Beispiel:
Delphi-Quellcode:
Viele Grüße, Sebastian
function Add(a:integer): integer; overload; //1. Funktion
begin result := a + 5; end; function Add(a,b:integer): integer; overload; //2. Funktion begin result := a + b; end; {...} var a,b: integer; begin a := 10; b := 20; //entweder Caption := IntToStr(Add(a)); //Hier steht 15 in der Caption, weil Funktion 1 genommen wird //oder Caption := IntToStr(Add(a,b)); //Hier steht 30 in der Caption, weil Funktion 2 genommen wird end; |
Re: MessageDlg mit eigenen Icons
Etwas langsam.. ;)
Wie rufst Du die Funktion
Delphi-Quellcode:
Denn auf?
function MessageDlg(const Msg: WideString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultBtn: TMsgDlgBtn = mbNone; Bitmap: TBitmap = nil): Integer; overload;
|
Re: MessageDlg mit eigenen Icons
mmh
ich versteh das nicht :wall: ich poste jetzt einfach mal meinen Code - ist zwar nur ein Test aber egal:
Code:
und wie ich schon mal geschrieben hab, will ich folgende MessageDlg-Funktion benutzen:
procedure TForm1.Button1Click(Sender: TObject);
var Bitmap: TBitmap; begin Bitmap := TBitmap.Create; Bitmap.LoadFromFile('e:\delphi\Icons, Bitmaps, Avi\bmp\alarm.bmp'); MessageDlg('hallo', mtCustom, [mbYes, mbNo], 0, [mbnone], Bitmap); Bitmap.Free; end;
Code:
vielleicht kann mir jemand sagen, was ich falsch mach...
function MessageDlg(const Msg: WideString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultBtn: TMsgDlgBtn = mbNone; Bitmap: TBitmap = nil): Integer; overload;
:wall: |
Re: MessageDlg mit eigenen Icons
Hmm...
Ich seh auch nicht warum der Code nicht funktioniert. Die eckigen Klammern bei mbNone müssen da nicht hin. Aber wenn man die wegmacht funktionierts immernoch nicht. Hat jemand das mal versucht? Bei mir klapps jedenfalls nicht (D6 und D7, wobei die D6-OH sowieso nur eine MessageDlg Funktion kennt). Hab auch eine von den anderen überladenen MessageDlg-Funktionen versucht, ging auch nicht. Delphi will immer nur die Parameter, die in der Standard-MessageDlg erwartet werden (Die mein D6 in der OH hat). Viele Grüße, Sebastian |
Re: MessageDlg mit eigenen Icons
Delphi-Quellcode:
alles von hand umgecastet: und siehe da: [Fehler] Unit1.pas(37): Undefinierter Bezeichner: 'mbYesNo'
procedure TForm1.Button1Click(Sender: TObject);
var Bitmap: TBitmap; begin Bitmap := TBitmap.Create; Bitmap.LoadFromFile('e:\delphi\Icons, Bitmaps, Avi\bmp\alarm.bmp'); MessageDlg(WideString('hallo'), TMsgDlgType(mtCustom), TMsgDlgButtons(mbYesNo), Longint(0), TMsgDlgBtn(mbnone), TBitmap(Bitmap)); Bitmap.Free; end; ^^ was soll das denn jetzt? |
Re: MessageDlg mit eigenen Icons
mbYes, mbNo sollte das heissen oder nicht? esgibt ja keinen YesNo-Button ;-)
|
Re: MessageDlg mit eigenen Icons
geht trotzdem nicht
|
Re: MessageDlg mit eigenen Icons
ja. muss es heißen. allerdings hat die dumme delphi-hilfe mir gesagt, dass es auch mbYesNo gibt (allerdings nur in QDialogs) ind Dialogs allein gibt es nur mbYesNoCancel
aber auch mit Korrektur klappt es nicht |
Re: MessageDlg mit eigenen Icons
ok, die schreibweise war mir unbekannt! :stupid:
|
Re: MessageDlg mit eigenen Icons
PS: hab mich vertan, siehe post oben
PS2: schaut euch mal die API-Funktion "MessageBoxIndirect" an, damit sollte es gehen |
Re: MessageDlg mit eigenen Icons
In Delphi 6 scheint es keine solche Funktion zu geben (MessageDlg mit BMP Parameter ist gemeint) und MessageBoxIndirect gibts nur für NT :gruebel:
Delphi-Quellcode:
{...}
Uses Dialogs, ExtCtrls; {...} function MessageDlgImg(const Msg: String; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; BMP32x32: TBitmap=nil; CustomTitle: String=''; HelpCtx: Integer=0): Integer; overload; function MessageDlgImg(const Msg: String; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; ImagePath: String=''; CustomTitle: String=''; HelpCtx: Integer=0): Integer; overload; implementation {...} function MessageDlgImg(const Msg: String; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; BMP32x32: TBitmap=nil; CustomTitle: String=''; HelpCtx: Integer=0): Integer; overload; var Img: TImage; begin if DlgType = mtCustom then DlgType := mtInformation; Img := nil; with CreateMessageDialog(Msg, DlgType, Buttons) do try HelpContext := HelpCtx; HelpFile := Application.HelpFile; Position := poScreenCenter; if CustomTitle <> '' then Caption := CustomTitle; if BMP32x32 <> nil then begin Img := FindComponent('Image') as TImage; if Img <> nil then begin Img.Picture.Bitmap.Assign(BMP32x32); Img.Transparent := true; end; end; Result := ShowModal; finally Free; Img := nil; end; end; function MessageDlgImg(const Msg: String; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; ImagePath: String=''; CustomTitle: String=''; HelpCtx: Integer=0): Integer; overload; var Img: TImage; begin if DlgType = mtCustom then DlgType := mtInformation; Img := nil; with CreateMessageDialog(Msg, DlgType, Buttons) do try HelpContext := HelpCtx; HelpFile := Application.HelpFile; Position := poScreenCenter; if CustomTitle <> '' then Caption := CustomTitle; if ImagePath <> '' then begin Img := FindComponent('Image') as TImage; if Img <> nil then try Img.Picture.LoadFromFile(ImagePath); Img.Transparent := true; except {tue nichts} end; end; Result := ShowModal; finally Free; Img := nil; end; end; { Beispiel } procedure TForm1.Button1Click(Sender: TObject); var BMP: TBitmap; begin MessageDlgImg('Test', mtWarning, [mbYes, mbNo], 'H:\ProjectPics\LAN.bmp', 'Guten Tag'); BMP := TBitmap.Create; try BMP.LoadFromFile('H:\ProjectPics\LAN.bmp'); MessageDlgImg('Test', mtWarning, [mbYes, mbNo], 'H:\ProjectPics\LAN.bmp', 'Guten Tag'); finally BMP.Free; end; end; {...} |
Re: MessageDlg mit eigenen Icons
Da war wohl wieder jemand zu faul für die Suche.
Genau dieses Thema hatten wir hier erst vor 2 oder 3 Wochen! ![]() |
Re: MessageDlg mit eigenen Icons
danke erstmal für die ganzen Tips...
Zitat:
nur leider heissen viele Threads immer anders, obwohl es sich oft um die gleiche Sache handelt (z. B. Message-Dialog, MessageDlg, ...)! Trotzdem vielen Dank für die Hilfe :cheers: :party: |
Re: MessageDlg mit eigenen Icons
@Robert: Ich hatte nach MessageDlg gesucht... ;)
@Dani: In Delphi 6 wird ja auch nicht behauptet, dass es verschiedene Versionen der Funktion gibt (siehe OH), aber in Delphi 7... Würd mich ja mal interessieren, warum die overloads nicht funktionieren. Hat Borland vielleicht einfach vergessen die in die Dialogs-Unit zu packen? Anders gefragt: ist es irgendjemandem mit D7 gelungen eine der überladenen MessageDlg-Funktionen aufzurufen? Viele Grüße, Sebastian |
Re: MessageDlg mit eigenen Icons
Zitat:
Gruß Stephan |
Re: MessageDlg mit eigenen Icons
Zitat:
ich schaffs selber ned :wall: |
Re: MessageDlg mit eigenen Icons
Delphi-Quellcode:
Aber irgendwie funzt das mit den Rückgabewerten nich so ganz :roll: Außerdem sieht der Dialog relativ bescheiden aus :cry:
USES
QDialogs, {...} BEGIN MessageDlg('Soll ich?', mtConfirmation, mbYesNoCancel, 0, mbNo); END; Aber immerhin kann man die überladenen Fkt. aufrunfen :tongue: Gruß Stephan |
Re: MessageDlg mit eigenen Icons
edit: stuss geschrieben
|
Re: MessageDlg mit eigenen Icons
edit: auf Stuss geantwortet :mrgreen: :zwinker:
|
Re: MessageDlg mit eigenen Icons
[ot]lol. der war ja grade mal eine minute online[/ot]
|
Re: MessageDlg mit eigenen Icons
ich hätt jetzt noch eine Frage:
also das mit den übergeordneten Funktionen aufrufen geht ja jetzt, dank Steve aber wie kann man jetzt da so ein eigenes Bitmap einbinden? |
Re: MessageDlg mit eigenen Icons
bei den beiden varianten hier kann man ein TBitmap angeben:
Delphi-Quellcode:
function MessageDlg(const Caption: WideString; const Msg: WideString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; DefaultBtn: TMsgDlgBtn = mbNone; Bitmap: TBitmap = nil): Integer; overload;
function MessageDlg(const Caption: WideString; const Msg: WideString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint; X, Y: Integer; DefaultBtn: TMsgDlgBtn = mbNone; Bitmap: TBitmap = nil): Integer; overload; |
Re: MessageDlg mit eigenen Icons
des is mir schon klar
aber wie? :-) |
Re: MessageDlg mit eigenen Icons
wie wie?
einfach ein bitmap erstellen (bm := TBitmap.Create) und z.b. per bm.LoadFromFile('file') füllen und dann da angeben. die anderen parameter wie immer angeben. |
Re: MessageDlg mit eigenen Icons
also ich hab das jetzt mal probiert
hier erst mal der Code:
Code:
aber wenn ich das ausführen will, dann sagt der Compiler zu mir:
var
Bm: TBitmap; begin Bm := TBitmap.Create; Bm.LoadFromFile('e:\delphi\Icons, Bitmaps, Avi\bmp\alarm.bmp'); MessageDlg('ficken', 'hallo', mtCustom, mbYesNo, 0, mbno, bm); Bm.Free; Zitat:
was ist verkehrt? mfg Helmi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz