Einzelnen Beitrag anzeigen

Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Label zur Laufzeiter erstellen-nicht angezeigt auf Group

  Alt 4. Dez 2006, 12:16
repaint hilft auch nicht.

In FormCreate erzeuge ich die Labels
Delphi-Quellcode:
SetLength(a_Lbl,i_LblCnt);
  for i := low(a_Lbl) to high(a_Lbl) do
    begin
      a_Lbl[i] := TLabel.Create(Self);
      a_Lbl[i].Font.Size:= 10;
      a_Lbl[i].Parent := Form2;
      a_Lbl[i].Caption := IniFile.ReadString(sl_Lbl[i],'label text','');
      a_Lbl[i].Left := IniFile.ReadInteger(sl_Lbl[i],'x',8);
      a_Lbl[i].Top := IniFile.ReadInteger(sl_Lbl[i],'y',8);
      //hier rufe ich die Funktion auf und setze das Parent
      CheckAndSetLabelParent(a_Lbl[i],a_Gbx);
    end;

In der Funktion setze ich das PArent
Delphi-Quellcode:
procedure TForm2.CheckAndSetLabelParent(var lb_Temp : TLabel; a_GbxTemp : GbxArray);
var
  i_GbX : Integer;
  i_GbY : Integer;
  i_GbH : Integer;
  i_GbB : Integer;
  x : Integer;
  y : Integer;
  i : Integer;
begin
  //alle vorhandenen Groupboxen durch gehen
  for i := low(a_GbxTemp) to high(a_GbxTemp) do
    begin
      i_GbX := a_GbxTemp[i].Left;
      i_GbY := a_GbxTemp[i].Top;
      i_GbH := a_GbxTemp[i].height + i_GbY;
      i_GbB := a_GbxTemp[i].width + i_GbX;
      //prüfen, in welche groupbox das Label gehört
      if (lb_Temp.Left >= i_GbX) and (lb_Temp.Left<= i_GbB) and (lb_Temp.Top >= i_GbY) and (lb_Temp.Top<= i_GbH) then
        begin
          lb_Temp.Left := lb_Temp.Left - a_GbxTemp[i].Left;
          lb_Temp.Top := lb_Temp.Top - a_GbxTemp[i].Top;
          lb_Temp.Parent := a_GbxTemp[i];
          lb_Temp.BringToFront;
        end
      else
        lb_Temp.Parent := Form2;
    end;
end;
Susanne
  Mit Zitat antworten Zitat