Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - statusleiste für alle forms?
Morpheus1572 - Mi 10.09.08 16:32
Titel: statusleiste für alle forms?
Moin,
habe hier nichts gefunden oder falsch gesucht...
ich habe auf meiner form1 eine statuszeile, die ich gerne auch auf allen meiner kinderfenster hätte. ist das machbar und wenn ja wie, oder muss ich immer neu basteln?
Gruß Morph.
galagher - Mi 10.09.08 16:57
Titel: Re: statusleiste für alle forms?
Morpheus1572 hat folgendes geschrieben: |
| ich habe auf meiner form1 eine statuszeile, die ich gerne auch auf allen meiner kinderfenster hätte. ist das machbar und wenn ja wie, oder muss ich immer neu basteln? |
So geht's:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm2.FormShow(Sender: TObject); begin Form1.Statuszeile1.Parent := Self; end;
procedure TForm3.FormShow(Sender: TObject); begin Form1.Statuszeile1.Parent := Self; end; |
Yogu - Mi 10.09.08 19:27
galagher:
Morpheus1572 hat folgendes geschrieben: |
| [...], die ich gerne auch auf allen meiner kinderfenster hätte. |
Dein Code funktioniert nur, wenn immer nur ein Fenster sichtbar ist.
Morpheus1572: Hast du eine MDI-Anwendung? Dort ist es meist sinnvoller, nur eine Statusleiste im Hauptformular zu benutzen, und den Text entsprechend zum aktuellen MDI-Kindfenster zu ändern. Das nur vorneweg.
Du könntest mit Vererbung arbeiten. Eine Klasse
TCommonChildForm, die eine Statusleiste enthält, und den Text dazu aus dem Hauptformular abruft. Alle anderen Kindfenster leitest du von dieser Klasse ab.
Morpheus1572 - Mo 15.09.08 18:43
@Yogu:
ganz ehrlich??? ich habe kein wort von dir verstanden. :oops:
Yogu - Mo 15.09.08 18:58
Morpheus1572 hat folgendes geschrieben: |
| ich habe kein wort von dir verstanden. :oops: |
Hm, dann muss ich das wohl nochmal erklären...
galaghers Code verschiebt die Statusleiste von einem Formular zum nächsten. Das geschieht dadurch, dass der
Parent geändert wird. Ein Beispiel aus der Realtität: Du hast drei Autos (Kindfenster), aber nur ein Autoradio (Statusleiste). Aber du möchtest in jedem Auto Radio hören. Jetzt nimmst du das Radio (Statusleiste) einfach bei jedem Wechsel in ein anderes Fenster (
FormShow) aus der Halterung raus (
Parent - das übergeordnete Teil, in diesem Fall die Halterung) und baust es im anderen Auto ein.
Bei Autos mag das ja noch funktionieren, aber bei einem MDI-Programm sind immer mehrere Kindfenster (Autos) sichtbar. Jedoch nur das fokussierte Fenster (Das Auto, in dem du eingestiegen bist), hat die Statusleiste (Radio). Die Leiste "springt" also von einem zum nächsten Fenster. Das ist nicht schön.
Wenn dir das mit Vererbung zu kompliziert ist, kannst du auch einfach in jedes Kindfenster eine Statusleiste packen, die du dann aber natürlich nur vom Kindfenster aus bearbeitest. Alles andere macht ja keinen Sinn.
Ich hoffe, ich habe mich jetzt klar genug ausgedrückt. Sonst einfach noch mal nachfragen. :?
Morpheus1572 - Mo 15.09.08 19:04
das vererben ist genau mein problem (aber deine beschreibung mit den autos fand ich klasse - endlich mal so, dass sogar ein kind das vestehen würde).
ich tu mir ehrlich gesagt sehr schwer mit dem vererbungsding. schon in der schule habe ich mir damals die karten gelegt (mendelsche gesetz glaub ich...) ;-)
wie macht man das genau?
Gruß Morph.
Yogu - Mo 15.09.08 19:11
Bei Formularen ist das eigentlich nur ein bisschen mehr Geklicke.
Du erstellst ein MDI-Child namens "CommonChildForm", und fügst eine Statusleiste ein. Anschließend klickst du auf Datei > Neu > Projektname > CommonChildForm. Und schon hast du ein Fenster, das von CommonChildForm abgeleitet ist. Aber das ist nur von Nutzen, wenn du verschiedene Kindfenster benutzt. Zum Beispiel eines für Bilder, und eines für Text. Wahrscheinlich kannst du einfach eine Statusleiste in das Kindfenster einbauen.
hansa - Mo 15.09.08 20:57
Was soll das mit dem MDI, Kindfenster etc. ? :shock: Wenn lediglich ein Control (hier statusbar) gebraucht wird, dann am besten mit der Objektablage.
Yogu - Di 16.09.08 19:28
Titel: Re: statusleiste für alle forms?
hansa hat folgendes geschrieben: |
| Was soll das mit dem MDI, Kindfenster etc. ? :shock: Wenn lediglich ein Control (hier statusbar) gebraucht wird, dann am besten mit der Objektablage. |
MDI war vom Autor vorgegeben:
Morpheus1572 hat folgendes geschrieben: |
| ich habe auf meiner form1 eine statuszeile, die ich gerne auch auf allen meiner kinderfenster hätte. |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!