![]() |
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??? |
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. |
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.
|
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. |
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? |
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 12:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz