Tipy a triky v Delphi, díl 83.

Už jste si zkoušeli vytvořit opravdu maličké okno? Dnes si povíme, jak na to.
Připadá vám úvodní otázka nesmyslná? No jen si to zkuste. Dejme tomu, že potřebujeme vytvořit nějakou speciální aplikaci a chceme zařídit, aby její okno mělo naprosto minimální rozměry, řekněme 50x50 pixelů. Ponechme teď stranou konkrétní praktický smysl takového okna (může obsahovat třeba jen jedno malé tlačítko) a zaměřme se čistě na problém jeho velikosti.

Chceme-li opravdu "klasické" okno, tedy včetně titulkového pruhu, narazíme v Delphi velmi brzy na jeden problém. Totiž dokonce i když vypneme zobrazování ikonek na zavření, minimalizaci a obnovení okna, nepodaří se nám horizontální rozměr okna dostat pod hranici 112 pixelů. Ve vertikálním směru tento problém není a rozměr okna lze zmenšit klidně na nulovou hodnotu (vidět tedy bude jen samotný titulkový pruh). V horizontálním směru se ale pod výše uvedenou hranici prostě nedostanete a to nejen při návrhu aplikace v Delphi IDE, ale i při pokusu vnutit rozměr okna změnou příslušného parametru za běhu aplikace.

Jak z toho ven? Budeme prostě muset systém "přemluvit" a vnutit mu vlastní konstanty pro minimální rozměr okna. A již vás zřejmě nepřekvapí, že i tentokrát k tomu použijeme zprávy systému, konkrétně WM_GETMINMAXINFO.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure GetMinMaxInfo(var Msg: TWMGETMINMAXINFO); message WM_GETMINMAXINFO;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.GetMinMaxInfo(var Msg: TWMGETMINMAXINFO);
begin
  inherited;
  with Msg.MinMaxInfo^ do
  begin
    ptMinTrackSize.X := 0;
    ptMinTrackSize.Y := 0;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  BorderIcons := BorderIcons - [biSystemMenu];
  Width := 50;
  Height := 50;
end;

end.

Zdrojový kód je myslím dostatečně jasný a není třeba moc vysvětlovat. V události OnCreate jsou pro ukázku nastaveny rozměry na slíbených 50x50 (a rovněž zařízeno vypnutí tlačítek na titulkovém pruhu).

Váš názor Další článek: Nové produkty na bázi VoIP od Kerio Technologies

Témata článku: Software, Windows, Programování, Okno, Trik, Klasické okno, Praktický smysl, Díl, Private


Určitě si přečtěte

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

Jak funguje největší akumulátor v Česku: podívejte se do elektrárny Dlouhé Stráně

** Přečerpávací vodní elektrárna Dlouhé stráně je obdivuhodné technické dílo ** Stejná turbína vyrábí elektřinu i tlačí vodu zpět do horního jezera ** Strojovna elektrárny je zabudována v podzemí

David Polesný | 35

Inteligentní akvárium Bluenero se o rybičky postará samo

Inteligentní akvárium Bluenero se o rybičky postará samo

** Chcete chovat akvarijní rybičky, ale nemáte čas se o ně starat? ** Chytré akvárium je samo nakrmí a postará se o jejich komfort ** Projekt Bluenero zatím sbírá finance na Indiegogo

Karel Kilián | 20

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Kde se bere elektřina v zásuvce? Poznejte 10 tajemství venkovních stožárů s dráty

Elektřina se vyrábí v elektrárnách, ale do zásuvek v našich domovech to pak má ještě hodně daleko. Dnes se na tuhle dlouhou cestu podíváme.

David Polesný | 82

Na Zemi je nejtepleji za posledních více než 100 tisíc let. Co nám hrozí?

Na Zemi je nejtepleji za posledních více než 100 tisíc let. Co nám hrozí?

** Letošní červenec byl třetím nejteplejším měsícem od roku 1880 ** Teplota naší planety roste raketovým tempem ** Co lidstvu hrozí v období, které v minulosti nemá obdoby?

Karel Kilián | 70

Solární panely v silnici vypadaly jako dobrý nápad. V praxi se ale neosvědčily

Solární panely v silnici vypadaly jako dobrý nápad. V praxi se ale neosvědčily

** Nápad použít na silnice místo asfaltu solární panely vypadal slibně ** Praktické testy však odhalily celou řadu nevýhod ** Nejhorší je směšná účinnost ve srovnání s fotovoltaickou elektrárnou

Karel Kilián | 62


Aktuální číslo časopisu Computer

Jak vytvořit a spravovat vlastní web

Velký test herních klávesnic a DVB-T2 tunerů

Vše o formátu RAW

Vybíráme nejlepší základní desku