Schleife anstatt viele Labels

Kuba

Grünschnabel
Hallo!

ich bin noch ein Anfänger in Delphi und wir haben unser erstes größeres Projekt am Start.

Jetzt steh ich vor dem Problem das ich 253 Labels wieder sichtbar machen will.
Hab aber keine Idee wie ich das mit ner Schleife machen kann, weil wenn ich:


for i:= 1 to 253 do

Form1.Label(hier die Laufzeilenvariable).visible:=true;


... meckert das Programm.

Ich steh vor einem Rätsel. Suche im Inet war bisher erfolglos, weil ich nicht genau weiß wonach ich suchen muss.

Vielleicht könnt ihr mir ja helfen.

Gruß Kuba
 
Delphi bietet dir dafür die Funktion FindComponent, danach solltest du mal in der Delphi-Hilfe suchen.
Wenn diese vielen Labels sehr viele Gemeinsamkeiten aufweisen (gleichmäßig angeordnet, änliche Beschriftung etc.), könntest du auch mal über dynamisches Erzeugen nachdenken.

Falls du Hilfe brauchst, helfen wir dir gern.

Liebe Grüße
Hellie
 
Thx, endlich hat das grübeln und suchen ein Ende ;)

for i := 1 to 5 do
begin
(FindComponent('Button' + IntToStr(i)) as TButton).Caption := 'Neue Caption';
end;


Gruß Kuba
 
Hallo,

ich habe ein aehnliches Problem, und zwar wuerde ich gerne die Funktion in einer function/procedure verwenden, allerdings bekomm ich dann folgende Fehler Meldung

[Fehler] Unit1.pas(107): Undefinierter Bezeichner: 'FindComponent'

waere nett wenn mir einer dazu Hilfe geben koennte
 
Hi,

hat keiner eine Idee?

Ich bin mitlerweile auch soweit das ich eine Funktion für eine Prozedur brauch....

ich hab im Inet schonmal nach FindProcedure gesucht aber so einfach macht es einem Delphi dann doch nicht ^^

Gruß Kuba
 
Du brauchst keine Funktion für eine Prozedur. Das sind beides Methoden, mit dem Unterschied, dass eine Funktion einen Rückgabewert hat.

Du hast vermutlich den Namespace (wie auch immer mans bei Delphi nennt) für FindComponent vergessen, sprich unter uses nichts ergänzt. Daher könnte diese Fehlermeldung stammen. Schau mal in der Delphi-Hilfe unter FindComponent nach, da dürfte stehen, was einzubinden ist.
 
Nein ich meinte das anders.

Das FindComponent funktioniert einwandfrei. Aber eben nur wenn ich es auf Komponenten anwende.

Die Delphi-Hilfe hab ich mir jetzt schon zweimal zu dem Theman durchgelesen. Und bin zu dem Schluß gekommen das man für Funktionen und Prozeduren was anderes als FindComponent braucht...

hab mich oben ein wenig unglücklich ausgedrückt.

Gruß Kuba
 
Was sollen denn diese Prozeduren machen? Willst du jetzt für die genannten 253 Labels noch mal die Klick-Prozeduren aufrufen oder wie? Also wenn es nur wenige Prozeduren sind, würde ich an deiner Stelle eine Mehrfach-Auswahl nehmen (Case ... of...).
Falls es jedoch sehr viele sind, solltest du versuchen, das ganze doch dymanisch zu gestalten, oder irgendwie das ganze mit Parametern zu lösen. Oder, wenn in allen das gleiche steht, ihnen eine Prozedur zuzuordnen in diesem Ereignis. Hab ich noch nie gemacht, müsste aber gehen :D.

Denn soweit ich weiß, gibt es keine Funktion, die dir hilft, bestimmte Prozeduren zu finden.

lg
Hellie

@eisbaer: Könnte mir bei dir höchstens vorstellen, dass er das nicht macht, weil die Funktion/Prozedur, in der du FindComponent verwendest, keiner Form zugeordnet ist, oder deine Delphi-Version ist zu alt oder da ist FindComponent noch irgendwie in einer nicht eingebundenen Unit, die du über uses einbinden musst. Am besten mal in die Delphi-Hilfe schauen, da sollte sowas mit stehen.
 
Zuletzt bearbeitet:
Du könntest auch folgenden Ansatz verwenden:
Du willst variabel durch verschiedene Komponenten durchlaufen... Leg doch ein Array of TLabel an... bei 250 Labels gehe ich davon aus, dass du die bitte, bitte nicht per Hand eingefügt hast, sondern zu Laufzeit createst... dann legst du in dem Array einfach alle Labels ab.... bei Bedarf läufst du das ganze Array per for schleife ab schnappst die jedes Objekt daraus... (prüfst evtl obs != nil ist) und machst einfach einen Aufruf der Form labelarray[ i ].setCaption() oder wie auch immer die Methoden in Delphi nochmal hießen...

zur Not kannst du auch als Array of TComponent oder irgend einer hierarchisch höher liegenden Komponente speichern und casten ... in Java glaub ich (xy as TLabel).setCaption() etc....

-Andy
 
Kuba hat gesagt.:
Das FindComponent funktioniert einwandfrei. Aber eben nur wenn ich es auf Komponenten anwende.

Die Delphi-Hilfe hab ich mir jetzt schon zweimal zu dem Theman durchgelesen. Und bin zu dem Schluß gekommen das man für Funktionen und Prozeduren was anderes als FindComponent braucht...

Ja natürlich. Schließlich liegt das mit den Komponenten ja auch im Namen. ;)
 

Neue Beiträge

Zurück