Tipy a triky v Delphi, díl 178. – formulář jako záložka

Dnes si budeme opět hrát se standardními komponentami Delphi a zkusíme si poněkud netradiční kombinaci. Budeme zobrazovat formuláře na záložkách komponenty PageControl.

Pravidelní čtenáři si možná vzpomenou, jak jsme kdysi zkoušeli umístit ProgressBar do tlačítka. Postup byl celkem jednoduchý, stačilo při vytváření ProgressBaru specifikovat vlastníka komponenty, kterým byl v tomto případě Button. O něco podobného se pokusíme i dnes, ale hlavní roli tentokrát budou hrát celé formuláře a komponenta PageControl. Na jednotlivých záložkách budeme zobrazovat formuláře.

Začneme tím, že si založíme nový projekt a kromě hlavního formuláře si vytvoříme i několik dalších formulářů. Na ně pak můžeme umístit libovolné další komponenty, dopsat funkce, prostě cokoliv jsme zvyklí. Teď se vrátíme k hlavnímu formuláři a umístíme na něj PageControl. Ten nám bude sloužit jako hostitel pro jednotlivé formuláře, resp. záložky, které pak budou formuláře obsahovat. Ty budeme vytvářet dynamicky.

Pro naši funkci, kterou uděláme jako událost tlačítka na hlavním formuláři, budeme potřebovat dvě proměnné. První bude formulář, tedy v našem příkladu typu TForm2, což je sekundární formulář, který budeme chtít zobrazit jako záložku. Druhou proměnnou bude samotná záložka, tedy typ TTabSheet, kterou budeme poté zobrazovat v připraveném a dosud prázdném PageControl.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  SheetForm : TForm2;
  Sheet : TTabSheet;
begin
  Sheet := TTabSheet.Create(PageControl1) ;
  Sheet.PageControl := PageControl1;
  SheetForm := TForm2.Create(Sheet) ;
  with SheetForm do
    begin
      Parent := Sheet;
      Align := alClient;
      BorderStyle := bsNone;
      Visible := true;
      Sheet.Caption := Caption;
    end;
  PageControl1.ActivePage := Sheet;
end;

end.

Zbytek kódu už je pak velmi jednoduchý. Vytvoříme nejprve novou záložku na připraveném PageControl. Poté vytvoříme nový formulář typu TForm2 a jako jeho vlastníka a rodičovský objekt určíme právě novou záložku (vlastnost Parent). Pochopitelně můžeme nastavit všechny běžné parametry formuláře. Za zmínku stojí alespoň v příkladu použitý BorderStyle. Pokud jej vynecháte (či nastavíte jinou hodnotu než bsNone), bude na záložce zobrazen formulář celý, tedy včetně titulkového pruhu. Na ten ovšem pozor, protože bude plně funkční, takže uživatel pak může takové "okno v záložce" klidně minimalizovat či zavřít. No a to je vlastně vše. Poslední řádek kódu již jen vytvořenou záložku s formulářem nastaví jako aktivní.

Diskuze (6) Další článek: Canon představuje nové skenery nejvyšší třídy

Témata článku: Software, Windows, Programování, Trik, TRI, DEL, Díl, Záložka, ALCL, Borders, Formulář


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

Deset kotev, které i v roce 2020 táhnou Android ke dnu

Deset kotev, které i v roce 2020 táhnou Android ke dnu

** Android existuje skoro 12 let a za tu dobu v mnoha směrech dospěl ** Dnes běží na sedmi z deseti telefonů, ale čemu za to vděčí? ** Našli jsme 10 kotev, které táhnou tento operační systém ke dnu

Karel Kilián | 155

Galerie: Podívejte se na čínský Linux, se kterým to na svých PC zkusil i Huawei

Galerie: Podívejte se na čínský Linux, se kterým to na svých PC zkusil i Huawei

** Huawei se loni dostal do křížku s USA ** Začal to proto zkoušet s konkurenčním operačním systémem ** Jmenuje se Deepin a před pár dny se dočkal nové verze

Jakub Čížek | 37

PlayStation 5 bude mít extrémně rychlé SSD a promyšlenou architekturu. Sony odhalilo technické detaily

PlayStation 5 bude mít extrémně rychlé SSD a promyšlenou architekturu. Sony odhalilo technické detaily

** Sony zveřejnilo podrobnosti k PlayStationu 5 ** Poprvé jsou k dispozici technické detaily ** Sony se hodně zaměřilo na rychlost SSD

Karel Javůrek | 31


Aktuální číslo časopisu Computer

Megatest 24 PC zdrojů

Jak využít umělou inteligenci

10 špičkových sluchátek s ANC

Playstation 5 vs Xbox Series X