wysokość i szerokość formy sprzed maksymalizacji

0

Z jakiej właściwości formy odczytać jej wysokość i szerokość z trybu wsNormal, jeżeli okienko jest zmaksymalizowane?

0
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientHeight //wysokosc
ClientWidth //szerokosc
Form1.WindowState := wsMaximized;
end;

Nie do końca wiem czy o to chodziło ;P

0

Nie zupełnie.
Chcę w momencie zamykania aplikacji, zapamiętywać w pliku ini szerokość i wysokość formy, a w momencie uruchamiania aplikacji zaczytać z pliku wysokość i szerokość, przywracając ustawienia. Chcę pamiętać szerokości i wysokości przed maksymalizacja.

procedure TFSzukaj.FormShow(Sender: TObject);
var
ini: TIniFile;
begin
try
dbgLista.Columns.LoadFromFile(StartingDirectory + 'dbgLista.col');
except
end;
ini:= TIniFile.Create(StartingDirectory+INI_FORM);
FSzukaj.Height:= StrToInt(ini.ReadString('form','height','180'));
FSzukaj.Width:= StrToInt(ini.ReadString('form','width','200'));
ini.Free;
end;

procedure TFSzukaj.FormClose(Sender: TObject; var Action: TCloseAction);
var
ini: TIniFile;
begin
dbgLista.Columns.SaveToFile(StartingDirectory+'dbgLista.col');
ini:= TIniFile.Create(StartingDirectory+INI_FORM);
ini.WriteString('form','height',IntToStr(FSzukaj.Height));
ini.WriteString('form','width',IntToStr(FSzukaj.Width));
ini.Free;
end;

Wszystko jest ok, jeśli zamykam okienko jeśli jest w stanie wsNormal, jednak jesli jest w stanie wsMaksimized, zapisują się "pełnoekranowe" wymiary.

0
iroquoai napisał(a)

FSzukaj.Height:= StrToInt(ini.ReadString('form','height','180'));
FSzukaj.Width:= StrToInt(ini.ReadString('form','width','200'));
...
ini.WriteString('form','height',IntToStr(FSzukaj.Height));
ini.WriteString('form','width',IntToStr(FSzukaj.Width));

a nie lepiej zrobić tak

FSzukaj.Height:= ini.ReadInteger('form','height',180);
FSzukaj.Width:= ini.ReadInteger('form','width',200);
...
ini.WriteInteger('form','height',FSzukaj.Height);
ini.WriteInteger('form','width',FSzukaj.Width);

Jeśli nie chodzi o to to ja sie poddaje.

A co do probelmu daj dwie zmienne globalne aWidth, aHeight : Integer;

potem w CanResize formy daj

aWidth := NewWidth;
aHeight := NewHeight;

i w onclose formy zamiast

ini.WriteInteger('form','height',FSzukaj.Height);
ini.WriteString('form','width',FSzukaj.Width);

daj

ini.WriteInteger('form','height',aHeight);
ini.WriteInteger('form','width',aWidth;
0

po prostu przed zapisaniem wielkości okna, na szybko "przywróć" okno

0

Rzeczywiście, pomogło przywrócenie okna przed zamknięciem.
I teraz mam:

FSzukaj.Height:= ini.ReadInteger('form','height',180);
FSzukaj.Width:= ini.ReadInteger('form','width',200);
...
ini.WriteInteger('form','height',FSzukaj.Height);
ini.WriteInteger('form','width',FSzukaj.Width);

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