Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#76

AW: Objekte zur Laufzeit erzeugen

  Alt 22. Jun 2014, 21:10
Ich muss mich hier noch einmal melden Jetzt stehe ich vor dem Problem das wenn ich die Form resizee bleiben die Buttons so in der Scrollbox wie sie auch erstellt wurden. Wie könnte ich es schaffen sie auszurichten ohne das sie ständig neu generiert werden müssen?
Wenn du deine visuellen Objekte in einer Objektliste verwaltest, mußt du doch nur die Objektliste durchgehen und die Position der Objekte neu berechnen. Ich mache das in meiner HTML-Template-Verwaltung eigentlich ganz einfach:
Delphi-Quellcode:
Function TVorschau.ZeichneBilder : Boolean;
Var
  x,y,
  i,z : Integer;
  Obj : TBild;

begin
  x := Allg.Bild_Abstand;
  y := Allg.Bild_Abstand;
  z := BList.Count;

  Try
    IF z > 0 THEN
    FOR i := 0 TO z-1 DO
    BEGIN
      Obj := BList[i];
      Obj.Bild.Left := x;
      Obj.Bild.Top := y;
      Obj.Bild.Width := Allg.Bild_Breite;
      Obj.Bild.Height := Allg.Bild_Hoehe;
      Obj.Bild.Visible := True;

      Obj.Titel.Font := VPanel.Font;
      Obj.Titel.Color := Allg.BildTitel_Farbe;
      Obj.Titel.Width := Allg.Bild_Breite;
      Obj.Titel.Height := Allg.BildTitel_Hoehe;
      Obj.Titel.Left := Obj.Bild.Left;
      Obj.Titel.Top := Obj.Bild.Top + Allg.Bild_Hoehe;
      Obj.Titel.ShowHint := True;
      Obj.Titel.Visible := True;

      x := x + Allg.Bild_Breite + Allg.Bild_Abstand;
      IF x > (VPanel.ClientWidth - Allg.Bild_Breite - Allg.Bild_Abstand) THEN
      BEGIN
        x := Allg.Bild_Abstand;
        y := y + Allg.Bild_Abstand + Allg.Bild_Hoehe + Allg.BildTitel_Hoehe;
        IF VPanel.Height < (y + Allg.Bild_Abstand + Allg.Bild_Hoehe + Allg.BildTitel_Hoehe) THEN
           VPanel.Height := VPanel.Height + Allg.Bild_Abstand + Allg.Bild_Hoehe + Allg.BildTitel_Hoehe;
      END;
    END;

    Result := True;
  Except
    Result := False;
  End;
end;
Das Ergebnis ist durchaus zufriedenstellend, wie das angehängte Bild zeigt:
Miniaturansicht angehängter Grafiken
templatervorschau.jpg  
  Mit Zitat antworten Zitat