Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komponenten zur Laufzeit (https://www.delphipraxis.net/4485-komponenten-zur-laufzeit.html)

LoL 1. Mai 2003 11:19


Komponenten zur Laufzeit
 
hallo,

ich erzeuge komponenten vom typ TShape bzw. TLabel zur Laufzeit. ich benötige programmbedingt diese shapes mehrfach. dies geschieht mit folgender prozedur:

Delphi-Quellcode:
procedure draw_marker(x_pos,y_pos : integer; nummer : string; farbe : tcolor);
var sh_kreis : tshape;
    sh_line : tshape;
    lbl_nr  : tlabel;
begin
  sh_line             := TShape.Create(frm_eingabe);
  sh_line.Parent      := frm_eingabe.c_graph;
  sh_line.Height      := 30;
  sh_line.Width       := 1;
  sh_line.Left        := x_pos;
  sh_line.Top         := y_pos - sh_line.Height;
  sh_line.Brush.Color := clblack;

  sh_kreis            := TShape.Create(frm_eingabe);
  sh_kreis.Parent     := frm_eingabe.c_graph;
  sh_kreis.Height     := 17;
  sh_kreis.Width      := 17;
  sh_kreis.Shape      := stcircle;
  sh_kreis.Left       := sh_line.Left-round((sh_kreis.Width-1)/2);
  sh_kreis.Top        := sh_line.Top - sh_line.Height + sh_kreis.Height;
  sh_kreis.Pen.Style  := psclear;
  sh_kreis.Brush.Color := farbe;

  lbl_nr              := tlabel.Create(frm_eingabe);
  lbl_nr.Parent       := frm_eingabe.c_graph;
  lbl_nr.Caption      := nummer;
  lbl_nr.Width        := sh_kreis.Width;
  lbl_nr.Height       := sh_kreis.Height;
  lbl_nr.Top          := sh_kreis.Top+1;
  lbl_nr.Left         := sh_kreis.Left+4;
  lbl_nr.Transparent  := true;

  b_komponenten := true;
end;
beim ereignis 'onresize' möchte ich alle erzeugten shapes löschen. ich verwende 'destroy'. damit kann ich allerdings nur das zuletzterzeugte shape bzw. label löschen. wie kann ich alle erzeugten labels und shapes löschen?

Schon mal danke im vorraus

Christoph

Christian Seehase 1. Mai 2003 11:47

Moin LoL,

da Du selber keine Namen vergibst, müssten die Shapes alle mit Shape1 bis ShapeX (X die höchste Nummer) benannt sein.
Finden solltest Du sie dann mit FindComponent (Beispiele findest Du hier im Forum einige).


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