Powrót z maksymalizacji okna do początkowej formy.

0

Witam.
Mam problem z powrotem do początkowej wielkości okna po maksymalizacji tzn:
Maksymalizuje formularz następnie zamykam go.
Po ponownym otworzeniu formularza chciałbym aby posiadał szerokość,wysokość sprzed maksymalizacji.

Istnieje jakiś inny sposób niż pobranie przy tworzeniu formularza danych a przy zamknięciu ustawienie ich?

0

Najprościej: TFormPlacement/TFormStorage z biblioteki RX, wystarczy rzucić na formatkę.
Są też odpowiedniki w Jedy

0

delphi/systrem nie zapamiętuje tych danych nigdzie automatycznie. Są komponenty, które to robią automatycznie (rzucasz na formę i przy tworzeniu okna odczytuje i ustawia okno jak poprzednio a przy zamykaniu zapisuje) - zapisują np. w rejestrze/bazie danych/plikach. Niestety bawiłem się nimi jakiś czas temu i nie pamiętam jak się nazywają

0

@lukasz_p92 - jeżeli nie chcesz korzystać z dodatkowych komponentów, to po prostu trzymaj gdzieś w pamięci wymiary okna i stan maksymalizacji; Zmieniaj te dane w zależności od akcji użytkownika, a przy zamykaniu programu zapisuj gdzieś (do pliku lub rejestru); Przy rozruchu aplikacji pobieraj i ustawiaj wymiary okna i jeśli trzeba to je maksymalizuj;

W ten sposób ręcznie zrobisz sobie zapamiętywanie, tyle że gdzieś te informacje musisz zapisać.

0

@furious programming a jak sprawić aby formularz nie miał ikony w prawym górnym rogu maksymalizacji(czyli po włączeniu maksymalizacji okna) tylko taki jak przy pierwszym wywołaniu formularza ?

0

Po włączeniu maksymalizacji już nie będzie ikony maksymalizacji, tylko przywracania;

tylko taki jak przy pierwszym wywołaniu formularza ?

A co było "przy pierwszym wywołaniu formularza"? Opisz to jaśniej;


Ewentualnie, jeżeli chcesz zablokować przycisk maksymalizacji podczas działania programu, to można to zrobić tak:

procedure TForm1.btnDisableMaxButtonClick(Sender: TObject);
begin
  SetWindowLong(Self.Handle, GWL_STYLE, GetWindowLong(Self.Handle, GWL_STYLE) and not WS_MAXIMIZEBOX);
  RedrawWindow(Self.Handle, nil, 0, RDW_INVALIDATE or RDW_FRAME or RDW_NOCHILDREN);
end;

Przykład zawiera kod blokujący przycisk maksymalizacji (tylko blokujący, bez ukrywania przycisku) po wciśnięciu przycisku btnDisableMaxButton; Ten kod możesz zastosować gdzie chcesz; Aby z powrotem odblokować przycisk maksymalizacji, użyj poniższego kodu:

procedure TForm1.btnEnableMaxButtonClick(Sender: TObject);
begin
  SetWindowLong(Self.Handle, GWL_STYLE, GetWindowLong(Self.Handle, GWL_STYLE) or WS_MAXIMIZEBOX);
  RedrawWindow(Self.Handle, nil, 0, RDW_INVALIDATE or RDW_FRAME or RDW_NOCHILDREN);
end;

i przycisk znów będzie odblokowany.

0

Właśnie chodzi mi o to aby ikona przywracania została zmieniona na ikonę maksymalizacji.
Gdyż mam formularz w formularzu więc jak zmaksymalizuje drugi formularz i go wyłączę, następnie znowu włączę to chciałbym aby ten formularz miał wymiary początkowe.

Wymiary łatwo zapamiętać w tej sytuacji ale ta ikona przywracania jest pokazana co mi nie pasuję.

2

Oprócz rozmiaru musisz ustawić prawidłowy stan okna (SetWindowState).

0

Ja kiedyś napisałem sobie coś do zapisywania ustawień formatki - do pliku ini lub do rejestru. Oprócz okna aplikacji zapisuje edity, checkboxy, itp. http://programistakuty.pl/zapis-ustawien-formy/

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