Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi MessageBox immer im Vordergrund!? (https://www.delphipraxis.net/2779-messagebox-immer-im-vordergrund.html)

fedderle 6. Feb 2003 14:53


MessageBox immer im Vordergrund!?
 
Hi Leute!

Hab ein kleines Problem! Möchte ne simple Message Box zeigen.
Hab ich zur zeit einfach so gemacht:
Code:
ShowMessaqe('text');
Möchte dieses Fenster aber immer im Vordergrund haben. Wie bekomm ich das am besten hin?

Steffen!

CalganX 6. Feb 2003 15:12

Tipp: nimm nicht ShowMessage, sondern MessageDlg. Wenn das auch nicht klappt, dann kanst du mit "CreateMessageDialog" dir einen eigenen erstellen und ihn mit ShowModal modal anzeigen. Näheres auf "Anfrage" :mrgreen:

Chris

fedderle 6. Feb 2003 15:24

Also mit MessageDlg hats nicht funktioniert. Kannst du mir deinen andren Vorschlag mal erklärn?

Steffen!

CalganX 6. Feb 2003 15:28

Delphi-Quellcode:
  with CreateMessageDialog('Text', mtConfirmation, [mbOK]) do
  begin
    ShowModal;
  end;
Was meinst du eigentlich mit "im Vordergrund" genau?

Chris

fedderle 6. Feb 2003 15:32

Zitat:

Was meinst du eigentlich mit "im Vordergrund" genau?
Also Das Problem ist ja nicht ne Message Box anzuzeigen. Das Problem ist, das diese, wenn irgendein andres Progtramm gestartet wird, von dem neu gestarteten Programm überdekct wird. Und genau das darf nicht passieren!
Die Box muss so lange im Vordergrund bleiben, bis sie mit OK bestätigt wurde.

Luckie 6. Feb 2003 18:09

Nimm die Messageboxd vonTApplication mit dem Flag: MB_SYSTEMMODAL.

fedderle 6. Feb 2003 18:58

Zitat:

Zitat von Luckie
Nimm die Messageboxd vonTApplication mit dem Flag: MB_SYSTEMMODAL.

Glaube ich bin jetzt einen Schritt weiter. Ich hab einfach mal in der Hilfe nach dem Begriff gesucht. Hab folgenden Code gefunden und in mein Programm eingebaut und ein bißchen angepasst:
Code:
with Application do
      begin
         NormalizeTopMosts;
         Messagebox(Meldung1, 'Hinweis:', [smbOK]);
         RestoreTopMosts
      end;
Damit das funktioniert, muss man die Unit "QForms" laden. Jetzt hab ich aber noch folgenden Befehl aus der Unit "ShellAPI" im Quelltext:
Code:
if FileExists('install.exe') then ShellExecute(Handle, nil, 'sibelius.exe', nil, nil, SW_SHOW)
Dieser funktionierte bevor ich "QForms" miteingebunden hatte. Jetzt bekomme ich eine Fehlermeldung:

[Fehler] Unit1.pas(40): Inkompatible Typen: 'HWND' und 'QOpenScrollViewH'

Steffen!

CalganX 6. Feb 2003 19:01

Niemals in ein VCL-Projekt eine CLX-Unit einbinden. Q steht für CLX und ist nicht mit VCL kompatibel. Deswegen Luckies Source benutzen:
Delphi-Quellcode:
Application.MessageBox('Text', 'Caption', [mbOK] or MB_SYSTEMMODAL);
Chris

Luckie 6. Feb 2003 19:01

Code:
Application.Messagebox('Text', 'Titel', MB_YESNO or MB_SYSMTEMODAL);
Und nimm diese komische Unit wieder raus.

fedderle 6. Feb 2003 19:09

OK! Danke. Jetzt funtkioniert es!

Steffen!


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