Otázky a odpovědi

V této rubrice najdete odpovědi na své otázky, které můžete zasílat na adresu vbtipy@seznam.cz. Pokud nebudeme znát odpověď na nějakou otázku, objeví se v části Otázky bez odpovědi a budete-li znát odpověď vy, můžete nám ji pomocí výše uvedené adresy zaslat, rádi ji zveřejníme.

Otázky a odpovědi

Otázky bez odpovědi

Otázky a odpovědi

  Potřebuji dát uživateli na výběr font. Chtěl jsem pro to použít CommonDialog, ale po spuštění metody ShowFont mi vyskočí okno s chybou "Nejsou nainstalována žádná písma ...", což je samozřejmně nesmysl.

Před zobrazením okna s fonty musíte vždy nastavit vlastnost Flags a to na ty fonty, které chcete používat. Jestli pro tiskárnu, obrazovku nebo obojí, tzn. cdlCFPrinterFonts, cdlCFScreenFonts nebo cdlCFBoth. Fonty, které umí obrazovka, totiž ne vždy umí i tiskárna, speciální případ je např. Obecná nebo textová tiskárna, ta umí pouze jeden font.


  Můžete mi prosím poradit, jak zapisovat položky do registru v systému Windows 95.

Visual Basic má čtyři funkce pro práci s registrem. GetSetting čte hodnoty z registru, GetAllSettings stejně tak, ale více hodnot naráz, DeleteSetting maže hodnoty a SaveSetting ukládá. Tyto funkce však neumožňují vybrat větev v registru, kam chcete hodnoty uložit. Vždy ukládají do HKEY_CURRENT_USER\Software\VB and VBA Program Settings. Pokud chcete pracovat s registrem více, musíte použít API funkce. Pokud je budete chtít použít, zkopírujte si modul, který vám pro začátek pomůže. Obsahuje několik funkcí pro práci s registrem. Přesný popis a použití API pro registr najdete v MSDN.


  Vytvářím aplikaci s MDI oknem. Po nějaké události, např. zrušení MDI formuláře, potřebuji zrušit všechna child okna. Můžete mi poradit, jak na to?

Ke zrušení všech child formulářů je nejlepší použít kolekci Forms. Při procházení jejich prvků jednoduše kontrolujete, zda mají vlastnost MDIChild nastavenou na hodnotu True. Pokud ano, jsou uvolněny z paměti. Např.

Dim frm As Form

For Each frm In Forms
  If frm.Name <> "nazevMDIformulare" Then
    If frm.MDIChild Then Unload frm
  End If
Next frm


  Jak lze přidat ikonu do oblasti vpravo dole do Windows, kde je zobrazený čas, hlasitost ...

Oblast o které mluvíte, se jmenuje System Tray a ikonu, tedy spuštěný program, do ní přidává API funkce Shell_NotifyIcon. Její použití je vcelku jednoduché, horší je to už s obsluhou menu. Proto opět malý příklad.


Otázky bez odpovědi

  V MSDN je zmienka o použití interfacu k objektom Windows Exploreru na vloženie objektov (Listview, treeview, combo, taskbar atď ) do vlastných aplikácií, ale priložené vzory sú pre C++. Chcem Vás požiadať o nejaké moduly alebo príklady pre použitie týchto objektov, za čo Vám budem veľmi vďačný ! Zaujíma ma hlavne zobrazenie Listview, treeview, combo z exploreru a objekty z taskbaru (tabsysview, systraj objekt, objekt hodín a ponuky Štart pre vytvorenie nového typu taskbaru). Veľmi Vás prosím o pomoc.