ZdrojovΘ k≤dy

Jak zamknout poΦφtaΦ Program
Adresa sφ¥ovΘho adaptΘru Program
Jak m∞nit menu za b∞hu programu Program
P°idßvßnφ znak∙ do °et∞zce Program
GrafickΘ funkce Program
Manipulace s Message boxem Program
V²poΦet Pi Program
Tisk FlexGridu na tiskßrnu K≤d
V²pis ODBC p°ipojenφ K≤d
Odemknutφ listu v Excelu K≤d
V²pis databßzφ a u₧ivatel∙ SQL serveru K≤d
Pauza v programu pomocφ API K≤d
┌prava kurzoru v TextBoxu K≤d
Jak vymazat obsah DBGridu K≤d
Jak vymazat obrßzek v PictureBoxu K≤d
Jak zjistit prvnφ volnΘ pφsmeno pro disk K≤d
┌prava instalace ve VB6 Tip
Jak zabrßnit v²b∞ru adresß°e p°i instalaci Tip

Jak zamknout poΦφtaΦ

Zablokuje poΦφtaΦ, tzn. CTRL+ALT+DEL apod. tak, ₧e nejde ud∞lat v∙bec nic (RESET samoz°ejm∞ ano), dokud nevlo₧φte heslo.
3234 byt∙ Kopφrovat

Zp∞t na obsah


Adresa sφ¥ovΘho adaptΘru

VypφÜe hardwarovou adresu sφ¥ovΘ karty. Zda je sprßvnß, m∙₧ete ov∞°it spuÜt∞nφm programu winipcfg.exe v adresß°i Windows.
2245 byt∙ Kopφrovat

Zp∞t na obsah


Jak m∞nit menu za b∞hu programu

Zdrojov² k≤d ukazuje vlastn∞ p°φklady dva. Prvnφ p°idßvß menu za b∞hu programu (pomocφ API, ne pomocφ pole menu a funkce load) a druh² p°idßvß do systΘmovΘho menu novou polo₧ku About.
4142 byt∙ Kopφrovat

Zp∞t na obsah


P°idßvßnφ znak∙ do °et∞zce

Porovnßvß rychlost p°idßvßnφ znak∙ do °et∞zce pomocφ standardnφho zp∙sobu Visual Basicu (str = str & "novy") a pomocφ API funkce CopyMemory.
6158 byt∙ Kopφrovat

Zp∞t na obsah


GrafickΘ funkce

Program ukazuje n∞kterΘ grafickΘ funkce, nap°. TransBlt, hDCToPicture, atd.
11325 byt∙ Kopφrovat

Zp∞t na obsah


Manipulace s Message boxem

Jak vytvo°it message box, kter² zmizφ sßm po urΦitΘm Φase, jak nastavit jeho sou°adnice a takΘ zm∞nit font, ukazuje tento p°φklad.
6218 byt∙ Kopφrovat

Zp∞t na obsah


V²poΦet Pi

Program poΦφtß Φφslo Pi na zadan² poΦet mφst. Jen pro zajφmavost, 1000 desetinn²ch mφst trvß p°ibli₧n∞ 4 minuty.
7378 byt∙ Kopφrovat

Zp∞t na obsah


Tisk FlexGridu na tiskßrnu

Zobrazujete-li data pomocφ FlexGridu, Φasto pot°ebujete mφt takΘ mo₧nost tato data vytisknout. P°i pou₧itφ normßlnφho Gridu nenφ problΘm. FlexGrid vÜak umφ spojovat bu≥ky do jednΘ, vlastnost MergeCells, a to u₧ se nedß jednoduÜe tisknout. Proto m∙₧ete vyzkouÜet metodu PaintPicture objektu Printer.

'Grid bude "rozprost°en" na celou Üφ°ku papφru
Printer.PaintPicture FlexGrid.Picture, 0, 0, Printer.ScaleWidth

Pokud vÜak tisknete na jehliΦkovou tiskßrnu, v²stup bude Üpatn∞ Φiteln². Proto je dobrΘ nastavit vlastnost PictureType na hodnotu 1 neboli flexPictureMonochrome.

Zp∞t na obsah


V²pis ODBC p°ipojenφ

Nßsledujφcφ k≤d vypφÜe do prvku ListView (lvwPripojeni) seznam ODBC p°ipojenφ. ListView nastavte pro zobrazenφ detail∙ (view = lvwReport).

Const SQL_SUCCESS As Long = 0
Const SQL_FETCH_NEXT As Long = 1
Const SQL_FETCH_FIRST As Long = 2

Declare Function SQLAllocEnv Lib "odbc32.dll" (Env As Long) As Integer
Declare Function SQLDataSources Lib "odbc32.dll" (ByVal hEnv As Long, _
	ByVal fDirection As Integer, ByVal szDSN As String, ByVal cbDSNMax As Integer, _
	pcbDSN As Integer, ByVal szDescriptions As String, ByVal cbDescriptionMax As Integer, _
	pcbDescription As Integer) As Integer

Dim errReturn As Integer, lngHenv As Long
Dim strDSN As String * 32, strDesc As String * 255
Dim lst As ListItem

errReturn = SQLAllocEnv(lngHenv)
If errReturn <> SQL_SUCCESS Then
  MsgBox "Nelze nalΘzt okolφ"
Else
  'Vytvoreni sloupcu v ListView
  lvwPripojeni.ListItems.Clear
  With lvwPripojeni.ColumnHeaders
    .Clear
    .Add , , "Nßzev zdroje"
    .Add , , "Popis zdroje"
  End With

  'Prochazeni jednotlivych pripojeni
  errReturn = SQLDataSources(lngHenv, SQL_FETCH_FIRST, strDSN, 32, 0, strDesc, 255, 0)
  Do While errReturn = SQL_SUCCESS
    Set lst = lvwPripojeni.ListItems.Add()
    lst.Text = strDSN
    lst.SubItems(1) = strDesc
    errReturn = SQLDataSources(lngHenv, SQL_FETCH_NEXT, strDSN, 32, _
			       Len(strDSN), strDesc, 255, Len(strDesc))
  Loop
End If

Zp∞t na obsah


Odemknutφ listu v Excelu

K napsßnφ tohoto k≤du m∞ inspiroval jeden m∙j kolega v prßci. M∞l toti₧ soubor s t°iceti listy a ty vÜechny pozamykal. Kdy₧ to m∞l hotovΘ, vzpomn∞l si, ₧e tam mß chybu. Tak je zase vÜechny odemknul, upravil v ka₧dΘm jednu bu≥ku a zase zamknul. Celß tato operace mu zabrala necel²ch 20 minut, ale kdy₧ to d∞lal pot°etφ, vypadal na zhroucenφ. Proto jsem vytvo°il proceduru, kterß pot°ebnΘ listy odemkne (v tomto p°φpad∞ vÜechny, a₧ na poslednφ) za n∞kolik sekund.

'Funkce predpoklada stejne heslo pro kazdy list
Public Sub OdemkniXls(ByVal soubor As String, ByVal heslo As String)
  Dim mExcel As Object, i As Long
  
  Set mExcel = CreateObject("Excel.Application")
  mExcel.Workbooks.Open soubor

  For i=1 To mExcel.Worksheets.Count - 1
    mExcel.Worksheets(i).Unprotect heslo
  Next i

  mExcel.Quit
  Set mExcel = Nothing
End Sub

List m∙₧ete zamknout funkcφ Protect. StejnΘ metody mß i objekt WorkBook, kde vÜak slou₧φ pro zamknutφ Φi odemknutφ celΘho seÜitu.

Zp∞t na obsah


V²pis databßzφ a u₧ivatel∙ SQL serveru

Proto₧e Microsoft uvolnil MSDE, m∙₧e mφt ka₧d² na pracovnφ stanici sv∙j "SQL server". Proto se tu obΦas objevφ i n∞jak² tip z tΘto oblasti. Tento vypφÜe vÜechny databßze na SQL serveru. K tomu pou₧φvß objekt SQLDMO.

Dim sqlSrv As sqldmo.SQLServer, i As Long

Set sqlSrv=New sqldmo.SQLServer
sqlSrv.Connect "PC9", "Sa", ""	'server, uzivatel, heslo

For i = 1 To sqlSrv.Databases.Count
  Debug.Print sqlSrv.Databases(i).Name
Next i

Podobn²m zp∙sobem, za pou₧itφ SQLDMO, m∙₧ete vypsat takΘ u₧ivatele v databßzi.

Dim sqlSrv As sqldmo.SQLServer, i As Long

Set sqlSrv=New sqldmo.SQLServer
sqlSrv.Connect "PC9", "Sa", ""	'server, uzivatel, heslo

For i = 1 To sqlSrv.Databases("master").Users.Count
  Debug.Print sqlSrv.Databases("master").Users(i).Name
Next i

Je mo₧no deklarovat prom∞nnou typu User a prochßzet u₧ivatele cyklem For .. Each (stejn∞ tak i u databßzφ).

Zp∞t na obsah


Pauza v programu pomocφ API

I kdy₧ nadpis vypadß slo₧it∞, nejednß se o nic jinΘho ne₧ o pou₧itφ API funkce Sleep. Tato funkce mß pouze jedin² parametr, dwMilliseconds, kter² urΦuje dobu v milisekundßch, po kterou bude pozastaveno provßd∞nφ programu.

Public Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

Debug.Print Time
Sleep 5000	'cekej 5 sekund
Debug.Print Time

Zp∞t na obsah


┌prava kurzoru v TextBoxu

Chcete-li mφt v TextBoxu jinou velikost a tlouÜ¥ku kurzoru ne₧ je nabφzena standardn∞, musφte pou₧φt dv∞ API funkce. CreateCaret kurzor vytvo°φ a ShowCaret jej zobrazφ. K≤d je nejlepÜφ umφstit do udßlosti GotFocus pat°iΦnΘho TextBoxu.

Public Declare Function CreateCaret Lib "user32" (ByVal hwnd As Long, _
  ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Public Declare Function ShowCaret Lib "user32" (ByVal hwnd As Long) As Long

Private Sub Text1_GotFocus()
  CreateCaret Text1.hwnd, 0, 3, 24	'sirka 3 pixely, vyska 24 pixelu
  ShowCaret Text1.hwnd
End Sub

Zp∞t na obsah


Jak vymazat obsah DBGridu

Chcete-li vymazat obsah DBGridu, staΦφ nastavit zdroji, na kter² je p°ipojen, neexistujφcφ zdroj dat. Nem∙₧ete vÜak vybrat neexistujφcφ tabulku, musφte zadat dotaz, kter² nevracφ ₧ßdnΘ zßznamy. Pro to se dob°e hodφ podmφnka, ve kterΘ je primßrnφ klφΦ roven NULL. Takov² zßznam v databßzi b²t nem∙₧e.

Public Sub VymazGrid(db As Data, ByVal tabulka As String, ByVal klic As String)
  db.RecordSource="SELECT * FROM " & tabulka & " WHERE " & klic & " IS NULL"
  db.Refresh
End Sub    

Zp∞t na obsah


Jak vymazat obrßzek v PictureBoxu

TakΘ velice jednoduch² tip. Chcete-li mφt PictureBox bez obrßzku, pou₧ijte metodu LoadPicture bez parametr∙.

Picture1.Picture=LoadPicture

Zp∞t na obsah


Jak zjistit prvnφ volnΘ pφsmeno pro disk

Funkce VolnyDisk vrßtφ prvnφ volnΘ pφsmeno pro disk. V²hodnΘ nap°. pro sφ¥ovΘ p°ipojenφ disku, kdy musφte zadat volnΘ pφsmeno.

Public Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" _
  (ByVal nDrive As String) As Long

Public Function VolnyDisk() As String
  Dim disk As Long, retVal As Long
  
  disk = 1
  Do
    disk = disk + 1 'zaciname od 2, tedy C:
    retVal = GetDriveType(Chr(disk + 65) & ":\")
  Loop Until retVal = 1
  VolnyDisk = Chr(disk + 65) & ":"
End Function

Zp∞t na obsah


┌prava instalace ve VB6

Pro vytvß°enφ instalaΦnφho programu je ve Visual Basicu 6.0 nßstroj zvan² Package & Deployment Wizard. ╚asto se vÜak stßvß, ₧e nßm nestaΦφ jeho mo₧nosti. Potom nastupuje bu∩ program od jinΘho autora nebo ·prava zdrojovΘho k≤du. Instalaci toti₧ °φdφ dva programy. SETUP.EXE rozbalφ archφv a "p°edß °φzenφ" programu SETUP1.EXE. A prßv∞ jeho zdrojov² k≤d je dodßvßn s Visual Basicem. U verze 6.0 jej najdete v adresß°i Visual Basicu, a dßle Wizards\PDWizard\Setup1. StaΦφ pouze upravit tento projekt, vytvo°it EXE a nahradit standardnφ SETUP1.EXE v adresß°i PDWizardu.

╚astou zm∞nou je "poΦeÜt∞nφ" instalace. To lze velice jednoduÜe. Setup1 toti₧ pou₧φvß veÜkerΘ texty z resource souboru, jeho₧ zdroj je rovn∞₧ p°ilo₧en. "PoΦeÜt∞n²" soubor SETUP1.RES m∙₧ete rovn∞₧ najφt na Chip CD 9/99.

DalÜφ Φastou zm∞nou je vlo₧enφ formulß°e pro registraci. V tomto kroku je pot°eba zßpis do registru. Nepou₧φvejte vlastnφ funkce, ale zkuste ty, kterΘ jsou ji₧ v projektu vytvo°eny (modul SETUP1.BAS). Ty toti₧ zapisujφ informace o zm∞nßch do logu, kter² je pou₧it p°i odinstalovßnφ programu.

Zp∞t na obsah


Jak zabrßnit v²b∞ru adresß°e p°i instalaci

N∞kdy m∙₧ete chtφt u₧ivateli p°i instalaci zabrßnit mo₧nost v²b∞ru cφlovΘho adresß°e. Nenφ to nic slo₧itΘho. StaΦφ do souboru SETUP.LST zapsat °ßdek ForceUseDefDir=1 a to hned za °ßdek DefaultDir=....

Zp∞t na obsah