Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TLabel soll in SEINEM Record was ändern (https://www.delphipraxis.net/67481-tlabel-soll-seinem-record-aendern.html)

xZise 15. Apr 2006 10:02


TLabel soll in SEINEM Record was ändern
 
Ich habe ein Record mit TLabels und ein paar anderen "gedönst" ;)

Delphi-Quellcode:
var RData : array [1..6] of array [1..20] of record
  LData        : TLabel;
  Clicked, Used : Boolean;
  Points       : Byte;
  Index        : TPoint;
end;
Nun möchte ich, dass wenn auch LData geklickt wird (LData ist im Sender), das in seinem Record das Clicked geändert wird:

Delphi-Quellcode:
(Sender as TLabel).{Sein Record}.Clicked := true;
Muss jetzt anstelle von {Sein Record} ein "Parent" rein? Dann würde aber die Form kommen, wenn mich nicht alles irrt (Zeile 8!):

Delphi-Quellcode:
{Im OnCreate}
  for i := 1 to 6 do
    for j := 1 to 20 do begin
      RData[i][j].LData := TLabel.Create(self);
      with RData[i][j] do begin
        with LData do begin
          Caption := '0';
          Parent := FKniffel; //Hier steht die Form
          case j of
            1..8  : begin
              ManTop := 16;
              Tag := j;
            end;
            9..16 : ManTop := 32;
            17    : ManTop := 48;
            18    : ManTop := 40;
            19    : ManTop := 32;
            20    : ManTop := 30;
          end;
          Top := ManTop + j * 24;
          Left := 72 + i * 32;
          OnClick := LDataClick;
        end;
        Points := 0;
        Used := false;
        Clicked := false;
        Index := Point(i,j);
      end;
    end;

3_of_8 15. Apr 2006 10:05

Re: TLabel soll in SEINEM Record was ändern
 
Bastel dir lieber ne Klasse für sowas...

Ansonsten könntest du nen Pointer auf das Record im Tag des Labels speichern und dann wieder auslesen.

mkinzler 15. Apr 2006 10:09

Re: TLabel soll in SEINEM Record was ändern
 
Ich würde im Ldata.tag die Indizes des Rdata-Record ablegen in der Form
Delphi-Quellcode:
.Tag := x*100+y;
. Den wert kannst du beim onClick dann mit
Delphi-Quellcode:
Tag DIV 100
bzw
Delphi-Quellcode:
Tag MOD 100
wieder auflösen.

faux 15. Apr 2006 10:12

Re: TLabel soll in SEINEM Record was ändern
 
Also ich finde 3_of_8s Lösung etwas einfacher und vorallem effektiver. Wenn du dir keine eigene Klasse bauen willst, kannst du ja, wie 3_of_8 schon sagte, einen Pointer auf den Record im Tag des Labels speichern.

Grüße
Faux


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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