Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleife für Label-Zuweisung (https://www.delphipraxis.net/72323-schleife-fuer-label-zuweisung.html)

the_source 28. Jun 2006 16:06


Schleife für Label-Zuweisung
 
hallo,

ich hab ein Array, aus dem die Werte der Reihe nach ausgelesen werden und dann auf dazugehörige Labels geschrieben werden.
Delphi-Quellcode:
OutA.Caption:= IntToStr(countArray[65]);
OutB.Caption:= IntToStr(countArray[66]);
OutC.Caption:= IntToStr(countArray[67]);
usw...

Wie kann ich daraus eine Schleife machen, sodass ich nicht alle einzeln angeben muss?

Danke im Voraus

MfG
the_source

Nikolas 28. Jun 2006 16:10

Re: Schleife für Label-Zuweisung
 
Such mal nach Findcomponent und chr/ord. Damit kannst du alles in einen Ausdruck schreiben.

Go2EITS 28. Jun 2006 16:11

Re: Schleife für Label-Zuweisung
 
Willst Du es so?

Procedure MeinVorschlag;
VAR I:integer;
Begin
for I=65 to 67 do Form1.OutC.Caption:= IntToStr(countArray[i]);
END;


GotoEits

Nikolas 28. Jun 2006 16:22

Re: Schleife für Label-Zuweisung
 
Was würde das denn bringen? Die Schleife ist nutzlos. Im Endeffekt hast du nur im C-Label den passenden Wert stehen und die anderen beiden überhaupt nicht angesprochen.

Go2EITS 28. Jun 2006 16:26

Re: Schleife für Label-Zuweisung
 
@Toxman
Habe ich auch gerade gesehen...

DGL-luke 28. Jun 2006 16:29

Re: Schleife für Label-Zuweisung
 
Findcomponent würd ich da nicht hernehmen! ich würd die in einen array stecken:



Delphi-Quellcode:
var Labels: array[0..xxx] of TLabel;

procedure Labelset;
begin
  Labels[0] := LabelA;
  Labels[1] := LabelB;
  ...
  ...
end;

procedure Labelwrite;
var i: Integer;
begin
  for i := 0 to high(Labels) do
    Labels[i].Caption := cpations[i];
end;

Helmi 28. Jun 2006 16:39

Re: Schleife für Label-Zuweisung
 
Zitat:

Zitat von DGL-luke
Findcomponent würd ich da nicht hernehmen! ich würd die in einen array stecken:



Delphi-Quellcode:
var Labels: array[0..xxx] of TLabel;

procedure Labelset;
begin
  Labels[0] := LabelA;
  Labels[1] := LabelB;
  ...
  ...
end;

procedure Labelwrite;
var i: Integer;
begin
  for i := 0 to high(Labels) do
    Labels[i].Caption := cpations[i];
end;

Und wie kommst du dann wieder zurück auf LabelA, etc?

Aber, wie wäre es, die Labels einfach zur Laufzeit zu erzeugen?

DGL-luke 28. Jun 2006 18:26

Re: Schleife für Label-Zuweisung
 
Wieso zurückkommen? LabelA ist nichts anderes als ein 32bit-Speicherbereich, in dem die Adresse einer TLabel-Instanz steht. Du kannst gerne auch so machen:

Delphi-Quellcode:
var labels: array['A'..'Z'] of TLabel;

labels['A'].Caption := blablabla....

Quick_silver 28. Jun 2006 20:19

Re: Schleife für Label-Zuweisung
 
Ich hatte mal ein ähnliches Problem. Ich habe die Labels dann zur Laufzeit generiert. Das ganzeim Array. Im Prinzip ist es wie die Zuweisung in ein Array, nur das man auch die Initialisierung in einer Schleife ausführen kann. Genauen Code habe ich leider nicht zur Hand.

Sharky 29. Jun 2006 07:33

Re: Schleife für Label-Zuweisung
 
Hai,

wenn eh ein Array da ist kann ich dort doch auch gleich die Werte und die Labels ablegen.
Delphi-Quellcode:
type
  TCounterRecord = record
    Counter: Integer;
    CounterLabel: TLabel;
  end;

var
  CounterArray: array[1..10] of TCounterRecord;

procedure TDemoForm.btn_testClick(Sender: TObject);
var
  ndx: Integer;
begin
  for ndx := Low(CounterArray) to High(CounterArray) do
  begin
    with CounterArray[ndx] do
    begin
      CounterLabel.Caption := IntToStr(CounterArray[ndx].Counter);
    end;
  end;
end;

procedure TDemoForm.FormCreate(Sender: TObject);
var
  ndx: Integer;
begin
  CounterArray[1].CounterLabel := Label1;
  CounterArray[2].CounterLabel := Label2;
  CounterArray[3].CounterLabel := Label3;
  CounterArray[4].CounterLabel := Label4;
  CounterArray[5].CounterLabel := Label5;
  CounterArray[6].CounterLabel := Label6;
  CounterArray[7].CounterLabel := Label7;
  CounterArray[8].CounterLabel := Label8;
  CounterArray[9].CounterLabel := Label9;
  CounterArray[10].CounterLabel := Label10;

  for ndx := 1 to 10 do
    CounterArray[ndx].Counter := ndx;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz