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.