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
Potřebuji otevřít složku jako v průkumníkovi. Jak na to?

Chcete-li otevřít složku tak jako v průzkumníkovi, použijte funkci API ShellExecute s příkazem explore.

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
 (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
  ByVal lpParameters As String, ByVal lpDirectory As String, _
  ByVal nShowCmd As Long) As Long

Const SW_NORMAL = 1

ShellExecute 0, "explore", "C:\WINNT", vbNullString, vbNullString, SW_NORMAL


Když chci do textboxu natáhnout textové pole z databáze, které má hodnotu Null, nastane chyba "Invalid use of Null". Co s tím?

Máte dvě možnosti. Buď otestovat pole na hodnotu Null a pokud je Null, uložit do textboxu prázdný řetězec nebo vkládaný řetězec vždy spojit s prázdným řetězcem, tedy s "".

txtJmeno.Text = IIf(IsNull(rs("jmeno")), "", rs("jmeno"))

nebo

txtJmeno.Text = rs("jmeno")) & ""


Jak vyprázdním tiskovou frontu tiskárny ve Windows 98?

Použijte funkci API SetPrinter.

Const CCHDEVICENAME = 32
Const CCHFORMNAME = 32
Const PRINTER_CONTROL_PURGE = 3

Private Type DEVMODE
  dmDeviceName As String * CCHDEVICENAME
  dmSpecVersion As Integer
  dmDriverVersion As Integer
  dmSize As Integer
  dmDriverExtra As Integer
  dmFields As Long
  dmOrientation As Integer
  dmPaperSize As Integer
  dmPaperLength As Integer
  dmPaperWidth As Integer
  dmScale As Integer
  dmCopies As Integer
  dmDefaultSource As Integer
  dmPrintQuality As Integer
  dmColor As Integer
  dmDuplex As Integer
  dmYResolution As Integer
  dmTTOption As Integer
  dmCollate As Integer
  dmFormName As String * CCHFORMNAME
  dmUnusedPadding As Integer
  dmBitsPerPel As Long
  dmPelsWidth As Long
  dmPelsHeight As Long
  dmDisplayFlags As Long
  dmDisplayFrequency As Long
End Type

Private Type PRINTER_DEFAULTS
  pDatatype As String
  pDevMode As DEVMODE
  DesiredAccess As Long
End Type

Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" _
 (ByVal pPrinterName As String, phPrinter As Long, pDefault As PRINTER_DEFAULTS) As Long
Declare Function SetPrinter Lib "winspool.drv" Alias "SetPrinterA" _
 (ByVal hPrinter As Long, ByVal Level As Long, pPrinter As Byte, _
  ByVal Command As Long) As Long
Declare Function ClosePrinter Lib "winspool.drv" Alias "ClosePrinter" _
 (ByVal hPrinter As Long) As Long

Dim p AS PRINTER_DEFAULTS, h As Long

OpenPrinter Printer.DeviceName, h, p
SetPrinter h, 0, 0, PRINTER_CONTROL_PURGE
ClosePrinter h


Otázky bez odpovědi
Jak mohu aktivovat úsporný režim?


Vytvořil jsem program, který pracuje se soubory vlastního formátu. Soubory mají vlastní příponu .dpw. Soubory jsou asociovány s mým programem. Mohu nějakým způsobem přidat do vlastností tohoto typu souboru (*.dpw) další záložku, která by obsahovala bližší informace o dokumentu, podobně jako je to u souboru .doc ve Wordu?


Znáte nějaký prvek ActiveX, který by zvýrazňoval syntaxi zdrojového kódu HTML a kódu Visual Basicu?


Jakým způsobem mohu uložit do resource souboru MP3 soubor a jak ho odtud získat?


Potřeboval bych pomocí funkce API vyvolat dialog "Najít". Slyšel jsem, že je to přesně funkce Findtext. Její deklaraci jsem si našel v programu API Text Viewer včetně typu FINDREPLACE.


Neexistuje nějaký OCX, nebo DLL knihovna, která by umožňovala odesílání krátkých textových zpráv rovnou z PC přes modem?


Jak lze přijímat/posílat data na některý z portů ve Windows 2000?


Nevíte kde se dá sehnat (pokud existuje) prvek, který se chová jako textové pole ve Wordu?


Používám VB6 a chtěl bych z mého programu otevřít soubor PhotoPaintu. Kód vypadá následovně:

Dim xApp as PHOTOPAINT.CPntAutomate
xApp.FileOpen ("nazov suboru")

Bohužel to takto nefunguje. Co ještě musím zadat, aby se soubor otevřel?


Jak zjistit, kolik bajtů bylo staženo přes Internet v předem dané době? Jde mi o připojení přes lokální síť, ne přes modem.


Jak se dá ve Visual basicu ovládat USB port?


Ve Windows 98 jsem vytvořil program s ovládacím prvkem Timer. Program fungoval bez problémů, ale když jsem jej spustil na Windows 2000, prvek časoval asi 5x rychleji. Nevíte so s tím?


Potřebuji ve svém programu použít průhledný textbox nebo textbox, ve kterém by byl na pozadí mnou vybraný obrázek. Na Internetu jsem našel tři různé návody, ale ani jeden neposkytuje takové funkce jako původní textbox (ScrollBar, DataField atd.).