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 lze u ovlßdacφch prvk∙ DataGrid a DbGrid p°idßvat a odebφrat sloupce?
 

U prvku DataGrid je to jednoduÜÜφ, staΦφ zavolat metodu Add kolekce Columns.

dbg1.Columns.Add 1
dbg1.Columns.Add 2

U prvku DBGrid p°idßte sloupec podobn²m zp∙sobem, jen je jeÜt∞ t°eba nastavit jeho viditelnost.

DBGrid1.Columns.Add 2
DBGrid1.Columns(2).Visible = True


Zajφmalo by m∞, jestli lze ve VB n∞jak nastavit verze mΘho programu, kterß se u₧ivateli objevφ ve vlastnostech na kart∞ verze?
 
V menu Project->Properties, zßlo₧ka Make, polo₧ky Major, Minor a Revision. V programu tyto informace m∙₧ete zφskta p°es vlastnosti objektu App, App.Major, App.Minor a App.Revision.


Lze n∞jak v RichTextBoxu nastavit hornφ a dolnφ index pro ty znaky, kterΘ si u₧ivatel vybere?
 

Hornφ a dolnφ index lze vytvo°it pomocφ vlastnosti SelCharOffset. Ta urΦuje vzdßlenost pφsma od zßkladnφ Φßry (v twipech). Kladnß hodnota pφsmo posouvß nahoru, zßpornß dol∙. Tzn. ₧e chcete-li hornφ index, nastavte nap°. hodnotu 200, pro dolnφ index nap°. -200 (takΘ je dobrΘ zmenÜit velikost pφsma). Zkuste nap°. tento k≤d:

With rtf1
  .SelFontSize = 20
  .SelText = "2*E"
  .SelFontSize = 8
  .SelCharOffset = 200
  .SelText = 10
End With


Napsal jsem si textov² editor ve VB 6 a a₧ potΘ zjistil, ₧e nemohu do tohoto editoru naΦφst v∞tÜφ soubor ne₧ cca 64KB. Je mo₧nΘ, aby m∙j editor naΦφtal i v∞tÜφ soubory, nap°. 1MB?
 
Maximßlnφ velikost textu v jedno°ßdkovΘm TextBoxu je 2048B, pro vφce °ßdkov² TextBox je to 32KB. Pokud chcete pracovat s delÜφm textem, pou₧ijte RichTextBox.


Ve svΘ aplikaci spouÜtφm pomocφ ADO a objektu Connection dotaz na databßzi. Tento dotaz vÜak trvß hodn∞ dlouho a ne₧ skonΦφ, celß aplikace je tzv. "zmrzlß", tj. nereaguje na nic. Je n∞jak mo₧nΘ spustit dotaz a neΦekat na jeho ukonΦenφ?
 

Mo₧nΘ to samoz°ejm∞ je a dokonce velmi jednoduÜe. StaΦφ nastavit parametr Options metody Execute na hodnotu adAsyncExecute. V tomto p°φpad∞ program neΦekß na ukonΦenφ dotazu a hned pokraΦuje dßle. Chcete-li v∞d∞t jak dotaz dopadnul, nadefinujte prom∞nnou typu Connection s klφΦov²m slovem WithEvents. Takto m∙₧ete odchytit udßlost ExecuteComplete, kterß je vyvolßna po ukoΦenφ SQL p°φkazu. Velmi zjednoduÜen∞ asi takto:

Private WithEvents cn As ADODB.Connection

Private Sub cn_ExecuteComplete(ByVal RecordsAffected As Long, ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, ByVal pCommand As ADODB.Command, _
ByVal pRecordset As ADODB.Recordset, ByVal pConnection As ADODB.Connection)
  MsgBox "Dotaz skoncil"
End Sub

Private Sub Form_Load()
  cn.Execute "UPDATE osoby SET plat=5000", , adAsyncExecute
End Sub


Vytvß°φm komponentu typu ActiveX EXE. Ve vlastnostech projektu jsem objevil n∞kolik vlastnostφ, kterΘ mi nic ne°φkajφ. Zaujali m∞ vÜak dv∞, a to "Thread per object" a "Thread Pool". M∙₧ete mi poradit, co to znamenß a jak je pou₧φt?
 
Tato problematika je bohu₧el pon∞kud slo₧itß na to, aby se na ni dalo krßtce odpov∞d∞t. ZjednoduÜen∞ °eΦeno jde o to, ₧e pokud nastavφte prvn∞ uvedenou vlastnost, bude pro ka₧dou instanci komponenty vytvo°en nov² STA apartment a novΘ vlßkno (co₧ nenφ zrovna v²hodnΘ z hlediska Üet°enφ systΘmov²mi prost°edy). Druhß mo₧nost nastavuje maximßlnφ poΦet STA apartment∙, tzn. nastavφte-li t°eba 5, Üestß instance ji₧ nevytvo°φ nov² STA apartment, ale vznikne ji₧ v existujφcφm. Tak je zajiÜt∞no Üet°enφ systΘmov²mi prost°edky, ale zase je pro n∞kolik instancφ vytvo°eno pouze jedno vlßkno, tudφ₧ komponenty v jednom apartmentu nemajφ mo₧nost b∞₧et paraleln∞. Pokud by vßs tato problematika zajφmala vφce, velmi doporuΦuji knihu Programujeme v COM a COM+ od Dalibora KaΦmß°e.


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