Entwickler-Ecke

Sonstiges (Delphi) - Hintergrund MesaageDlg


dude - Fr 21.03.03 14:52
Titel: Hintergrund MesaageDlg
Hi,

wenn ich einen Timer baue, der jede Sekunde überprüft, ob 2 werte miteinander gleich sind, ( also if (label1.caption = label2.caption) und ich
dann einen Dialog haben will, also:

Quelltext
1:
 MessageDlg('Sie haben ihre Maximale Zeit erreicht!', mtInformation,[mbOk], 0);                    

dann funktioniert das ganze.
Und nun, wenn ich nun aber nicht das Fenster aktiv habe, dann ist
1. hört die Zeit nicht auf zu stoppen, obwohl es programmiert ist
2. der MessageDlg wird nicht angezeigt

Woran kann das liegen, wie kann man das programmieren, das es funktioniert ?
MFG


Aya - Fr 21.03.03 17:07
Titel: Re: Hintergrund MesaageDlg
Hi,

Der MessageDlg/ShowMessage ist ja Form abhängig... also wenn das Form im Hintergrund oder Minimiert ist, wird auf das MessageFenster im Hintergrund oder Minimiert sein.. ;)

Die einzige lösung die ich so auf anhieb wüsste wäre, das du einfach ein eigenes Form machst für deine Message welches du dann mit ShowModal anzeigst...

Hoffe geholfen zu haben :)

Au'revoir,
Aya~


Delete - Fr 21.03.03 18:00

Ein MessageDlg ist wohl nur anwendungsmodal. Versuch mal eine Messagebox, die du systemmodal machst.


dude - Fr 21.03.03 21:05

Und, äh, wie macht man sowas Systemmodal ?
Ich hab von so einem Begriff keine Ahnung!


Delete - Fr 21.03.03 22:30

Hier [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/dialogboxes/dialogboxreference/dialogboxfunctions/messagebox.asp] findest du alle Flags. Einfach die gewünschten mit or verknüpfen.


dude - So 23.03.03 13:13

ach, noch eine frage, wie kann ich z.B. mb_ok und mb_systemmodal in eine spalte machen ?
Beispiel:

Quelltext
1:
MessageBox(hwnd(0),'Sie haben die maximalzeit erreicht!','Zeit abgelaufen',mb_systemmodal);                    


da bei mb_systemmodal soll noch z.B. ein mb_ok rein.
--
Und dann noch, hätte jemand eine Idee, wie das gleiche Problem mit einem Timer funktioniert ? Beim Starten funktioniert ? Villeicht liegt es auch nur am Code:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
if memSave.Lines[5] = '1' then
begin
  if labminTime.Caption = labmaxTime.Caption then
  begin
    if memSave.Lines[6] = '1' then
    begin
    MessageBox(hwnd(0),'Sie haben die Maximale Zeit erreicht!','Zeit abgelaufen',mb_systemmodal);
    end;
    if memSave.Lines[6] = '2' then
    begin
    playsound(PChar(memSave.lines[8]),0,SND_FILENAME + SND_ASYNC);
    end;
    if memSave.Lines[7] = '1' then
    begin
    tmrTimer.Enabled := false;
    end;
    if memSave.Lines[7] = '2' then
    begin
    // ABWÄHLEN !!
    end;

  end;
end;


Wenn da jemand durchblickt, an was könnte es liegen?


Delete - So 23.03.03 14:42

Ich habe dir doch gesagt, du sollst sie mit or verknüpfen MB_SYSTEMMODAL or MB_OK.


dude - So 23.03.03 15:05

ups, sorry - nachdem ich mich mit der messageBox befasst hatte, hatte ich dein beitrag grad vergesssen mit dem or!