Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 17.03.03 23:35 
Hi,

weiß jemand wie ich mir TFrames, welche noch keinen Parent besitzen auflisten lassen kann???

ausblenden Quelltext
1:
2:
3:
  for i:=0 to Application.ComponentCount-1 do
    if Application.Components[i] is TFrame then
      ListBox1.Items.Add(Application.Components[i].Name);

klappt leider nicht... :(

Au'revoir,
Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Mo 17.03.03 23:57 
Es könnte einfach daran legen, daß Application die Komponenten nicht besitzt. Auch wenn sie z.B. Form1 gehören würden, so könntest du sie nicht so auflisten. Dann würde die Komponente Form1 gehören und du könntest sie nur so auslesen. Was du aber wahrscheinlich auflisten kannst sind die Formulare. Wenn du also ein Umweg über die Formulare machst, dann müßte es gehen.

_________________
Popov
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Mo 17.03.03 23:59 
Nein, auch wenn ich über die Formulare gehe geht es nicht...
Denn wie gesagt haben die Frames alle KEINEN Parent...

Ich möchte halt soeine Liste haben, wie sie erscheint wenn man ein Frame einbinden will (Also auf "Frames" auf der "Standard"-Leiste klickt)

Au'revoir,
Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 18.03.03 00:08 
So müßte es gehen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, k: Integer;
begin
  with Application do for i := 0 to ComponentCount-1 do
    if Components[i] is TForm then
      with TForm(Components[i]) do for k := 0 to ComponentCount-1 do
        if Components[k] is TEdit then

            Form1.ListBox1.Items.Add(Components[k].Name);

end;


Listet alle Edits in allen Formularen auf (Umweg über TForm).

Wobei ich hier nach TEdit gesucht habe.

Allerdings glaube ich nicht, daß du was findest wenn du kein Parent zgewiesen hast. Wenn einer noch nicht in der Wohnung ist, dann kannst du ihn auch nicht in der Wohnung finden.

Allerdings kannst du etwas warten mit dem Aufgeben. Vielleicht wiß jemand anders einen Trick.

_________________
Popov
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Di 18.03.03 00:11 
Hi,

ich sagte doch... *seufzt* auf diese Art klappt es nicht, da die Frames immer noch KEINEN Parent haben und somit auf den Forms genausowenig auftauchen wie sonst irgendwo...

Aber als kleine nebeninfo, ich brauche die Liste zur DesignTime, also nich später im fertigen Programm.
Bastel an einer Komponente in der man u.A. Frames aussuchen kann, und dafür brauche ich das.. :)

Au'revoir,
Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 18.03.03 00:20 
Das habe ich verstanden. Nur funktionierte dein Code auch in der Hinsicht nicht, daß auch wenn die Komponente auf dem Formular abgelegt wären und so ein Parent besäse, du es nicht über Application finden könntest. Wenn du über Application und Components gehst, dann findest du nur die Formulare.

Aber bedenke logisch was eine Komponente ist, die noch nicht zugewiesen wurde. Einfach nur eine Variable.

Was du also suchst ist einfach (noch) eine globale Variable.

_________________
Popov
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Di 18.03.03 12:17 
Aya hat folgendes geschrieben:
Hi,

ich sagte doch... *seufzt* auf diese Art klappt es nicht, da die Frames immer noch KEINEN Parent haben und somit auf den Forms genausowenig auftauchen wie sonst irgendwo...

Aber als kleine nebeninfo, ich brauche die Liste zur DesignTime, also nich später im fertigen Programm.
Bastel an einer Komponente in der man u.A. Frames aussuchen kann, und dafür brauche ich das.. :)

Au'revoir,
Aya

Wenn sie noch keinen parent haben, warum hast du sie dann überhaupt schon instanziert? Nimmt doch nur speicher weg und man sieht nichts.
Ich würde die klassen der frames in der jeweiligen 'initialization', mit einer eigenen register procedure, speichern und dann bei bedarf instanzieren :) Allerdings kann es ja auch sein, dass das dein prog das erfordert?

cu. mx
Aya Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Di 18.03.03 16:35 
Hi,

na ja, ich will ja eine Komponente basteln auf der man u.A. auch Frames anzeigen kann.

Deswegen geht es mir ja nur um die DesignTime... ich brauche ne Liste in der man alle frames einfach auswählen kann :)

Au'revoir,
Aya

_________________
Aya
I aim for my endless dreams and I know they will come true!
maximus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 896

Win XP, Suse 8.1
Delphi 4/7/8 alles prof
BeitragVerfasst: Di 18.03.03 17:55 
Dann sind die frames wohl noch nicht instanziert, oder doch?

Weil, wenn nicht, dann ist die register procedure doch ideal, da du somit die liste der klassen hättest.

Wenn du schon instanzierte Frames anzeigen willst, könntest du ja eine klasse von TFrame ableiten und der konstruktor overriden, in dem du dann die instanz in einer liste registriest. oder versteh ich dich falsch?

Ich vermute mal du willst das voll dynamisch machen, ohne irgendwo noch was anzugeben? ...Ich schätze das wird schwierig, da ein frame, ohne parent, ja auch nur ein verlorenes objekt in den tiefen des speichers wäre :D

bis denn.