![]() |
Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Hallo,
ich habe folgendes Szenario: Form1: - hat eine Variable auf Form2 und legt im FormCreate eine Instanz von Form2 an und setzt das Parent von Form2 auf Form1
Delphi-Quellcode:
Form2:
procedure TForm1.FormCreate(Sender: TObject);
var tmp : TForm2; begin tmp := TForm2.Create(Application); tmp.Parent := Form1; tmp.Show; end; - hat eine Statusbar - setzt im FormShow die Color der Statusbar
Delphi-Quellcode:
Schwupps, die Statusbar ist gar nicht mehr da (wenn ich die Anwendung starte).
procedure TForm2.FormShow(Sender: TObject);
begin StatusBar1.Panels[1].Text := 'Update AUS'; StatusBar1.Color := clRed; end; Setze ich die Color nicht, wird die Statusbar angezeigt. Habt ihr eine Idee? Grüße |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Hat das einen besonderen Grund, dass du das Form2 im OnCreate erzeugst? Verschiebe das mal ins OnShow, dann funktioniert es.
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Wird schwierig zu erklären aber ja, dass muss im FormCreate sein ;-)
Habe ja auch nur zur Veranschaulichung das so gepostet. Der eigentliche Source sieht ja ganz anders aus aber der Ablauf ist der Gleiche (also im FormCreate). Gibts keine Möglichkeit das auch so hinzubekommen? |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Zitat:
Delphi-Quellcode:
So zeigt man immer auf die eigene Instanz, unabhängig davon, wieviele es gibt und wie die Variablen heißen. Das Thema wird so oft angesprochen, dass es mich wundert, wie oft es immer noch ignoriert wird.
tmp.Parent := self;
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Es ist doch nur ein Beispiel, welches ein ganz anderes Problem darstellen soll.
Danke trotzdem dafür aber es ändert sich an meinem Problem nichts egal ob Self oder Form1. Grüße |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Früher oder später bekommst du auf diese Art noch viel mehr Probleme. Du versuchst nämlich im OnCreate von Form1 ein Form2 auf Form1 zu zeichnen, obwohl Form1 noch gar nicht gezeichnet wurde, weil du da ja erst im OnCreate drinhängst. Das dir das nicht komplett um die Ohren fliegt ist fast schon ein Wunder.
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Wenn ich die Laufzeitthemes deaktiviere, funtioniert der Code sogar bei mir.
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Laufzeitthemes sind aber an und sollten auch an bleiben ;-)
Vielleicht gibts ja doch noch irgendeine Art Workaround... |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Und wenn du sowas machst:
Delphi-Quellcode:
Das wäre dann auch irgendwie logischer. Im OnCreate wird alles erzeugt und in OnShow alles angezeigt.
type
TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); private { Private-Deklarationen } fForm2:TForm2; public { Public-Deklarationen } end; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin fForm2 := TForm2.Create(Application); fForm2.Parent := self; end; procedure TForm1.FormShow(Sender: TObject); begin fForm2.Show; end; |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Das geht leider auch nicht...
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Dann vertausche mal in deinem OnCreate das Parent:= mit dem Show und setze vorher noch Top und Left auf sinnvolle Werte.
Der Nachteil ist, das das Form kurz aufblitzt. |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Zumindest unter XE kann man die Color setzen, wie man möchte, solange die StatusBar gethemed ist, hat das keine Auswirkung. Wenn also die Laufzeitthemes aktiviert sein sollen, kann man sich das Farbesetzen doch gleich sparen.
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Bringt leider das gleiche Erscheinungsbild, keine Statusbar @bcvs
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Stimmt @DeddyH:
Was wäre denn die Alternative, wenn ich Themes an habe und möchte eine "Art" Statusbar mit unterschiedlichen Farben? |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Ich kenne die Komponente selbst nicht, aber der Entwickler hat nach meiner Erfahrung was auf dem Kasten:
![]() |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Also bei mir (D2007) hat das schon funktioniert, allerdings ohne Farbe wegen Theming.
Wenns was Einfaches reicht, könntest du doch auch ein paar Panels mit verschiedenen Farben nehmen. |
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
MDI? :stupid:
|
AW: Statusbar in Formular, welches in ein anderes Formular eingebettet wird
Tipp:
erstelle mal ein komplett leeres/neues Projekt. Dort schreibst du das rein, was bcvs bereits vorgeschlagen hat. Ich weiß nicht warum, aber ich bin mir fast sicher, dass das funktionieren wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz