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
Jak zjistit ve Visual Basicu 6 cestu ke slo₧kßm Plocha a Nabφdka Start ve Windows 98?
Cestu k ploÜe a nabφdce start zjistφte pomocφ funkce API SHGetSpecialFolderPath .
Jako parametr je musφte funkci zadat identifikßtor slo₧ky, kterou chcete znßt. Pro slo₧ku Plocha
je to konstanta CSIDL_DESKTOPDIRECTORY pro Nabφdku start CSIDL_STARTMENU.
Declare Function SHGetSpecialFolderPath Lib "shell32.dll" _
Alias "SHGetSpecialFolderPathA" (ByVal hwndOwner As Long, _
ByVal lpszPath As String, ByVal nFolder As Long, _
ByVal fCreate As Long) As Long
Const CSIDL_STARTMENU = &HB
Const CSIDL_DESKTOPDIRECTORY = &H10
Dim cesta As String
cesta = Space(260)
SHGetSpecialFolderPath Form1.hWnd, cesta, CSIDL_STARTMENU, 0
Debug.Print Left(cesta, InStr(1, cesta, Chr(0)) - 1)
Cestu ke slo₧kßm m∙₧ete zjistit i z registru a to z klφΦe
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell
Folders a polo₧ek Desktop pro Plochu a Start Menu pro Nabφdku start.
Mohu do ListBoxu n∞jak umφstit posuvnφky?
Vertikßlnφ ScrollBar se zobrazφ automaticky, je-li v ListBoxu vφce polo₧ek,
ne₧ je schopen narßz zobrazit. Horizontßlnφ ScrollBar je mo₧nΘ zobrazit zaslßnφm
zprßvy LB_SETHORIZONTALEXTENT . Parametr wParam
funkce SendMessage urΦuje poΦet pixel∙ pro pohyb, tzn. nejlΘpÜφ
je zadat dΘlku nejdelÜφho textu v ListBoxu (dΘlku textu vracφ funkce metoda
TextWidth ).
Private Sub Form_Load()
'napln∞nφ ListBoxu
List1.AddItem "prvnφ polo₧ka"
List1.AddItem "druhß dlouhß polo₧ka, kterß se nevejde do Üφ°ky ListBoxu"
'vlo₧enφ ScrollBaru se sprßvnou Üφ°kou
SendMessage List1.hwnd, LB_SETHORIZONTALEXTENT, _
MaxText / Screen.TwipsPerPixelX, 0&
'MaxText je funkce, kterß zjistφ dΘlku nejdelÜφho textu v twipech
End Sub
Jak mohu v RichTextBoxu nastavit vybran² text jako hornφ nebo dolnφ index?
pro vytvo°enφ hornφho nebo dolnφho indexu mß prvek RichTextBox vlastnost
SelCharOffset . Nastavuje vzdßlenost pφsma od zßkladnφ Φßry v twipech. Zadßte-li
kladnou hodnotu, pφsmo se posouvß nad zßkladnφ Φßru (hornφ index), zadßte-li zßpornou,
posouvß se pod zßkladnφ Φßru (dolnφ index).
With RichTextBox1
'vytvo°φ normßlnφ text - velikost pφsma 20
.SelFontSize = 20
.Text = "5*E"
'vytvo°φ hornφ index - velikost pφsma 8
.SelStart = Len(.Text)
.SelFontSize = 8
.SelCharOffset = 200
.SelText = 15
End With
Rßd bych ve svΘ aplikaci vyu₧φval zßpis/Φtenφ z/na sΘriov² port (com1 nebo com2).
Vφm, ₧e ve VB je na to MSComm32.ocx, ale tu nemohu pou₧φt, mßm VB6 Learning
Edition a p°i pokusu o pou₧itφ tΘto komponenty mi to hlasi chybu, ₧e nemß
informace o registraci. P°edpoklßdßm proto, ₧e ji v tΘto verzi nemßm
oprßvn∞nφ pou₧φt. Nevφte proto o n∞jakΘ jinΘ (freeware) komponent∞, kterß
by to jednoduch²m (ale opravdu jednoduch²m) zp∙sobem um∞la takΘ?
Dobrß knihovna pro komunikaci se sΘriov²mi porty je nap°φklad win95io.dll. Pou₧itφ
v nφ obsa₧en²ch funkcφ je velmi jednoduchΘ. Mß pouze dv∞ funkce, vbOut
a vbInp , kter²m zadßte pouze adresu portu (v p°φpad∞ vbOut
takΘ samoz°ejm∞ posφlanß data). Najdete ji na strßnkßch spoleΦnosti
SoftCircuits. Pokud pot°ebujete
komunikovat se sΘriov²mi porty na 16-bitov²ch Windows, najdete na tΘ₧e strßnce
knihovnu vbAsm, kterß tento problΘm °eÜφ.
Jak mohu zjistit zßkladnφ informace o sloupci tabulky databßze MS Access
pomocφ objektovΘho modelu ADO.
Pokud chcete informace pomocφ ADO, staΦφ otev°φt pat°iΦnou tabulku (Recordset ).
Objekt Recordset mß kolekci Fields objekt∙ Field ,
kter² obsahuje r∙znΘ vlastnosti sloupce v tabulce.
'rs je typ ADODB.Recordset, con je otev°enΘ spojenφ, ADODB.Connection, fld je ADODB.Field
rs.Open "tabulka", con, adOpenStatic
Set fld = rs.Fields("pole")
'VypφÜe typ a definovanou dΘlku sloupce
Debug.Print fld.Type; fld.DefinedSize;
Pokud chcete vφce informacφ, ne₧ poskytuje typ Field , m∙₧ete pou₧φt
knihovnu ADOX (ADO Extension for DDL and Security). Sloupec tabulky zde
p°edstavuje objekt Column , kte kterΘmu se m∙₧ete dostat nap°. takto:
Dim cat As New ADOX.Catalog, tb As ADOX.Table, col As ADOX.Column
cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security" & _
Info=False;Data Source=D:\data.mdb"
Set tb = cat.Tables("tabulka")
Set col = tb.Columns("sloupec1")
Pomocφ knihovny ADOX m∙₧ete strukturu databßze takΘ upravovat, vytvß°et novΘ databßze atd.
Pot°ebuji v∞d∞t, jak mohu v prvku SSTab odstranit urΦitou zßlo₧ku.
U prvku SSTab nejde odstranit libovolnß zßlo₧ka. M∙₧ete pouze zmenÜit poΦet zßlo₧ek,
nastavenφm jejich poΦtu, ale v₧dy se odstra≥ujφ zßlo₧ky od konce. Zßlo₧ku vÜak m∙₧ete
skr²t pomocφ vlastnosti TabVisible .
'Skrytφ zßlo₧ky s indexem 3
ss1.TabVisible(3) = False
Jak napsat SQL dotaz, kter² vypφÜe zßznamy s urΦit²m datem ze sloupce Datum (nap°. 1.5.2001 - 5.5.2001)
M∙₧ete pou₧φt nap°. funkci DateValue .
SELECT * FROM Tabulka WHERE datum BETWEEN DateValue('21.6.2001') AND DateValue('25.6.2001')
nebo zadat datum p°φmo ve formßtu #mm/dd/yyyy#, tj.
SELECT * FROM Tabulka WHERE datum BETWEEN #5/18/2001# AND #5/25/2001#
Jak mohu vymazat obsah slo₧ky Temp, pokud nevφm, na kterΘm disku jsou Windows nainstalovßny?
ZkouÜel jsem to takto, ovÜem neÜlo to:
Dim fso As Object, tmp
Set fso = CreateObject("Scripting.FileSystemObject")
tmp = fso.GetSpecialFolder(2) + "\*.*"
Set fso = Nothing
Kill tmp
Pokud se sna₧φte smazat cel² obsah, nejde to tak jednoduÜe. Ve slo₧ce toti₧ mohou b²t
takΘ adresß°e, kterΘ pomocφ Kill nesma₧ete. Nejd°φve je pot°eba zjistit
cel² obsah slozky Temp, adresß°e smazat pomocφ RmDir a soubory pomocφ
Kill . NicmΘn∞ pokud se sna₧φte smazat vÜechny soubory, m∙₧e b²t chyba
v tom, ₧e n∞kterΘ pou₧φvajφ jinΘ programy a v²maz nedovolφ.
Otßzky bez odpov∞di
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.
Pot°ebuji ve Visual Basicu pφpnout, tj. vydat zvuk o urΦitΘ frekvenci a dΘlce. Myslel jsem na
funkci API Beep , ta vÜak umo₧≥uje pφpnout pouze ve Windows NT, ve Windows 9x p°ehraje
systΘmov² zvuk.
Jak se dß p°epφnat klßvesnice? Nap°. z anglickΘ do ΦeskΘ a nazp∞t.
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.).
|