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 mohu ve Visual Basicu zjistit pφsmeno jednotky CD-ROM a zapsat ho nap°. do labelu?
Pφsmeno zjistφte tak, ₧e projdete vÜechny objekty Drive v kolekci Drives objektu
FileSystemObject . KterΘ majφ typ (DriveType ) 4, jsou CD.
Dim fso As Object, drv As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each drv In fso.Drives
If drv.DriveType = 4 Then
Label1.Caption = Label1.Caption & drv.DriveLetter
End If
Next drv
Ve Visual Basicu 6.0 mßm tento k≤d:
rtbText.RightMargin = 120 * 1024 'toto hlßsφ overflow...
rtbText.RightMargin = 122880 '...ale toto ne
Zajφmalo by m∞, proΦ tomu tak je. V₧dy¥ p°ece 120*1024 = 122880, tak proΦ to
p°i pou₧itφ nßsobenφ hlßsφ chybu p°eteΦenφ a p°i pou₧itφ kostanty nikoliv?
Chyba nenφ v RichTextBoxu, ale v implicitnφ konverzi datov²ch typ∙ (zkuste dßt t°eba p°i
p°eruÜenΘm programu v okn∞ Immediate vytisknout ten sam² v²raz: ? 120 * 1024, nastane stejnß chyba).
╚φslo 120 i 1024 je automaticky brßno jako Integer (p°edpoklßdßm ₧e to jsou pouze konstanty, ne prom∞nnΘ, u
t∞ch by m∞l b²t typ samoz°ejm∞ explicitn∞ urΦen). Tzn. jejich v²sledek je takΘ brßn jako Integer,
jen₧e Integer mß max. 32767, z toho plyne ta chyba. Zkuste dßt nap°. CLng(120) * 1024. V tomto
p°φpad∞ u₧ bude vÜe v po°ßdku, proto₧e prvnφ Φφslo je Long, druhΘ Integer, v²sledek je "v∞tÜφ", tzn. Long.
Jak zm∞nφm ikonu v oblasti system tray? Po spuÜt∞nφ formulß°e se naΦte ikona ico1 a jß
ji p°i p∞hu programu pot°ebuji zm∞nit. TakΘ by mi pomohlo, kdyby byla ikona v system tray stejnß jako ikona formulß°e
a m∞ staΦilo jen zm∞nit ikonu formulß°e. Jde to?
Zm∞nit ikonu nenφ problΘm, staΦφ vykonat stejnou proceduru jako p°i jejφm umφst∞nφ do system tray,
pouze p°i volßnφ API funkce Shell_NotifyIcon zadßte konstantu NIM_MODIFY
mφsto NIM_ADD . P°edtφm je samoz°ejm∞ pot°eba zm∞nit ikonu u formulß°e, pokud ji berete
z vlastnosti Icon . M∙₧ete si zm∞nu umφstit do procedury a volat ji v₧dy p°i
zm∞n∞ ikony formulß°e.
Jak mohu zjistit poslednφ den v m∞sφci? Neboli pot°ebuji v∞d∞t, kolik dnφ mß m∞sφc v danΘm roce.
Nejd°φve p°idejte k zadanΘmu datu jeden m∞sφc.
DateAdd("M",1, datDate)
Potom z tohoto data vytvo°te novΘ a to tak, ₧e pou₧ijete rok a m∞sφc, den dejte 1.
datNew = DateSerial(DatePart("Y", datDate), DatePart("M", datDate), 1) .
Od tohoto data odeΦt∞te 1, tj jeden. den a mßte datum, kterΘ je poslednφm dnem danΘho m∞sφce.
MsgBox DatePart("D", datNew -1) .
Pot°ebuji programu nastavit vlastnost, aby se neukazoval v seznamu b∞₧φcφch program∙, tj. po stisku Ctrl+Alt+Delete.
Program m∙₧ete schovat pomocφ API funkce RegisterServiceProcess .
Private Declare Function RegisterServiceProcess Lib "kernel32" _
(ByVal dwProcessID As Long, ByVal dwType As Long) As Long
Dim i1 As Long
i1 = GetCurrentProcessId()
'schovß
RegisterServiceProcess i1, 1
'ukß₧e
RegisterServiceProcess i1, 0
Jak m∙₧u zjistit Φφslo prvnφho zobrazenΘho °ßdku v prvku RichTextBox? U FlexGridu
je k tomu vlastnost TopRow , u RichTextBoxu ale nic podobnΘho nenφ.
╚φslo prvnφho viditelnΘho °ßdku zjistφte pomocφ funkce SendMessage (prvnφ
°ßdek je 0, druh² 1 atd.)
MsgBox "Prvnφ °ßdek: " & SendMessage(rtf1.hwnd, EM_GETFIRSTVISIBLELINE, 0, 0)
Otßzky bez odpov∞di
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.).
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?
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.
|