Forum: Cross-Platform-Entwicklung
by Sir Rufo,
14. Feb 2015
Ähm, warum ich dieses Beispiel gebracht habe ist aber schon noch präsent?
Ich mache das nicht so, empfehle es niemandem so, sondern habe lediglich die Frage von Jumpy mit einem Codebeispiel beantwortet.
Anhand der Beschreibung kann jeder für sich selber entscheiden, ob er dieses Verhalten so haben möchte oder eben nicht.
Hätte ich evetuell in meiner Antwort vermerken sollen, dass sowas...
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
14. Feb 2015
Dann habe ich mich unglücklich ausgedrückt: Wenn der Speicher-Dialog über dem Drucken-Dialog liegt, dann muss erst der Speicher-Dialog und dann der Drucken-Dialog bearbeitet werden.
Das Handling ist also ein Stack (Last In First Out) und genau das ist auch zu erwarten gewesen.
Und ich wette dass zuerst der Drucken-Dialog erzeugt und angezeigt wird, dann der Speicher-Dialog erzeugt und...
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
Ohne es explizit ausprobiert zu haben, würde ich bei dieser Konstellation:
procedure foo;
begin
ConfirmAction( 'Willst du Drucken?', PrintFoo );
ConfirmAction( 'Willst du Speichern?', SaveFoo );
end;
erwarten, dass der Druck-Dialog erscheint und darüber der Speicher-Dialog.
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
Na dann versuche doch mal mit dem neuen nicht blockierendem Dialog in der Anwendung weiter zu arbeiten. Muss ja nach deinem Verständnis gehen.
Geht aber nicht, denn der Dialog ist modal und sperrt den Rest, aber er blockiert die Codeausführung nicht.
Vorher war der Dialog modal und blockierend, jetzt nur noch modal.
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
Die Dialoge sind immer noch modal aber nicht mehr blockierend!
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
@Daniel
Den Begriff falsch habe ich (hoffentlich) in diesem Zusammenhang auch bewusst vermieden, denn es hat ja funktioniert. Und es war den Entwicklern von diesem ShowModal ja auch bewusst, denn dort wurde ja ganz bewusst mit Application.ProcessMessages gearbeitet und das wo jeder weiß, dass das Vorkommen von Application.ProcessMessages ein Design-Fehler ist.
Es wird funktionieren aber...
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
Ähm, die Dialoge sind doch immer noch modal ... die blockieren nur nicht mehr.
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
@Daniel
Ist es nicht eher so, dass dieses Konzept schon vom ersten Tag der Programmierung an so hätte laufen müssen? Nein auch ich habe diese "blockierenden" Dialoge eingesetzt, aber war es deswegen "richtig"?
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
Es gibt zwei Aussagen, wo ich reflexartig einen Würgereiz bekomme:
Das haben wir schon immer so gemacht
Das haben wir noch nie gemacht
Was möchte man mir damit mitteilen?
Dass man eine Lobotomie hinter sich hat und darum nicht mehr denken kann?
Und etwas an das man sich gewöhnt hat, muss nicht zwangsläufig richtig sein. Wenn man sich den Code anschaut, der dieses blockierende...
Forum: Cross-Platform-Entwicklung
by Sir Rufo,
13. Feb 2015
Dann programmiere deine Anwendung doch einfach besser lesbar
procedure ConfirmAction( const AText : string; const AProc : TProc );
begin
MsgDialog(AText,TMsgDlgType.mtConfirmation,,TMsgDlgBtn.mbYes,
procedure(const AResult: TModalResult)
begin
if (AResult=mrYes) then
AProc();
end);