Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Alle Kompos "Align"?


Chris1308 - Mo 08.07.02 16:59
Titel: Alle Kompos "Align"?
Hi Leute,
gibt es eine Möglichkeit, allen Komponenten die Eigenschaft "Align" zuzuweisen?
Es wäre nämlich äußert praktisch, wenn folgendes irgendwie gehen würde:

Quelltext
1:
Button1.Align := alBottom;                    

Gibt es da nicht irgendeine Möglichkeit?

Chris1308


chewie - Mo 08.07.02 20:35

Hoi Chris,

Alle Komponenten findest du, indem du über das Komponenten-Array des Formulars iterierst, dabei kannst du auch gleich ein Property setzen.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure TForm1.AlignControls;
var
  iIndex    : Integer;
begin
  for iIndex := 0 to ComponentCount-1 do begin

    // das Property <Align> ist in TControl definiert, Components[]
    // gibt aber TComponent zurück, deshalb überprüfen
    if (Components[iIndex] is TControl) then begin
      (Components[iIndex] as TControl).Align := alBottom;
    end; // if

  end; // for iIndex

end;


Gruss - Jörg


Chris1308 - Mo 08.07.02 21:31

Thx!
Btw: Was tun, wenn ich nur 1 von 3 Buttons auf alBottom setzen will?

Chris1308


chewie - Di 09.07.02 09:28

Dann kannst du versuchen, mit dem <Tag> zu arbeiten (kann im Objekt-Inspektor gesetzt weden). Dies ist ein auf <TObject> definierter Integer, der von Borland nicht gebraucht wird - er steht also in jeder (auch jeder selbst definierten) Klasse zur Verfügung.

Wenn du nun die Buttons, die du ändern willst, z.B. mit einem Tag > 0 markierst, kannst du diese zusätzliche Abfrage einbauen, bevor du <Align> setzt.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  obControl : TControl;
begin
  ...
  if obControl.Tag > 0 then begin
    obControl.Align := alBottom;
  end;
  ...
end;


Gruss - Jörg