Toon posts:

[Delphi 5] Array van TLabel

Pagina: 1
Acties:
  • 129 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een form waarin meerdere labels moeten komen, dit wil ik natuurlijk oplossen met een array, dus onder var:
code:
1
   Names: array[1..24] of Tlabel;

Maar hoe krijg ik die Labels ook zichtbaar op een form?

Ik heb al verschillende dingen geprobeerd in FormCreate maar tot nu toe krijg ik bijna altijd een EcomponentError. En als er geen error is zie ik weer niets op het form...
voorbeeldje :
code:
1
2
3
4
5
6
7
8
9
10
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
  for i := 1 to 24 do
   begin
     Names[i]:= TLabel(FindComponent('Label' + IntToStr(i)));
     Names[i].Enabled:=True;
     Names[i].Visible:=True;
   end;
end;


Heb de search gebruikt, resultaat niets...maar op google vond ik http://www.delphicorner.f9.co.uk/articles/comps7.htm , het lijkt perfect, maar het werkt niet (volgens mij is het voor delphi <5).

Ik heb het idee dat ik iets essensiels vergeet, maar ben nog maar een beginnende programmeur dus ik hoop dat iemand mij hiermee kan helpen.
bvd

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 20:22

Reptile209

- gers -

Heb je die labels al wel op je form staan? Daar gaat deze methode namelijk van uit! In die lus worden de labels 1 voor 1 afgelopen en in je array gestopt.

Zo scherp als een voetbal!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Je vergeet de Parent te zetten van de TLabel

We adore chaos because we like to restore order - M.C. Escher


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 20:22

Reptile209

- gers -

The first thing that needs to be done is to make declaration of the array of TLabels. For this example, I've dropped eight TLabel components on a form.
En dan kan je dus die enabled en visible statements weghalen.
Als dit het niet is, geef dan eens een samenvatting van wat en hoe je form nu is.

Zo scherp als een voetbal!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Reptile209 schreef op 26 augustus 2002 @ 13:50:
Heb je die labels al wel op je form staan? Daar gaat deze methode namelijk van uit! In die lus worden de labels 1 voor 1 afgelopen en in je array gestopt.
Ja, daar gaat die code wel van uit dat ze op het form staan. De array wordt niet gevult in die code en helemaal niet eens gebruikt.

Rare constructie hoor. Waarom heb je een array als je m niet eens gebruikt?

We adore chaos because we like to restore order - M.C. Escher


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 20:22

Reptile209

- gers -

LordLarry schreef op 26 augustus 2002 @ 13:50:
Je vergeet de Parent te zetten van de TLabel
Boeit niet: ze moeten al op de form staan...

Zo scherp als een voetbal!


  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 20:22

Reptile209

- gers -

LordLarry schreef op 26 augustus 2002 @ 13:52:
[...]


Ja, daar gaat die code wel van uit dat ze op het form staan. De array wordt niet gevult in die code en helemaal niet eens gebruikt.

Rare constructie hoor. Waarom heb je een array als je m niet eens gebruikt?
Eh?
Ik zou er idd wel van maken (maar zal wel het [ code ]-bugje zijn): Names[ i ] := ...
Maar dan wordt de array als volgt gevuld:

Names[1] := TLabel(FindComponent('Label1');
Names[2] := TLabel(FindComponent('Label2');
enz.

Zo scherp als een voetbal!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Reptile209 schreef op 26 augustus 2002 @ 13:52:
[...]

Boeit niet: ze moeten al op de form staan...
Ja, je hebt gelijk.

Strijkijzer: vertel nou eens even wat je uiteindelijk wilt. Want we kunnen wel blijven raden wat je er me wilt. Anders kunnen we geen antwoord geven.

Je array moet je eerst vullen voordat je m kan gebruiken. TLabel is een pointer naar een label, je moet er nogsteeds een instantie 'in stoppen'.

FindComponent zoekt een TLabel met een bepaalde naam op het form.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Het is me niet geheel duidelijk wat je wilt, maar wellicht heb je wat aan deze code. Ff uit de "losse" hand:

code:
1
2
3
4
5
6
7
8
9
10
11
begin
  for i:= 1 to 24 do
    begin
      Labels[[i]] := TLabel.Create(self);
      with Labels[[i]] do
      begin
        Parent := self;
         //hier ff de properties instellen, zoals hoogte, grootte
      end;
    end;
end;


Natuurlijk wel ff de variabelen declareren, zoals Labels: array[1..24] of TLabel;

Suc6! :)

***Krijg de "I" tussen de blokhaken niet goed***

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 20:22

Reptile209

- gers -

Ziet er goed uit, qua code. Voor Strijkijzer: met de code van ridde100 hoef je de labels dus niet eerst op het form te zetten, itt wat hierboven voor jouw code wel moet.
Verwijderd schreef op 27 augustus 2002 @ 13:30:

***Krijg de "I" tussen de blokhaken niet goed***
Zet er eens spaties omheen, dus [ i ] :)

Zo scherp als een voetbal!


Verwijderd

Dank je wel! :) en dat nog wel uit de losse hand >:)
Voor Strijkijzer: met de code van ridde100 hoef je de labels dus niet eerst op het form te zetten, itt wat hierboven voor jouw code wel moet.
Oftwel: Object is Dynamisch opgebouwd :)
Zet er eens spaties omheen, dus [ i ] :)
Dank je wel voor de tip:)
Pagina: 1