Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#8

AW: Konstantenausdruck erwartet

  Alt 28. Jan 2019, 10:56
Wenn ich mehrere Sachen auf ein Panel pappe (automatisch) und zwischen Panelrand und Element ein Platz sein soll, dann setze ich im Panel zuerstmal BorderWidth auf 4. Man kann aber auch mehr oder weniger nehmen.

Dann werden die Elemente (meist Speedbuttons) mit Align := alTop "nach oben" gesetzt. Da das aber zu einer "umgekehrten" Reihenfolge führt, setzte ich Top dann auf die Höhe des Panels. Durch diese Kombination werden die Elemente schön von oben nach unten auf dem Panel angeordnet. Sollte eigentlich auch mit jedem anderen Container funktionieren.

Und das Panel hat bei mir immer die Breite, die die Elemente haben sollen + 2 * den Wert, den ich bei BorderWidth haben möchte. Ggfls. wird das Panel mit diesen Abmaßen dann auf einen anderen Container gepappt, um an die "richtige" Position zu kommen.

ungefähr sowas:
Delphi-Quellcode:
procedure TRadioButtonsFrame.RadioButtonPosition2;
  var i, x: Integer;
begin
  PnlRadioButtons.BorderWidth := (PnlRadioButtons.ClientWidth - FRadioButtonList.Items[0].Width) div 2;
  x := FRadioButtonList.Count - 1;
  For i := 0 to x do
  begin
    FRadioButtonList.Items[i].Top := PnlRadioButtons.Height;
    FRadioButtonList.Items[i].Align := alTop;
  end;
end;
Da in der Regel das letzte Element, das per Align := alTop eingefügt wird, ganz oben landet, kann man die Reihenfolge beim Ordnen auch einfach umkehren:
Delphi-Quellcode:
procedure TRadioButtonsFrame.RadioButtonPosition2;
  var i, x: Integer;
begin
  PnlRadioButtons.BorderWidth := (PnlRadioButtons.ClientWidth - FRadioButtonList.Items[0].Width) div 2;
  x := FRadioButtonList.Count - 1;
  for i := x downto 0 do FRadioButtonList.Items[i].Align := alTop;
end;
Kommt dabei jetzt das raus, was Du Dir vorstellst?
  Mit Zitat antworten Zitat