habe versucht, ein Programm, das unter Windows und verschiedenen OpenSuse-Versionen fehlerfrei läuft, unter Ubuntu 12.04 auszuführen.
Dabei ist mir aufgefallen, dass ein mehrfacher direkt aufeinanderfolgender Aufruf von showmodal nicht funktioniert.
Hab das Problem reduziert und in ein Testprojekt gepackt:
Das Projekt hat zwei forms.
aus dem ersten Formular wird mit einem Button das zweite Formular modal aufgerufen.
Wenn das zweite geschlossen wird, wird es sofort wieder aufgerufen:
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
form2.Label1.Caption := 'Aufruf 1';
form2.Showmodal;
form2.Label1.Caption := 'Aufruf 2';
form2.Showmodal;
form2.Label1.Caption := 'Aufruf 3';
form2.Showmodal;
form2.Label1.Caption := 'Aufruf 4';
form2.Showmodal;
form2.Label1.Caption := 'Aufruf 5';
form2.Showmodal;
end;
Unter Ubuntu 12.04 ist es so, dass - mal nach dem zweiten - mal nach dem dritten Aufruf- sich das zweite Form schliessen lässt, es aber nicht wieder erneut aufgerufen wird.
Klickt man erneut auf den Button kommt folgende Fehlermeldung:
TCustomForm.ShowModal for Form2:TForm2 impossible because already visible (hint for designer forms: set Visible property to false) already modal.
Soll wohl heißen, dass das Form schon visible ist, das stimmt aber nicht ...
Ich vermute, dass es an Gnome liegt, da 3 verschiedene KDE-Systeme das Problem nicht haben.
Hat jemand eine Idee, wie ich das Problem lösen könnte?
Ich weiss schon, dass es auch mit einem einzigen showmodal möglich wäre, das würde aber einiges an Änderungen
im Code bedeuten und ihr wisst ja: never touch a running system ...
Eingesetzte Version: Lazarus 1.0. fpc 2.6.0
Gruß
Eberhard