Zwei MessageBox
-
Hallo zusammen,
ich möchte, dass zwei MessageBox auf meinem Bildschirm erscheinen. So funktioniert es leider nicht:void __fastcall TForm1::FormCreate(TObject *Sender) { for (int i=0; i<3; i++) { Application->MessageBox ("Hallo", "Moin", 0); } }
Hier erscheinen die MessageBox hintereinander, also ich muss zuerst auf "Ok" klicken, bis die nächste Meldung erscheint.
Wie mache ich es aber, dass die beiden Meldungen gleichzeitig erscheinen? Ich habe mal kurz an die Methode "ProcessMessages"
gedacht, aber das ist auch nicht das richtige!Könnt ihr mir helfen?
Vielen Dank
lg, freakC++
-
Hallo
So auf die Schnelle fallen mir nur folgende 2 Möglichkeiten ein:
1. Die MessageBox in einem Timer aufrufen.
2. Die MessageBox in einem Thread aufrufen.
-
Eine Message-Box ist ein modaler Dialog; von einem solchen sollte zu einer Zeit nur einer aktiv sein. Du kannst zwar mithilfe eines Timers eine weitere öffnen, allerdings wird diese dann modal zur vorherigen (sofern du Application->MessageBox verwendest). Es ist zwar tatsächlich möglich, zwei Dialoge zugleich modal erscheinen zu lassen, doch hat das unangenehme Konsequenzen, weshalb du die Finger davon lassen solltest.
-
Hallo zusammen,
vielen Dank für den Hinweis, audacia...doch in meinem kleinen Programm geht es um keinerlei Performancebeachtungen oder Sonstiges. Dennoch vielen Dank, da ich dann wohl etwas in einem anderen Programm ändern sollte...Mit dem Timer klappt es super, doch kann mir jemand sagen, wie ich die Position der MessageBox ändern kann. Hier wird deine über die andere einfach halb drübergelegt. Aber was ist wenn ich diese neben einander legen möchte?
Eine andere Frage: Warum kann man das mit dem Timer beispielsweise nicht mit ShowMessage machen? Da passiert das gleiche wie in einer for-Schleife!! Liegt das an dieser Modalität?
Vielen Dank für eure Hilfe
lg, freakC++
-
freakC++ schrieb:
vielen Dank für den Hinweis, audacia...doch in meinem kleinen Programm geht es um keinerlei Performancebeachtungen oder Sonstiges.
Von Performance ist da auch gar nicht die Rede.
Etwas ausführlicher ist die Problematik hier beschrieben.
-
Hallo,
@audacia: Vielen Dank für den Link, doch leider verstehe ich nicht so recht, was eine UI ist (und das ist wohl für das Verständnis dieses Artikels essentiell). Kannst du mir weiterhelfen?Weiß jemand oder kann mir jemand einen Tipp geben wie ich die Position der MEssageBox ändern kann. Eine Eigenschaft gibt es dazu jedenfalls nicht....
Es könnte ja auch etwas anderes sein, doch beispielsweise funktioniert es (wie oben beschrieben) mit der sehr viel simpleren ShowMessage nicht.Vielen Dank für eure Hilfe
lg, freakC++
-
UI = User Interface
Erstelle dir doch einfach eine eigene "MessageBox" (kleiner Dialog mit OK-Button, nicht-modal aufgerufen), die deinen Anforderungen eher genügt. Dann kannst du auch problemlos die Position bestimmen. Was genau ist denn eigentlich der Zweck deines Strebens?
-
Hallo,
Die BCB-Hilfe schrieb:
This example uses a button on a form. When the user clicks the button, a message box appears with a Yes, No, and Cancel button on it:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
MessageDlgPos("Are you there?",mtConfirmation, TMsgDlgButtons() << mbYesNoCancel, 0, 200, 200);
};LG, Micha