Tehnika Krstarice > Programiranje > Delphi - Minimalna i maksimalna veličina forme

Delphi - Minimalna i maksimalna veličina forme

05.10.2001.

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.

Preporučite ovaj članak

Članak još uvek nije ocenjen.