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í.
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)