Z jakiej właściwości formy odczytać jej wysokość i szerokość z trybu wsNormal, jeżeli okienko jest zmaksymalizowane?
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
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.
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;
po prostu przed zapisaniem wielkości okna, na szybko "przywróć" okno
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);