Autor Beitrag
Morpheus1572
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Mi 10.09.08 17:32 
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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2556
Erhaltene Danke: 45

Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
BeitragVerfasst: Mi 10.09.08 17:57 
user profile iconMorpheus1572 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:
ausblenden 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;

_________________
gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mi 10.09.08 20:27 
user profile icongalagher:

user profile iconMorpheus1572 hat folgendes geschrieben:
[...], die ich gerne auch auf allen meiner kinderfenster hätte.

Dein Code funktioniert nur, wenn immer nur ein Fenster sichtbar ist.

user profile iconMorpheus1572: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Mo 15.09.08 19:43 
@Yogu:

ganz ehrlich??? ich habe kein wort von dir verstanden. :oops:
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 15.09.08 19:58 
user profile iconMorpheus1572 hat folgendes geschrieben:
ich habe kein wort von dir verstanden. :oops:

Hm, dann muss ich das wohl nochmal erklären...

user profile icongalaghers 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 157

Win XP
Delphi 7
BeitragVerfasst: Mo 15.09.08 20: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Mo 15.09.08 20: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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 15.09.08 21:57 
Was soll das mit dem MDI, Kindfenster etc. ? :shock: Wenn lediglich ein Control (hier statusbar) gebraucht wird, dann am besten mit der Objektablage.

_________________
Gruß
Hansa
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 16.09.08 20:28 
user profile iconhansa 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:

user profile iconMorpheus1572 hat folgendes geschrieben:
ich habe auf meiner form1 eine statuszeile, die ich gerne auch auf allen meiner kinderfenster hätte.