Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi In Laufzeit erstellte Komponenten nach Prozedur ansprechen (https://www.delphipraxis.net/10128-laufzeit-erstellte-komponenten-nach-prozedur-ansprechen.html)

Hazardos 12. Okt 2003 10:15


In Laufzeit erstellte Komponenten nach Prozedur ansprechen
 
Hallo,
ich habe etwa 50 Komponente während der Laufzeit mit einer Schleife erzeugt...
Danach habe ich eine Procedure aufrufen lassen (bspw die OnKlick-procedure).
Darauf wollte ich das Elemetn verändern, bekomme allerdings bei dem Aufruf "self" nur das Huaptformular.
Wer kann mir bei diesem Thema heflen???

nTE 12. Okt 2003 10:19

Re: automatisiert erstellte Komponenten nach Prozedur anspre
 
Weise den erstellten Komponenten doch einen Tag zu (per Schleifenvariable z.B.) und dann verwende
if Sender.Tag = 5 then..
als Beispiel.

Niko 12. Okt 2003 10:32

Re: In Laufzeit erstellte Komponenten nach Prozedur ansprech
 
Self gibt das Objekt zurück, zu dem die Aufgerufene Methode gehört - in deinem Fall also das Hauptformular. Der Parameter Sender verweist auf die aufrufende Komponente.

Hazardos 12. Okt 2003 15:36

Re: In Laufzeit erstellte Komponenten nach Prozedur ansprech
 
Das mit Sender.tag hat nicht funktioniert. er sagt, den Bezeichner .. kennt er nicht!
ich stelle hier einfach mal den Code rein, damit Ihr euch vielleicht mal daran zu schaffen machen könnt, wenn ihr Lust habt.

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
   labels = array [0..25]of array[0..25] of tlabel;
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);

  private
  procedure onlabelmove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  public
  end;

var Strings : labels;
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.onlabelmove (Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
//Showmessage (Sender.tag);
end;

procedure TForm1.FormCreate(Sender: TObject);
var i,j,k :integer;
begin
j:=0;
k:=0;
while (j<26) do begin
i:=0;
while (i<26) do begin
Strings[i][j] := tlabel.Create(self);
strings[i][j].Parent := self;
strings[i][j].Caption := IntToStr(i+j);
strings[i][j].top := i*strings[i][j].Height;
strings[i][j].left := j*20;
strings[i][j].OnMouseMove := onlabelmove;
strings[i][j].Tag := k;
inc (i);
inc (k);
end;
inc (j);
end;


end;
end.

Christian Seehase 12. Okt 2003 15:41

Re: In Laufzeit erstellte Komponenten nach Prozedur ansprech
 
Moin Hazardos,

probier's mal mit (Sender as TLabel).Tag.

Übrigens finde ich Deine Bezeichnerwahl etwas verwirrend. Wer würde hinter Strings ein array of TLabel vermuten?

Hazardos 12. Okt 2003 16:29

Re: In Laufzeit erstellte Komponenten nach Prozedur ansprech
 
Da geb ich dir recht...
War ja auch nur ein flüchtig erstelltes Programm ohne wirklichen Sinn.
Das, was ich wissen möchte, ist für ein anderes Programm notwendig...

Übrigens bedanke ich mich, deine Lösung hat funktioniert!!
Thx
:-D


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