Thema: Delphi Komponenten zur Laufzeit

Einzelnen Beitrag anzeigen

LoL
(Gast)

n/a Beiträge
 
#1

Komponenten zur Laufzeit

  Alt 1. Mai 2003, 11:19
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
  Mit Zitat antworten Zitat