![]() |
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:
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?
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; Schon mal danke im vorraus Christoph |
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 14:06 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