galagher - Sa 26.05.12 13:42
Titel: MDIChildren - Tile oder Maximized, Position aber wie Cascade
Hallo!
In meiner MDI-Anwendung erzeuge ich die MDIChildren wie folgt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var Form1: TForm1; aMDIChild: TForm;
procedure TForm1.CreateMDIChild(const sHint: String; iTag: Integer); begin aMDIChild := TForm2.Create(Self);
if not bMaximized then aMDIChild.WindowState := wsNormal else aMDIChild.WindowState := wsMaximized; |
Das Problem ist optischer Natur: Bei
Cascade sieht ja alles noch gut aus, aber bei
Tile "blitzt" das neue MDIChild zuerst als
Cascade an der entsprechenden Position auf, um danach per
Tile entsprechend angeordnet zu werden. Das sieht man leider! Dieser Efefkt tritt auch bei jenen MDIChildren auf, die nicht aktiv sind und zB. per
Next oder
Previous zum ActiveMDIChild werden: Man sieht alle MDIChildren ganz kurz als
Cascade, dann erst wie gewünscht, also
Tile oder
fsMaximized.
Egal, was ich mache, zB.
FormStyle := fsMDIChild erst später, nach dem Create, zuweisen oder zuerst
Visible := False, dann
Visible := True - es nützt nichts. Man sieht immer zuerst Cascade.
Ich möchte eigentlich Folgendes:
1. Erzeuge ein neues (noch unsichtbares!) MDIChild.
2. Setze alle nötigen Einstellungen wie
Tile oder
wsMaximized.
3. Setze das neue MDIChild an die richtige Position und mache es dann erst sichtbar.
Zur Zeit ist es so, das es schon während des Creates sichtbar wird, was oben genannten Effekt hat.
:nixweiss:
galagher - Sa 26.05.12 14:50
jaenicke hat folgendes geschrieben : |
| Die alte MDI-Funktionalität wird eben schon ewig nicht mehr weiterentwickelt. |
Dachte ich mir, denn bei DelphiXE2 ist es immer noch genau so wie bei Delphi6.
jaenicke hat folgendes geschrieben : |
| Bei mir ist das Aufblitzen allerdings generell so gut wie gar nicht zu sehen. Ich habe gerade keinen alten PC hier um es mal da zu testen. |
Na, so alt ist mein PC nun auch wieder nicht, höchstens so ca. 15 Jahre. :? Nein, ernsthaft, knapp 2 Jahre! Aber ich verstehe, was du meinst: Je schneller der PC (die Grafikkarte etc.), desto weniger der Effekt.
Danke! Ja, dein Tipp mit Visible bringt tatsächlich etwas.
Trotzdem - man sieht es.