Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Titelleiste / Rahmen der MessageDlg ausblenden (https://www.delphipraxis.net/182965-titelleiste-rahmen-der-messagedlg-ausblenden.html)

010101 30. Nov 2014 16:23

Delphi-Version: 7

Titelleiste / Rahmen der MessageDlg ausblenden
 
hallo,


weiss jemand einen code um den windowsrahmen bei der ausgabe von "MessageDlg" zu ändern bzw. wegzubekommen?

http://picload.org/image/coccwoc/rahmen.png

mfg

dGeek 30. Nov 2014 21:45

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Kann sein, dass ich Mist erzähle, aber du musst den Dialog "selber" erstellen.

Minimales Beispiel:
(das ist ein cut-out aus meiner eigenen, viel umfangreicheren Funktion. Die Funktion gibt einen Wert zurück, sodass man auf den Dialog reagieren kann)
Delphi-Quellcode:
function MsgBox(psCaption: string; psText: string; nHeigth: Integer; aMsgDlgType: TMsgDlgType; aMsgDlgBtn: TMsgDlgButtons; aMsgDlgBtnDef: TMsgDlgBtn): Integer;
var
  iModalRes: Integer;
  aMsgDialog: TForm; // vergessen hinzuzufügen
begin
  iModalRes := ID_NO;

  aMsgDialog := CreateMessageDialog(psText, aMsgDlgType, aMsgDlgBtn, aMsgDlgBtnDef);

  with aMsgDialog do
    begin
      BringToFront;
           
      Caption := psCaption;
      ClientHeight := nHeigth;
      BorderIcons := [];               // Keine Border-Icons
      BorderStyle := bsNone;           // Keine Titelleiste
      FormStyle := fsStayOnTop;

      Top := (Screen.Height div 2) - (Height div 2);
      SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
           
      iModalRes := ShowModal;

      Free;
    end;

  Result := iModalRes;
end;

// Aufruf:
case MsgBox('Caption', 'Text', 100, mtInformation, [mbYes, mbNo, mbClose], mbNo) of
  ID_YES: ;
  ID_NO: ;
  ID_CLOSE: ;
end;

010101 1. Dez 2014 09:46

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
das ist doch für die message box oder...
ich meine aber die MessageDlgPos. einfach was mit in den aufruf rein oder so. bei der form geht der windowsrahmen mit dem code weg.

http://www.delphipraxis.net/379391-post1.html


mfg

DeddyH 1. Dez 2014 10:13

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Wenn der Standard-MessageDlg so eine Option nicht bietet, muss man sich eben selbst etwas schreiben. Wie das geht, sollte der gepostete Code aufzeigen.

uligerhardt 1. Dez 2014 13:06

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Zitat:

Zitat von 010101 (Beitrag 1281697)

Leider kann ich das Bild an meinem Arbeits-PC nicht sehen, dank paranoider Filtereinstellungen in unserer Firma. Dürfte ich vorschlagen, dass du für Bilder die DP-eigene Anhang-Funktionalität nimmst. Als Bonus gibt's auch ne kleine Vorschau. :mrgreen:

DeddyH 1. Dez 2014 13:30

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bin mal so frei :mrgreen:

uligerhardt 1. Dez 2014 14:12

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Zitat:

Zitat von DeddyH (Beitrag 1281818)
Ich bin mal so frei :mrgreen:

Danke! :thumb:

dGeek 1. Dez 2014 15:05

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Zitat:

ich meine aber die MessageDlgPos. einfach was mit in den aufruf rein oder so.
Das gibt es so nicht. Wie DeddyH bereits angemerkt hat, muss man dafür den Dialog selbst erzeugen.

Mein geposteter Code zeigt wie.

010101 1. Dez 2014 15:12

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Zitat:

Zitat von dGeek (Beitrag 1281739)
Delphi-Quellcode:
function MsgBox(psCaption: string; psText: string; nHeigth: Integer; aMsgDlgType: TMsgDlgType; aMsgDlgBtn: TMsgDlgButtons; aMsgDlgBtnDef: TMsgDlgBtn): Integer;
var
  iModalRes: Integer;
begin
  iModalRes := ID_NO;

  aMsgDialog := CreateMessageDialog(psText, aMsgDlgType, aMsgDlgBtn, aMsgDlgBtnDef);

  with aMsgDialog do
    begin
      BringToFront;
           
      Caption := psCaption;
      ClientHeight := nHeigth;
      BorderIcons := [];               // Keine Border-Icons
      BorderStyle := bsNone;           // Keine Titelleiste
      FormStyle := fsStayOnTop;

      Top := (Screen.Height div 2) - (Height div 2);
      SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
           
      iModalRes := ShowModal;

      Free;
    end;

  Result := iModalRes;
end;

// Aufruf:
case MsgBox('Caption', 'Text', 100, mtInformation, [mbYes, mbNo, mbClose], mbNo) of
  ID_YES: ;
  ID_NO: ;
  ID_CLOSE: ;
end;


und wie bekomme ich den code in den aufruf von der TApplication eines buttons.

wenn das bei dir in einer leeren form geht, kannst die mir mal posten.


mfg

dGeek 1. Dez 2014 15:21

AW: Titelleiste / Rahmen der MessageDlg ausblenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Beispiel mit ausführbarer EXE im Anhang.

Um das Beispiel noch einfacher zu machen das alles noch einmal als Prozedur und nicht als Funktion.

Delphi-Quellcode:
procedure MsgBox(psCaption: string; psText: string; nHeigth: Integer; aMsgDlgType: TMsgDlgType; aMsgDlgBtn: TMsgDlgButtons; aMsgDlgBtnDef: TMsgDlgBtn);
var
  aMsgDialog: TForm; // versehentlich vergessen ..
begin
  aMsgDialog := CreateMessageDialog(psText, aMsgDlgType, aMsgDlgBtn, aMsgDlgBtnDef);

  with aMsgDialog do
    begin
      BringToFront;
           
      Caption := psCaption;
      ClientHeight := nHeigth;
      BorderIcons := []; // Keine Border-Icons
      BorderStyle := bsNone; // Keine Titelleiste
      FormStyle := fsStayOnTop;

      Top := (Screen.Height div 2) - (Height div 2);
      SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

      Free;
    end;
end;

// Aufruf:
MsgBox('Caption', 'Text', 100, mtInformation, [mbYes, mbNo, mbClose], mbNo);


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:18 Uhr.
Seite 1 von 4  1 23     Letzte »    

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