Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Delphi7] Showmessage dialog popup aanpassen

Pagina: 1
Acties:

  • DaFreakda
  • Registratie: September 2000
  • Laatst online: 02-11-2022
L.S.,

ik heb mijn gehele programma in Delphi met skins aangepast en opgeleukt, alleen krijg ik het niet voor elkaar om de popup die verschijnt bij "ShowMessage(' blablabla'); te veranderen.

Is het mogelijk in Delphi de standaard showmessage dialog form te openen ofzo, zodat ik daarin de layout kan wijzigen? Ik heb in de Delphi directory al gezocht op files maar ben vooralsnog niet de juiste tegengekomen.

Via google lukte het mij niet een oplossing te vinden, misschien dat hier iemand een idee heeft doe deze showmessage popup aan te passen is?

Verwijderd

Ipv ShowMessage MessageDlg gebruiken, dat is een normaal Delphi form die volledig is aan te passen.

  • DaFreakda
  • Registratie: September 2000
  • Laatst online: 02-11-2022
function MessageDlg ( const Message : string; DialogType : TMsgDlgType; Buttons : TMsgDlgButtons; HelpContext : Longint ) : Integer;

Zou je dat kort willen uitleggen, hoe ik dit message form in delphi open? Want ik kan wel de buttons veranderen etc. maar ik kan het MessageDlg form zelf niet openen in Delphi om de layout te wijzigen.

  • Speed24
  • Registratie: Augustus 1999
  • Niet online
DaFreakda schreef op woensdag 24 oktober 2007 @ 14:10:
function MessageDlg ( const Message : string; DialogType : TMsgDlgType; Buttons : TMsgDlgButtons; HelpContext : Longint ) : Integer;

Zou je dat kort willen uitleggen, hoe ik dit message form in delphi open? Want ik kan wel de buttons veranderen etc. maar ik kan het MessageDlg form zelf niet openen in Delphi om de layout te wijzigen.
MessageDLG is alleen om meer knopjes en tekst er op te krijgen, layout en stijl aanpassen gaat niet lukken.

Maak dan gewoon een eigen form, die toon je in plaats van de standaard showmessage?
Dat is toch geen probleem?

  • DaFreakda
  • Registratie: September 2000
  • Laatst online: 02-11-2022
Mijn eigen form maken... Hmmm dat is inderdaad een oplossing die ik helemaal vergeten ben 8)7

Het leek me eenvoudig om een standaard form aan te passen, maar een zelfgemaakt form werkt natuurlijk ook prima :z

Dit moet wel lukken nu, Thx!

Verwijderd

DaFreakda schreef op woensdag 24 oktober 2007 @ 14:10:
function MessageDlg ( const Message : string; DialogType : TMsgDlgType; Buttons : TMsgDlgButtons; HelpContext : Longint ) : Integer;

Zou je dat kort willen uitleggen, hoe ik dit message form in delphi open? Want ik kan wel de buttons veranderen etc. maar ik kan het MessageDlg form zelf niet openen in Delphi om de layout te wijzigen.
Sorry, MessageDlg is idd 1 laagje te hoog. Je kunt CreateMessageDialog gebruiken (dat doet de MessageDlg functie ook), deze geeft een TForm als result terug waar je alles aan kunt manipuleren wat je wilt.

Voorbeeldje:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
function MyMessageDlg(const Msg: string; DlgType: TMsgDlgType;
                      Buttons: TMsgDlgButtons; HelpCtx: LongInt;
                      const ACaption: string = '';
                      const BtnDefault: string = '';
                      const BtnCancel: string = '';
                      Image: TImage = nil; ImageList: TImageList = nil): word;
var
  i, j: integer;
  Dlg: TForm;
begin
  Dlg := CreateMessageDialog(Msg, DlgType, Buttons);
  with Dlg do try
    HelpContext := HelpCtx;
    Position := poMainFormCenter;
    if ACaption <> '' then Caption := ACaption;
    for i := 0 to ComponentCount-1 do begin
      if Components[i] is TLabel then with TLabel(Components[i]).Font do

        case DlgType of
          mtWarning,
          mtError:        begin
                            Color := clMaroon;
                            Beep;
                          end;
          mtInformation,
          mtConfirmation: Color := clNavy;
        end;

      if Components[i] is TImage then begin
         if Image <> nil then
           TImage(Components[i]).Picture := Image.Picture
         else if ImageList <> nil then
           // order: mtWarning, mtError, mtInformation, mtConfirmation, mtCustom
           // the images must be 32 x 32 pixels large
           ImageList.Draw(TImage(Components[i]).Canvas, 0, 0, Ord(DlgType));
      end;

      if Components[i] is TButton then begin

        if (BtnDefault > '') and (TButton(Components[i]).Name = BtnDefault) then begin
          // reset other buttons
          for j := 0 to ComponentCount-1 do
            if Components[j] is TButton then
              TButton(Components[j]).Default := False;
          // set default
          TButton(Components[i]).Default := True;
          Dlg.ActiveControl := TButton(Components[i]);
        end;

        if (BtnCancel > '') and (TButton(Components[i]).Name = BtnCancel) then begin
          // reset other buttons
          for j := 0 to ComponentCount-1 do
            if Components[j] is TButton then
              TButton(Components[j]).Cancel := False;
          // set cancel
          TButton(Components[i]).Cancel := True;
        end;

      end;
    end;
    Result := ShowModal;
  finally
    Release;
  end;
end;

edit:
voorbeeld toegevoegd

[ Voor 64% gewijzigd door Verwijderd op 24-10-2007 15:29 ]

Pagina: 1