AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi MessageDlg schliessen durch X Button verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

MessageDlg schliessen durch X Button verhindern

Ein Thema von nachtstreuner60 · begonnen am 12. Mär 2008 · letzter Beitrag vom 12. Mär 2008
Antwort Antwort
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#1

MessageDlg schliessen durch X Button verhindern

  Alt 12. Mär 2008, 21:18
Einen wunderschönen Abend zusammen,

vielleicht kann mir bei meinem Problemchen jemand weiterhelfen.

Ich möchte verhindern, das ein MessageDlg-Fenster durch den Schliessen-Button(rechts oben) geschlossen werden kann, nur durch
anklicken des OK-Buttons soll dies möglich sein.

Wie gehe ich hier am besten vor ?


mfg
nachtstreuner60
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: MessageDlg schliessen durch X Button verhindern

  Alt 12. Mär 2008, 22:17
Hallo,

eine Möglichkeit wäre:
Delphi-Quellcode:
function MessageDlgEx(Msg: AnsiString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
var
  hMenu : THandle;
begin
  with CreateMessageDialog(Msg, DlgType, Buttons) do
  try
  hMenu := GetSystemMenu(Handle, False);
  if hMenu <> 0 then
    EnableMenuItem(hMenu, SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
    Result := ShowModal;
  finally
    Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MessageDlgEx('Test', mtConfirmation, mbYesNoCancel, 0);
end;
EDIT: Oder einfach die Eigenschaft BorderIcons abändern:
Delphi-Quellcode:
function MessageDlgEx(Msg: AnsiString; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
begin
  with CreateMessageDialog(Msg, DlgType, Buttons) do
  try
    borderIcons:= [];
    Result := ShowModal;
  finally
    Free;
  end;
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#3

Re: MessageDlg schliessen durch X Button verhindern

  Alt 12. Mär 2008, 22:26
Hallo bitsetter

vielen Dank für diesen Tip.

Ich habe vergessen, zu erwähnen, daß ich eine Komponente aus den freien LMD-Tools benutze, dort kann ich den MessageDLg
einfärben.

In Deinem Tip wird, wenn ich nicht falsch liege eine Eigener MessageDlg erzeugt.

Da ich nicht weiß, wie man einen MessageDLg einfärbt, habe ich auf diese Komponente zurückgegriffen.

Wie gehe ich nun dieses Problem an ?

Hier der Quellcode
Delphi-Quellcode:
IF lmdMessage.Execute('Unquittierte Datensätze gefunden !',' ACHTUNG !!! Es wurden noch '+
    'unquittierte Datensätze gefunden !'+#13#10+
    ' Diese sind älter als zwei Stunden und sollten schnellstmöglich quittiert'+#13#10+
    ' werden ! Diese Meldung erscheint alle '+IntToStr( dZyklus div 60000 ) +' min'+#10#13#10#13+
    ' Unten in der Fusszeile sehen Sie im gelben Balken einen weiteren Hinweis hierzu !'
    ,[0], [],-1,-1,-1,-1,0) = mrOK then begin
    sTEXT := 'MELDUNG an : '+dUSER+' über unquittierte Datensätze : Anz.: '+ inttostr(Anzahl)+' Sätze !';
    writelog;
    tZyklus.Enabled := true;
  end;
mfg
nachtstreuner60
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#4

Re: MessageDlg schliessen durch X Button verhindern

  Alt 12. Mär 2008, 22:34
Wenn der LMD-MessageDlg ein Handle hat (geh ich mal davon aus), müsstest Du es ja irgendwie ermitteln können. Danach ist es nur noch eine kleine Änderung in bitsetters Code, dann sollte es IMO gehen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: MessageDlg schliessen durch X Button verhindern

  Alt 12. Mär 2008, 22:53
Zitat von nachtstreuner60:
Da ich nicht weiß, wie man einen MessageDLg einfärbt, habe ich auf diese Komponente zurückgegriffen.
Falls du nur die Farbe ändern möchtest, dann ändere doch die Eigenschaft Color ab.
Delphi-Quellcode:
  
...
with CreateMessageDialog(Msg, DlgType, Buttons) do
  try
    Color:= clRed;
    borderIcons:= [];
...
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#6

Re: MessageDlg schliessen durch X Button verhindern

  Alt 12. Mär 2008, 22:57
Halo deddyH

danke für den Tip !

Werd mich mal dran machen, das Handle rauszufinden.

Hab sowas zwar noch nie gemacht, aber ich denke mal, das ich hier in dem tollen Forum über die Suchfunktion was finden werde.
htstreuner60
mfg
nac
  Mit Zitat antworten Zitat
nachtstreuner60

Registriert seit: 15. Jan 2007
Ort: Eisenach
54 Beiträge
 
Delphi 7 Professional
 
#7

Re: MessageDlg schliessen durch X Button verhindern

  Alt 12. Mär 2008, 23:00
Danke Bitsetter,

werde auch deinen nachträglichen TIP ausprobieren.

Echt fun, dieses Forum

Gruß nachtstreuner60
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 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