Avatar billede koonz Nybegynder
26. februar 2011 - 18:21 Der er 2 kommentarer og
1 løsning

Skrive til komponentnavne....

Jeg har et Array [1..20] Of String;

Den vil jeg gerne have skrevet til 20 labels
Min ide var at kalde dem lblNummer1 , lblNummer2, osv.

For derefter at kunne lave noget med

lblNummer1+[i].Caption := astr[i];

Jeg kan ikke huske hvordan det gøres...hjælp!!
Avatar billede hrc Mester
26. februar 2011 - 18:30 #1
Brug
var
  Component: TComponent;
begin
  ..
  Cmponent := FindComponent(lblNummer1+[i]);
  if assigned(Component) and (Component is TLabel) then
    Component.Caption := astr[i];
end;

... men det er noget værre fusk.
Avatar billede hrc Mester
26. februar 2011 - 18:38 #2
Hvis du havde en TStringList kunne det gøres mere elegant - ikke meget, men mindre risikobetonet. I mine øjne er det næsten en dødssynd at basere programmeringen på at en komponent ikke skifter navn. Bevares, der er værre synder: Eksempelvis at sende X-faktor og deslige på alle TV-kanaler en fredag.

uses
  ContNrs;

private
  fList: TObjectList;

OnCreate:

  fList := TObjectList.Create(false);
  try
    fList.Add(Label1); 
    fList.Add(Label2);
    fList.Add(Label3);
    ...

OnDestroy:
  fList.Free;

For at sætte en label:

procedure TForm1.SetLabel(aIndex: integer; aText: string; var
  lbl: TLabel;
begin
  lbl := fList[aIndex] as TLabel;
  lbl.Caption := aText;
end
Avatar billede koonz Nybegynder
26. februar 2011 - 19:21 #3
Ja...Det er ikke lige det smukkeste programmering....

Lige pt. er det en nødløsning på en rapport der senere skal placeres i en DB.

Det virker super, med lidt omskrivning - tusinde tak :-D

For i := 1 to 20 do
  begin
    Component := FindComponent('lblRapArt'+IntToStr(i));
    if assigned(Component) and (Component is TppLabel) then
      TppLabel(Component).Caption := aweeklines[i].Art;
  end;
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester