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

  Ve 4. dílu seriálu byla popsána možnost vytvoření tiskového výstupu z tabulky dat vytvořené pomocí FlexGridu. Nevíte prosím jak na to v DBGridu.

DBGrid žádnou podobnou možnost jako FlexGrid nemá, proto z něj není příliš výhodné tisknout. Pokud chcete tisknout data, která obsahuje, raději vytiskněte jeho obsah procházením objektu Recordset prvku Data, na který je DBGrid připojen, normálně pomocí metody Print objektu Printer. Zjednodušeně nějak takto:

Do While Not Data1.Recordset.EOF
  radek = Data1.Recordset!jmeno & chr(9) & Data1.Recordset!prijmeni & vbCrLf
  Printer.Print radek
  Data1.Recordset.MoveNext
Loop

Printer.EndDoc


  Na stisk tlačítka potřebuji vytočit telefonní číslo na modemu. Můžete mi prosím poradit?

Pro práci s modemem je ve VB komponenta MSComm. Její použití je dobře popsáno v MSDN, takže stručně asi takto:

MSComm1.CommPort = 2 'seriový port, na kterém je připojen modem
MSComm1.Settings = "9600,N,8,1 'nastavení portu (blíže viz. MSDN)
MSComm1.PortOpen = True 'Otevření portu
MSComm1.Output = "ATDT" & cislo & vbCrLf 'Vytočení čísla


  Nevím jakou funkcí zajistit aby se v tabulce MSFlexGrid po přechodu na vzdálenou pozici (např. po funkci vyhledávání) příslušný řádek zobrazil. Vždy se pouze označí, ale je třeba ještě zajistit "přerolování" seznamu. V prvku ListView toto zajišťuje metoda EnsureVisible objektu ListItem.

Chcete-li zobrazit řádek, který je mimo viditelnou oblast (je někde dole nebo nahoře), použijte vlastnost TopRow. Stačí jí zadat číslo řádku. Pokud chcete to samé se sloupci, použijte LeftCol.


  Chci přehrávat WAV soubory pomocí API funkce sndPlaySound, ale nefunguje mi to. Chybu to žádnou nevypíše, ale ani nehraje. Deklaraci funkce jsem použil z API Text Vieweru. Kód vypadá takto:

Dim x As Long
x = sndPlaySound("c:\windows\media\tada.wav", SND_LOOP)

Chyba je v parametru flags funkce sndPlaySound. Používáte konstantu SND_LOOP, která zapříčiní, že je soubor přehráván pořád dokola. Proto musíte ještě přidat konstantu SND_ASYNC, která způsobí, že kód pokračuje hned dále aniž by čekal na ukončení přehrávání (jinak by se program zastavil, čemuž se funkce brání, proto nic nepřehraje).

Dim x As Long
x = sndPlaySound("c:\windows\media\tada.wav", SND_LOOP + SND_ASYNC)


Otázky bez odpovědi

  Potřebuji použít funkci Inkey, ale Visual Basic ji nemá. Neznáte způsob, jak ji nahradit?


  Nevíte jak zjistit, které klávesy byly stisknuty, když je můj program na pozadí? Nějak to jít musí, využívají toho např. programy CS-VOICE a BlackBox.


  Jak je možné změnit IP adresu a masku podsítě pomocí Visual Basicu 5.0 nebo 6.0 na Windows 2000? A je možné vrátit nastavení zpět na získání IP z DHCP serveru?


  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.


  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.