Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi weiterlaufen während showmessage() (https://www.delphipraxis.net/70150-weiterlaufen-waehrend-showmessage.html)

turboPASCAL 26. Mai 2006 08:59

Re: weiterlaufen während showmessage()
 
Wie währe es den so:

Delphi-Quellcode:
implementation

{$R *.dfm}

var
  ShowMyMessage: Boolean = FALSE;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // Anderer Code

  if Bedingung then
  begin
    if not ShowMyMessage then
    begin
      ShowMyMessage := TRUE;
      MessageBox(Handle, 'Hi', 'Information', {MB_TOPMOST or} MB_ICONINFORMATION or MB_OK);
    end;
  end;

  // Anderer Code
end;

Cyberbob 26. Mai 2006 13:37

Re: weiterlaufen während showmessage()
 
Er will aber, das das Programm weiterläuft (weiterarbeitet), während die Meldung angezeigt wird.

Helmi 26. Mai 2006 14:20

Re: weiterlaufen während showmessage()
 
Hallo,

du könntest es auch so machen:

Delphi-Quellcode:
  private
    { Private-Deklarationen }
    f: TForm;

{ ... }

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  Timer1.Enabled := CheckBox1.Checked;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  If CheckBox2.Checked then
    begin
      If not f.Visible then
        f.Show;
    end
  else
    begin
      f.Hide;
    end;

  Label1.Caption := TimeToStr(now);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  f := CreateMessageDialog('Meldung', mtWarning, []);
  f.Height := 75;
end;
CheckBox2.checked wäre deine Bedingung
und die checkBox1 diente mir nur als ein/ausschalten des timers.

ach ja - über CreateMessageDialog bekommst du eine TForm.
Und diese kannst du, wenn du es willst, nach Herzenslust ändern.

z. B.:
Delphi-Quellcode:
f.color := blue;
etc.
[edit]
die Zeile:
Delphi-Quellcode:
Label1.Caption := TimeToStr(now);
dient nur dazu, dass man sieht dass das Prog weiterläuft

happyaura 27. Mai 2006 00:39

Re: weiterlaufen während showmessage()
 
Vielen Dank für eure antworten.

ich hab es so ähnlch gehandhabt, wie Helmi vorgeschlagen hat, sprich mit show und hide gearbeitet. Nur hab ich mein eigenes Formular, in dem ich mit ein paar Labels ein paar Statusmeldungen ausgebe. Aber CreateMessageDialog kann man sich mal gut merken.
Es soll schon so sein, dass während des dies warnfenster offen ist, andere eingaben im Hauptformular getätigt werden können, bzw sogar sollen, damit die fehlermeldung nicht mehr auftritt.

turboPASCAL 27. Mai 2006 07:32

Re: weiterlaufen während showmessage()
 
Zitat:

Zitat von Cyberbob
Er will aber, das das Programm weiterläuft (weiterarbeitet), während die Meldung angezeigt wird.

Und das macht es auch, MessageBox hält das Programm nicht an!

SirThornberry 27. Mai 2006 08:35

Re: weiterlaufen während showmessage()
 
also bisher hat bei mir Messagebox auch immer dazu geführt das der Source hinter dem Aufruf erst ausgeführt wird wenn der Dialog geschlossen wird.
Es gibt aber auch noch die Möglichkeit mit PostMessage an die eigene Anwendung eine Message zu schicken und bei Empfang der Message ShowMessage aufzurufen.

turboPASCAL 27. Mai 2006 09:07

Re: weiterlaufen während showmessage()
 
@Gummibärchen, ich bezog mich nur auf das Timerbeispiel.

Zitat:

Zitat von SirThornberry
Es gibt aber auch noch die Möglichkeit mit PostMessage an die eigene Anwendung eine Message zu schicken und bei Empfang der Message ShowMessage aufzurufen.

Das ist auch eine Idee die man Umsetzen könnte.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

const
  WM_MYMESSAGE = WM_USER + $000001;

type
  TMyMessage = Record
                 // foo
               end;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure WMMyMessage(var M: TMyMessage); message WM_MYMESSAGE;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMMyMessage(var M: TMyMessage);
begin
  ShowMessage('Hi');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Handle, WM_MyMessage, 0, 0);
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr.
Seite 2 von 2     12   

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