Maksymalizowanie Formy

0

Jak po kliknięciu na Button sprawić aby forma i wszystkie znajdujące się na niej elementy powiększyły się wprost proporcjonalnie do Formy

Za posty z góry dzięki [cya]

0

z FORMA RZECZ PROSTA I ŁATWA BO PISZESZ PO PROSTU
WINDOWSTATE:=wsMaximized;
I CI POWIEKSZY NA MAKSA FORME . JEDNAK NIESTETY nie wiem jak uzyskać efekt propolcjonalności . No ale i samo to dobre no nie :D :-)

0

Pacnij buttona na forme i go tak oprogramuj dla zdarzenia onClick;

procedure TForm1.Button1Click(Sender: TObject);
var
I, w1, h1, w2, h2 : Integer;
begin
w1 := Form1.ClientHeight;
h1 := Form1.ClientHeight;
Form1.WindowState := wsMaximized;
w2 := Form1.ClientWidth;
h2 := Form1.ClientHeight;
for I := 0 to ComponentCount - 1 do
begin
if (Components[I] is TButton) then
begin
(Components[I] as TButton).Width := (Components[I] as TButton).WidthRound(w2/w1);
(Components[I] as TButton).Height := (Components[I] as TButton).Height
Round(h2/h1);
(Components[I] as TButton).Left := (Components[I] as TButton).LeftRound(w2/w1);
(Components[I] as TButton).Top := (Components[I] as TButton).Top
Round(h2/h1);
end;
if (Components[I] is TShape) then
begin
(Components[I] as TShape).Width := (Components[I] as TShape).WidthRound(w2/w1);
(Components[I] as TShape).Height := (Components[I] as TShape).Height
Round(h2/h1);
(Components[I] as TShape).Left := (Components[I] as TShape).LeftRound(w2/w1);
(Components[I] as TShape).Top := (Components[I] as TShape).Top
Round(h2/h1);
end;
end;
end;

Jak pewnie zauwazlyes sa oprogramowane tylko 2 typy komponentow: TButton i TShape. Tak wiec jesli na formie bedziesz mial komponent innego typu to bedziesz musial sobie dopisac ten algorytm dla tego typu komponentow.

BTW. Napisalem w taki psosob ten algorytm a nie inaczej, poniewaz jesli na formie bylby komponent typu np. TTimer (ktoremu oczywiscie nie da sie zmienic rozmiarow) to wywalilo by blad.

BTW2. Stepien: cool sygnaturka:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1