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.
Nevφte, jak vytvo°it nßpov∞du k menu tak, ₧e kdy₧ najedu na n∞jakou polo₧ku, nap°. ve StatusBaru se mi objevφ jejφ popis? Stejn∞ to funguje nap°. v Office.
Proto₧e odpov∞∩ pro tuto otßzku je pon∞kud obsßhlejÜφ, vypom∙₧eme si op∞t p°φkladem. V podstat∞ jde o to, zachytit zprßvu WM_SELECT pomocφ API funkce SetWindowsLong, vyhledat, kterΘ menu je prßv∞ vybrßno a zobrazit zprßvu.
Pot°ebuji v ListView zv²raznit n∞kterΘ polo₧ky tuΦn∞. Stejn∞ jako je to nap°. v aplikaci Outlook Express, kdy₧ je n∞kterß
poÜta nep°eΦtenß.
Polo₧ka, tedy °ßdek, v ListView je charakterizovßna objektem ListItem kolekce ListItems. Pokud je pot°eba mφt n∞kterou tuΦn∞, staΦφ nastavit jejφ vlastnost Bold = True. Nap°. takto:
Dim lstPol As ListItem
Set lstPol = ListView1.Add(Text:="Prvni") 'nova polozka v ListView
lstPol.Bold = True
U₧ n∞jakou dobu se sna₧φm poslat v programu vytvo°enΘm ve VB 5.0 informace k vytisknutφ na
jinou ne₧ v²chozφ tiskßrnu. V₧dy se mi poda°φ nastavenφ zm∞nit jen na chvφli a to do doby,
ne₧ zm∞nφm font tisku nebo odeÜlu n∞co na tisk. Potom se hned nastavφ op∞t v²chozφ tiskßrna. Nap°.:
MsgBox(printer.devicename) 'Nastavenß v²chozφ tiskßrna 2
Set Printer = Printers(3) 'Nastavenφ tisku na tiskßrnu 3
MsgBox(printer.devicename) 'Nastavenß tiskßrna 3
Printer.Print "Text" 'Tento text se u₧ tiskne na v²chozφ tiskßrnu 2
MsgBox(printer.devicename) 'A zde je nastavenß v²chozφ tiskßrna 2
Tento p°φklad jsem zkouÜel na svΘm poΦφtaΦi a fungovalo to bez problΘm∙. Bu∩ je chyba n∞kde ve zbytku k≤du nebo zkuste mφsto pou₧itφ objektu Printer deklarovat prom∞nnou typu Printer a tu potom pou₧φvat.
Jak p°i instalaci (Φi jinak elegantn∞) za°φdit, aby se program spouÜt∞l automaticky po startu poΦφtaΦe?
Je urΦen pro SysTray oblast.
Jak pozm∞nit standardnφ instalaΦnφ program dodßvan² s VB najdete v dneÜnφch zdrojov²ch k≤dech. NejlΘpe je vlo₧it spuÜt∞nφ programu po startu do slo₧ky Po spuÜt∞nφ v nabφdce Start nebo p°φmo v registru do polo₧ky HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Run. Zda se spouÜtφ normßln∞ nebo v SysTray oblasti zßle₧φ u₧ na samotnΘm programu.
Nedokß₧u najφt zp∙sob, jak p°eΦφst v programu ve Visual Basicu
parametry p°φkazovΘ °ßdky.
Parametry p°φkazovΘ °ßdky vracφ ve VB funkce Command. Nßvratovß hodnota je typu String, tzn. co u₧ivatel zadal za nßzvem programu si u₧ musφte "vypreparovat" sßm.
Lze ve VB pracovat s grafikou ve vφce vrstvßch? Vykreslφm-li n∞jak² tvar pomocφ Circle, PSet, Line a
chci Φßst skr²t (vypnout hladinu), musφm vÜe vymazat (cls) a potΘ znovu vykreslit viditelnΘ.
ZkouÜel jsem nastavit DrawMode = 7 a znovu vykreslit hladinu k vypnutφ, ale nefunguje to (patrn∞ kv∙li AutoRedraw = True).
Jsou i jinΘ metody, pop°. ud∞lal jsem n∞kde chybu?
S hladinami VB pracovat neumφ. Pokud chcete schovat n∞jakou kresbu, musφte ji znovu vykreslit. P°itom je nutno mφt nastaven re₧im XOR, tedy DrawMode = vbXorPen (nebo 7). To, ₧e Vßm to nefunguje, urΦit∞ nenφ nastavenφm AutoRedraw = True. P°i re₧imu XOR je nutno si uv∞domit, jak se vykresluje. P°i kreslenφ je provedena operace XOR s jednotliv²mi bity barvy pera a barvy pozadφ na stejn²ch pozicφch. V²slednß barva je pou₧ita pro vykreslenφ (nap°. "barva pera" XOR "barva pozadφ" = "barva vykresleni" - 1111 XOR 0011 = 1100). A navφc, bavφme-li se o barv∞ pozadφ, nejde o pozadφ formulß°e, ale o barvu na formulß°i v mφst∞, kde budete vykreslovat. Nap°φklad:
Form1.DrawMode = vbXorPen
Form1.BackColor = RGB(0, 0, 0) 'Barva pozadi - cerna
Form1.ForeColor = RGB(255, 0, 0) 'Barva pera - cervena
Form1.Circle (500, 500), 200 'Nakresli kruznici
Form1.Circle (500, 500), 200 'Zrus kruznici
Pro prvnφ kru₧nici je v²sledek brßn z RGB(0,0,0) XOR RGB(255,0,0) = RGB(255,0,0). P°i druhΘm vykreslenφ je vÜak ji₧ barva pozadφ v mφst∞ kru₧nice Φervenß, tj. RGB(255,0,0) a v²sledkem RGB(255,0,0) XOR RGB(255,0,0) je RGB(0,0,0), tedy barva pozadφ formulß°e, tzn. kru₧nice zmizφ.
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.
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.
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φ.