Tipy a triky v Delphi, díl 78.

Dnes si budeme hrát s animovanými kurzory myši a také se naučíme další trik se schránkou Windows.

Použití animovaného kurzoru

Jestliže chcete vaši aplikaci graficky opravdu vyšperkovat, určitě se nespokojíte s kurzory, které používá samotný systém, ale můžete si vytvořit či stáhnout kurzory jiné (řeč je teď o ukazatelích myši, tedy šipka, přesýpací hodiny atd..). Obzvlášť efektně mohou zapůsobit kurzory animované a jejich použití si právě nyní ukážeme. Ne že bych snad byl nějaký jejich příznivce, osobně nic proti obyčejným systémovým kurzorům nemám, ale jsou jisté typy aplikací, kde se podobné efekty mohou hodit.

Tak tedy, celá záležitost je vlastně velmi jednoduchá a vše pochopíte z následujícího kratičkého příkladu. Jedná se klasicky o událost stisku tlačítka jak jsme v našich ukázkách zvyklí a po jeho stisknutí se změní typ kurzoru pro formulář aplikace. Ale pozor, pouze pro formulář a všem ostatním objektům (tedy i samotnému tlačítku) zůstane kurzor původní. Můžete tak každému jednotlivému objektu přiřadit jiný typ kurzoru.

procedure TForm1.Button1Click(Sender: TObject);
var
  CurHandle: THandle;
begin
  CurHandle := LoadImage(0, `C:\windows\cursors\Hourglas.ani`, IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE or LR_LOADFROMFILE);
  if CurHandle = 0 then ShowMessage(`Chyba! Kurzor nebyl načten!`)
  else
    begin
      Screen.Cursors[1] := CurHandle;
      Form1.Cursor := 1;
    end;
end;

Jak vidíte, je třeba pochopitelně přesně specifikovat cestu k příslušnému souboru .ani, který kurzor obsahuje. V naší ukázce je použit kurzor animovaných přesýpacích hodin, které jsou přímo součástí Windows (zde konkrétně Windows 98). Cestu si tedy upravte podle potřeby.

Seznam souborů ve schránce

Druhý dnešní tip bude zase z jiného soudku. Ukážeme si, jak ze schránky získat seznam souborů, které obsahuje. Pokud si v Průzkumníku nebo jiném souborovém správci označíte jeden či více souborů a zkopírujete je do schránky, nebude do schránky zkopírován obsah těchto souborů, ale pouze jejich cesty. Když poté použijete kdekoliv na disku příkaz "Vložit", systém se pouze podívá do schránky na uložené cesty a soubory ze zdroje prostě zkopíruje. Tím se šetří čas a data se přesouvají pouze jednou. Má to bohužel ten vedlejší efekt, že pokud stihnete soubor ze zdrojového umístění smazat či přesunout ještě před tím, než použijete příkaz "Vložit", dojde k chybě. Ale zpět k našemu příkladu. Abychom mohli implementovat cosi jako vlastní příkaz "Vložit", budeme potřebovat znát seznam souborů ve schránce i s jejich cestami. A to si právě teď ukážeme.

Příklad je opět vytvořen jako událost stisku tlačítka, takže jej přidejte na formulář a kód vložte do události OnClick. Ještě přidejte na formulář komponentu Memo, do které bude seznam souborů vypsán. Příklad dále využívá jednotek Clipbrd a ShellAPI, takže je nezapomeňte přidat do seznamu.

procedure TForm1.Button2Click(Sender: TObject);
var
  f: THandle;
  buffer: array [0..MAX_PATH] of Char;
  i, numFiles: Integer;
begin
  if not Clipboard.HasFormat(CF_HDROP) then Exit;
  Clipboard.Open;
  try
    f := Clipboard.GetAsHandle(CF_HDROP);
    if f <> 0 then
    begin
      numFiles := DragQueryFile(f, $FFFFFFFF, nil, 0);
      Memo1.Clear;
      for i := 0 to numfiles - 1 do
      begin
        buffer[0] := #0;
        DragQueryFile(f, i, buffer, SizeOf(buffer));
        Memo1.Lines.Add(buffer);
      end;
    end;
  finally
    Clipboard.Close;
  end;
end;

Takto získaný seznam pak můžete použít k práci s danými soubory, ale nezapomeňte vždy testovat jejich skutečnou existenci kvůli způsobu práce se schránkou popsaným výše.

Váš názor Další článek: Easy CD&DVD Creator 6 dostupný

Témata článku: Software, Windows, Programování, Exit, Systémová schránka, Díl, Trik, Cesta


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

Vylaďte si Wi-Fi: Podívejte se, jaká pásma máte doma volná a kam signál nedosáhne

Vylaďte si Wi-Fi: Podívejte se, jaká pásma máte doma volná a kam signál nedosáhne

** Prozkoumejte, jaké pásmo je pro vaši síť nejlepší ** Díky heat mapě snadno poznáte, kde to bude se signálem horší ** Vše zvládnete i z mobilního telefonu

Vladislav Kluska | 36

Google má nové telefony, počítač a domácí displej. Česko je stále mimo

Google má nové telefony, počítač a domácí displej. Česko je stále mimo

** Google dnes představil novinky ** Dočkali jsme se nového telefonu Pixel 3, tabletopočítače a domácího displeje ** Rozšíření Google Assistenta do dalších zemí se bohužel nekoná

David Polesný | 45

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

Portál občana už funguje. Na státní web vypadá až překvapivě použitelně

** Portál občana už funguje, vyřídíte na něm první požadavky ** Funkce se budou postupně rozšiřovat ** Web je docela moderní a přehledný

David Polesný | 66

Nový iPhone a další novinky Applu: sledujte, na co se zase budou stát fronty

Nový iPhone a další novinky Applu: sledujte, na co se zase budou stát fronty

** Apple dnes představuje nové produkty v čele s novými iPhony ** Nemusí zůstat jen u telefonů, čekají se i další novinky ** Úvodní přednáška začíná v 19:00 našeho času

David Polesný | 57

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

Tohle tak jednou zažít: Nová vzducholoď Airlander 10 s prosklenou podlahou

** Airlander 10 nabídne plavby vzduchem v interiéru s prosklenou podlahou ** Luxusní vzducholoď byla původně vyvíjena pro vojenské účely ** Počítá se s třídenními „kochacími“ výlety za poznáním

Karel Kilián | 7


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