Delphi – Minimalna i maksimalna veličina forme

Većina korisnika traži posebna podešavanja interfejsa aplikacija. Kada se kaže podešavanje interfejsa, ovo se posebno odnosi na veličinu formi. U slučaju da ih napravite malim, na ekranima manje dijagonale izgledaće dosta nepregledno, isto važi i u suprotnom slučaju kada imate velike forme. Svaki programer gleda da udovolji korisnicima njegovih aplikacija, pa zašto im onda ne pružiti malo više fleksibilnosti u pogledu podešavanja i veličine formi.

Navedeni problem možete rešiti limitiranjem maksimalne i/ili minimalne veličine forme. Ovo nije previše komplikovano, ali lako možete zalutati u Delphi-ju tražeći odgovarajuću soluciju. Odgovor leži u korišćenju Windows API poruke wm_GetMinMaxInfo. Postavljanjem vrednosti tako da odgovaraju na ovu poruku, prebacujete celo upravljanje na sam Windows. Ispratite sledeće korake i pronaći ćete rešenje navedenog problema:

  1. Kreirajte novi projekat sa praznom formom i dajte mu naziv npr. MINMAX.DPR. Dajte naziv i jedinici koda (unit-u) npr. MINMAX.PAS.
  2. Podesite osobine forme na sledeći način:


    Caption „Min/Max Forma“
    Height 131
    Left 285
    Top 192
    Width 250

  3. Unutar deklaracione sekcije forme dodajte proceduru za upravljanje porukom, za poruku wm_GetMinMaxInfo:


    type
    TForm1 = class(TForm)
    private
    { Private declarations }
    procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
    message WM_GETMINMAXINFO;
    public
    { Public declarations }
    end;

  4. Naredni programski kod dodajte u implementacionu sekciju forme:


    implementation

    {$R *.DFM}

    { Odgovor na poruku, i podesavanje vrednosti po potrebi… }

    procedure TForm1.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);
    var
    MinMax: PMinMaxInfo;
    begin
    inherited;
    MinMax := Message.MinMaxInfo;

    MinMax^.ptMaxSize.X := 500;
    MinMax^.ptMaxSize.Y := 500;

    MinMax^.ptMaxPosition.X := 200;
    MinMax^.ptMaxPosition.Y := 200;

    MinMax^.ptMaxTrackSize.X := 300;
    MinMax^.ptMaxTrackSize.Y := 300;

    MinMax^.ptMinTrackSize.X := 200;
    MinMax^.ptMinTrackSize.Y := 200;
    end;

    end.


  5. Na kraju iskompajlirajte projekat i istestirajte ga.
Kada pokrenete projekat i probate da povećate ili smanjite veličinu forme, zapazićete da to možete da izvedete samo do određenih granica. Kako ovo zapravo radi? U osnovi, svaki put kada korisnik izmeni veličinu forme, Windows formi šalje wm_GetMinMaxInfo poruku da bi utvrdio da li postoje neka ograničenja u pogledu smanjenja ili povećanja. Nakon prijema poruke, procedurom odgovaramo koje su to minimalne i maksimalne veličine forme.

Pratite Krstaricu na www.krstarica.com