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
Které soubory si mám nahrát na svůj počítač, abych nemusel při hledání informací nebo studiu Visual Basicu
neustále číst z CD.
Pokud chcete celou rubriku VB, tak celý adresář VBasic z adresáře Zkuste. Chcete-li pouze seriál nebo jinou část,
vždy pouze odpovídající HTML soubor z adresáře Zkuste\VBasic (v případě seriálu je to serial.htm atp.)
a dva související podadresáře, např pro seriál je to Data\Serial a CCD\Serial, pro activex to je Data\ActiveX
a CCD\ActiveX atd.
Jak zjistím nejdelší položku v ListBoxu a na základě této délky nastavím horizontální posuvník?
Horizontální posuvník nastavíte zasláním zprávy LB_SETHORIZONTALEXTENT příslušnému ListBoxu s délkou v pixelech.
SendMessage List1.hwnd, LB_SETHORIZONTALEXTENT, lText/Screen.TwipsPerPixelX, 0&
Hodnota lText je nejdelší položka v ListBoxu zjištěná takto:
Dim i As Long, lText As Long, tmp As Long
lText = 0
For i = 0 To List1.ListCount - 1
tmp = TextWidth(List1.List(i))
If tmp > lText Then lText = tmp
Next i
lText = lText + TextWidth(" ")
Potřebuji v databázi najít nějaký záznam, ale nevím jak. Zkoušel jsem tento kód (níže uvedený), ale bohužel
nefunguje.
propmpt = "Zadej úplné jméno pro hledání"
searchStr = InputBox(prompt$, "hledaný řetězec")
Data1.Recordset.Index = "NázevFirmy"
Data1.Recordset.Seek "=", searchStr
Problém je v použití metody Seek . Funguje pouze pro sady záznamu (Recordsety) otevřené jako tabulka, tzn.
buď dbOpenTable nebo při použití prvku Data, což je váš případ, nastavit vlastnost RecordsetType
prvku Data na hodnotu 0 neboli Table . Pokud nechcete otevírat Recodset jako tabulku, musíte
použít tento kód:
propmpt = "Zadej úplné jméno pro hledání"
searchStr = InputBox(prompt$, "hledaný řetězec")
Data1.Recordset.FindFirst "NázevFirmy='" & searchStr & "'"
Nevíte jak udělat, aby při ukončení Windows můj program dal hlášení, že je v CD-Rom jednotce vloženo CD?.
Při ukončování Windows standardním způsobem, tj. pomocí nabídky Start - Vypnout, je všem aplikacím zaslána
zpráva WM_QUERYENDSESSION . Tuto zprávu musíte odchytit a potom zjistit, zda je v mechanice vloženo
CD třeba zjištěním volného místa pomocí vlastnosti FreeSpace objektu Drive (rozšíření
Microsoft Scripting Runtime). Pokud není požadovaný disk přístupný (tj. CD v mechanice není), vyvolá chybu,
kterou lze samozřejmě ošetřit např. takto:
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
i = fso.Drives(strDrive).FreeSpace
If Err.Number = 0 Then
Debug.Print "CD je v mechanice"
End If
On Error GoTo 0
Otázky bez odpovědi
Potřebuji vytvořit aplikaci, která by uměla říct jiným programům, aby se nezobrazovali v TaskBaru. Tzn. stejně
jako když u své aplikace nastavím ShowInTaskBar na False .
Jak se dá udělat kontrolní součet (CRC32) souboru?
Zkoušel jsem přidat bitmapu do menu pomocí API funkce SetMenuItemBitmaps. V normálním menu
to funguje. Jakmile však stejný postup použiji v PopupMenu, obrázek se nezobrazí.
Rád by som získal informácie o API funkciách pre prácu s resources, spôsob ich volania
vo VB a informácie potrebné pre správny chod funkcie:
loadresource, findresorce, freeresource, updateresource. Chcel by som urobiť malý
lokalizátor, a na to sú potrebné tieto funkcie, v angličtine (MSDN) som čosi porozumel,
ale neviem ako loadnuté resource zobraziť v Image, txt objekte, a ako ich updatovať do
súboru.
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.
|