TButton a Windows Vista

vložil Radek Červinka 11. července 2011 00:48

I tak klasická komponenta jako je TButton se dá vylepšit. V novějších Delphi (nevím zda i v D2009, ale v D2010 ano) se TButton dočkal rozšíření.

TButton

Většina věcí je bohužel jen pro Windows XP nebo Vista plus. Ale přesto.

Ikony

Nově lze specifikovat ikonu, která je použita z asociovaného ImageListu, a dá se umístit do 5 pozic za pomocí ImageAligment. Kromě toho se dá specifikovat další ikony pro různé stavy tlačítka. Přesná pozice se dá specifikovat za pomocí ImageMargins.

Styl

Nově se dá specifikovat styl tlačítka: kromě klasického tlačítka i tlačítko s rozbalovacím menu (viz. obrázek) nebo "Command". Styl je specifikován přes style. V případě Command módu je automaticky použita zelená šipka (pokud nepřiřadíte jinou ikonu) a navíc se dá specifikovat další text (psaný menším písmem) přes CommandLinkHint.

Elevate

Ve Vista GUI dokumentu je specifikováno, že tlačítko, které potřebuje vyšší práva musí být označeno štítem (jako na obrázku). To se dá jednoduše provést nastavením property ElevationRequired. V tom případě jsou ignorovány specifikované ikony.

Takové tlačítko se dá pak použít např. takto:

Elevate application

uses
  ShellAPI;

function RunAsAdmin(hWnd: HWND; filename: string; Parameters: string): Boolean;
var
    sei: TShellExecuteInfo;
begin
    ZeroMemory(@sei, SizeOf(sei));
    sei.cbSize := SizeOf(TShellExecuteInfo);
    sei.Wnd := hwnd;
    sei.fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_FLAG_NO_UI;
    sei.lpVerb := PChar('runas');
    sei.lpFile := PChar(Filename); // PAnsiChar;
    if parameters <> '' then
        sei.lpParameters := PChar(parameters); // PAnsiChar;
    sei.nShow := SW_SHOWNORMAL; //Integer;

    Result := ShellExecuteEx(@sei);
end;


procedure TForm2.Button2Click(Sender: TObject);
begin
  RunAsAdmin(Application.Handle, 'notepad.exe', '');
end;

Odkazy: Elevate application on Vista with JWSCL nebo PDF (Fredrik Haglund - Developer Evangelist)

Tagy:

Novinky v Delphi

Komentáře

12.7.2011 16:30:17 #

Tomas Hruska

Je to už od Delphi 2009 - viz. skvělý Building User Interfaces with Delphi 2009 od Marco Cantù. Ještě bych doplnil, že pokud Style nastavíte na bsSplitButton a přiřadíte popMenu, máte tlačítko s dropDown menu. Na formuláři je tahle verze vidět, ale v textu není popsána.

Hezký den --

Tomas Hruska

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců