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.



Jak ud∞lßm formulß°, kter² bude po°ßd naho°e? Tφm myslφm to, ₧e kdy₧ aktivuji jak²koliv jin² program, moje okno bude v₧dy vid∞t, tak jako funkce u WinAmpu.
 

Pomocφ standardnφch p°φkaz∙ Visual Basicu toto provΘst nelze. Musφte si pomoci funkcφ API SetWindowPos.

SetWindowPos form1.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE

Pokud chcete umφst∞nφ trvale naho°e zruÜit, mφsto konstanty HWND_TOPMOST zadejte 0.


Pot°ebuji otev°φt slo₧ku, ve kterΘ je program (nap°. pomocφ FileSystemObject). Jak na to?
 

Na toto vßm FileSystemObject nepom∙₧e. Ale m∙₧ete pou₧φt jednoduch² trik. StaΦφ zavolat p°φkaz operaΦnφho systΘmu Start a jako parametr mu p°edat po₧adovanou slo₧ku. Jde-li o slo₧ku aplikace, potom App.Path.

Shell "start " & App.Path, vbHide


Chci pou₧φvat Resource editor, kter² je jako dopln∞k k Visual Basicu. Kdy₧ jsem jej m∞l na operaΦnφm systΘmu Windows 98, vÜe fungovalo v po°ßdku. Te∩ mßm vÜak Windows 2000 a nemohu jej mezi dopl≥ky najφt. Visual Basic jsem instaloval jako Administrator. Pod tφmto ·Φtem je vÜe v po°ßdku. Kdy₧ se vÜak p°ihlßsφm pod jin²m ·Φtem, vid∞t nenφ.
 
Informace o dopl≥cφch si Visual Basic uklßdß do registru do v∞tve HKEY_CURRENT_USER. Proto nejsou dopl≥ky vid∞t pod jin²mi u₧ivatelsk²mi konty. Dß se to opravit n∞kolika zp∙soby. Pokud jde o Resource editor, staΦφ, kdy₧ zaregistrujete knihovnu REGEDIT.DLL, nap° programem REGSVR32.EXE. REGEDIT.DLL najdete v adresß°i C:\Program Files\Microsoft Visual Studio\VB98\Wizards\ a program REGSVR32.EXE v C:\WINNT\SYSTEM32. Vφce informacφ o tΘto chyb∞ naleznete na strßnkßch Microsoftu.


Mßm prvek Data, kter² chci p°ipojit na MS SQL server. Jako zdroj nechci ani dotaz ani tabulku, ale ulo₧enou proceduru. Je to mo₧nΘ n∞jak za°φdit?
 

Je to mo₧nΘ, dokonce velmi jednoduÜe. StaΦφ zadat zdroj, tj. RecordSource, p°φkaz ke spuÜt∞nφ tΘto procedury. Jako p°φklad uvßdφm napojenφ na proceduru sp_who2.

Data1.Connect = "ODBC;DSN=MujServer;;Database=master;Uid=sa;Pwd=;"
Data1.RecordSource = "Exec sp_who2"
Data1.Options = Data1.Options Or dbSQLPassThrough
Data1.Refresh


Jak zjistφm, ₧e m∙j program be₧φ ve v²vojovΘm prost°edφ Visual Basicu nebo u₧ p°φmo jako EXE soubor?
 

Existuje n∞kolik zp∙sob∙. M∙₧ete nap°. porovnat jmΘno souboru s vlastnostφ EXEName objektu App. Pokud program b∞₧φ ve v²vojovΘm prost°edφ, vracφ tato vlastnost jmΘno projektu, pokud ji₧ b∞₧φ jako EXE soubor, vracφ jmΘno EXE souboru. Druh² zp∙sob je nap°. pomocφ funkce API GetModuleFileName. Pokud program b∞₧φ ve v²vojovΘm prost°edφ, vracφ cestu k EXE souboru Visual Basicu, pokud b∞₧φ sßm, vracφ jeho nßzev. NejjedoduÜÜφ je pou₧itφ metody Print objektu Debug. Tyto °ßdky jsou toti₧ po p°elo₧enφ do EXE souboru vymazßny. Tzn. ₧e m∙₧ete ud∞lat n∞jakou chybu, nap°. d∞lenφ nulou a pokud tato chyba vznikne, je program spuÜt∞n z IDE Visual Basicu. Pokud nevznikne, jde ji₧ o p°elo₧en² EXE soubor, ze kterΘho byla konstrukce Debug.Print vymazßna.

Public Function IsIDE() As Boolean
  On Error GoTo err_handler

  Debug.Print 1 / 0
  IsIDE = False

  Exit Function
err_handler:
  IsIDE = True
End Function


Jak vyprßzdnφm DBGrid, kter² je napojen na prvek Data?
 

Chcete-li vyprßzdnit vÜechny °ßdky, kterΘ jsou vid∞t v DBGridu, mßte n∞kolik mo₧nostφ. NejjednoduÜÜφ je zadat zdroj prvku Data dotaz, kter² na 100% nevybere ₧ßdnß data, nebo zav°φt objekt Recordset prvku Data a zavolat metodu ReBind.

Data1.Recordset.Close
DBGrid1.ReBind


Otßzky bez odpov∞di

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.).