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:
- Kreirajte novi projekat sa praznom formom i dajte mu naziv npr. MINMAX.DPR. Dajte naziv i jedinici koda (unit-u) npr. MINMAX.PAS.
- Podesite osobine forme na sledeći način:
Caption "Min/Max Forma"
Height 131
Left 285
Top 192
Width 250
- 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;
- 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.
- 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.