Autor Beitrag
friesi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Windows XP SP2
VS 2005
BeitragVerfasst: Do 10.03.05 17:51 
Ich möchte gerne die Komponenten auf einem Formular zählen.

Also wieviele Buttons und Edits auf dem Form sind.

Wie könnte ich das anstellen?
ScorpionKing
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: Do 10.03.05 17:54 
das hatten wir schon zig mal! einfach mal suchen!

_________________
Aus dem Urlaub zurück!
friesi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Windows XP SP2
VS 2005
BeitragVerfasst: Do 10.03.05 19:27 
Nach was genau sollte ich denn Suchen?
Hab gerade mal gesucht und auch schon bei google.

Mit "count edits" oder Komponenten zählen bei Google und hier im Forum kam ich nicht weit :/
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Do 10.03.05 20:59 
Gehe per Schleife die Komponenten des Forms durch und schaue, von welchem Typ sie sind. Siehe dazu in der Online-Hilfe die Eigenschaften und Methode von TForm (und im weiteren TComponent).

Als kleine Starthilfe folgender einfacher Vorschlag:

Nimm ein bestehendes Form deines Projektes und ziehe dort irgendwohin eine Listbox und einen Button (können später wieder gelöscht werden) - so, dass du sie sehen kannst. Mache die Listbox nicht zu schmal.

Den folgenden Code nimmst du als OnClick des Buttons (hier wird davon ausgegangen, dass die Namen "Form1", "Button1" und "ListBox1" sind -- ggf. anpassen). Starte dein Programm, klicke auf den Button und sieh, was geschieht. Das sollte dir helfen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
var i : integer;
begin
for i := 0 to ComponentCount-1 do
   ListBox1.Items.Add(Components[i].Name+' = '+Components[i].ClassName);
end;
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Do 10.03.05 21:01 
Komisch, ich konnte grad auch nichts finden... :gruebel:
Egal, mit Form1.ComponentCount dürftest Du die Lösung für dein Problem haben ;)
Aber vorsicht! Das zählt alle Komponenten, also auch Panels, Checkboxen, Memos etc. pp.
Du musst Dich dann wohl erst noch mit Form1.Components[i] durch die Komponenten hangeln und prüfen, ob es ein Edit oder ein Button ist und dann ggf. einen Zähler erhöhen.
Prüfen kannst Du das z.B. mit if(Form1.Components[i] is TEdit).

Gruß,
raziel

_________________
JSXGraph
friesi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44

Windows XP SP2
VS 2005
BeitragVerfasst: Mi 06.04.05 15:33 
So erstmal Danke für eure Hilfe.
Zwar schon ein wenig her, aber nun läuft alles und ich hab nun endlich eine Komponente erstellt bekommen, welche die anderen Komponenten auf einem Formular zählt und in einem Stringgrid ausgibt.

Nun werde ich mal versuchen noch die Position der Komponenten zu bestimmen und dann auszugeben.
Kann ich ja eigentlich mit dem Namen der Komponente (Bsp.: wert := inttostr(Button1.left);).
Da ich aber nun die Componenten mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
for i := 0 to ComponentCount-1 do
begin
 temp[i] := Components[i].Name;
end;


auslese, kann ich hinterher nicht mit wert := inttostr(temp[i].left); arbeiten.
Derzeit ist temp vom typ array of string woran glaube ich der Fehler liegt.
Aber mit array of TComponent gehts leider auch nicht :/

Kann mir jemand vielleicht auf die Sprünge helfen?
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Mi 06.04.05 15:44 
Ganz allgemein gilt hier:
Neue Frage :arrow: Neuer Thread. ;)
Also erstelle bitte zu Deiner Frage ein neues Topic, danke!

_________________
JSXGraph