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