Program, který ukazuje, jak za pomocí PictureBoxu nakreslit graf, v tomto případě z dat v databázi. | |
6032 bytů | Kopírovat |
Nemáte-li rádi aplikaci Crystal report, zkuste tisknout z databáze sami pomocí objektu Printer. Zde je malý příklad. | |
7321 bytů | Kopírovat |
Protože zde nenaleznete program, ale ActiveX prvek, hodil by se tento příspěvek spíše do části ActiveX. Obsahuje však i svůj zdrojový kód a 8 příkladů, proto jsme jej zařadili sem. A co umí? Prvek umí detekovat zprávy, které nejsou přímo podporovány Visual Basicem. | |
46383 bytů | Kopírovat |
Pokud nastane nějaká chyba, většinou chcete dát uživateli vědět jaká. Jak zobrazit popis chyb, které vyvolává operační systém, najdete v tomto programu. | |
1652 bytů | Kopírovat |
Pokud používáte čtyřmístný formát pro vyjádření roku, nemusíte si s přechodem na rok 2000 dělat žádné starosti. Pokud však používáte pouze dvoumístný formát, budou pro vás další informace určitě důležité.
Visual Basic do verze 3.0 včetně
V těchto verzích, je jakýkoliv dvoumístný rok považován za rok 20. století. Tedy jakýkoliv dvoumístný rok bude převeden na rok začínající 19. Např. 95, bude 1995, 21 bude 1921 atd.
Visual Basic 4.0
Protože od této verze nejsou funkce pro datum implementovány v runtime knihovnách, ale v knihovně OLE Automation, záleží při převodu data na verzi knihoven OLE Automation. Jediná funkce, která je nadále v runtime knihovnách je DateSerial. Pro ní platí stejné pravidlo jako pro 16-bitové aplikace.
V 16-bitových aplikacích (16-bitová verze OLE) jsou veškeré dvoumístné roky převedeny na století aktuálního systémového data. Tzn. máte-li systémové datum 2001, bude rok 23 převeden na 2023, je-li systémové datum 1998, bude rok 23 převeden na 1923.
Ve 32-bitových aplikacích je situace stejná, je-li nainstalován pouze VB 4.0 (knihovna OLE Automation - OleAut32.DLL - verze 2.1). Pokud máte verzi 2.2 a vyšší (např. v produktech Internet Explorer 3.0 a vyšší, Windows NT 3.51 SP5, Windows NT 4.0, Windows 95 OSR 2, Office 97, Visual Basic 5.0, a další), je dvoumístný rok 30 až 99 převeden na 1930 až 1999, rok 00 až 29 je převeden na 2000 až 2029.
Visual Basic 5.0 a vyšší
U této a vyšší verze Visual Basicu jsou všechny dvoumístné roky (včetně použití funkce DateSerial) 30 až 99 převedeny na 1930 až 1999, roky 00 až 29 jsou převedeny na 2000 až 2029.
Na midulém CD jsme uvedli tip, jak pomocí funkce SHFormatDrive naformátovat disketu. Zde
naleznete celý popis této funkce.
Declare Function SHFormatDrive Lib "shell32"(ByVal hwndOwner As Long, _
ByVal iDrive As Long, ByVal iCapacity As Long, ByVal iFormatType As Long) As Long
hwndOwner - handle okna, ke kterému se vztahuje dialog
iDrive - mechanika k formátování (A = 0, B = 1, atd.)
iCapacity - výsledná kapacita média
'Konstanty pro Windows 95
Public Const SHFD_CAPACITY_DEFAULT = 0 'defaultní kapacita
Public Const SHFD_CAPACITY_360 = 3 '360 kB
Public Const SHFD_CAPACITY_720 = 5 '720 kB
iFormatType - typ formátování
'Konstanty pro Windows 95
Public Const SHFD_FORMAT_QUICK = 0 'rychlý formát
Public Const SHFD_FORMAT_FULL = 1 'plný formát
Public Const SHFD_FORMAT_SYSONLY = 2 'zkopírovat pouze systémové soubory
'Konstanty pro Windows NT
Public Const SHFD_FORMAT_FULL = 0 'plný formát
Public Const SHFD_FORMAT_QUICK = 1 'rychlý formát
Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long
Funkce GetSystemMetrics vrací informace o mnoha různých věcech ve Windows. Mnoho
z nich je velikost objektů, např. obrazovky, ikon, atd. Dále také poskytuje informace
o systému. Jakou informaci funkce vrátí, je závislé na parametru nIndex. Jeho hodnoty
mohou být následující.
SM_ARRANGE = 56
Pouze Win95/98 - vrací metodu použitou k zobrazení minimalizovaných oken: Hodnota je
kombinací dvou následujících. Jedna pro počáteční pozici a druhá je vzdálenost, v jaké
je přidána další.
ARW_BOTTOMLEFT = 0
začíná v levém spodním rohu obrazovky
ARW_BOTTOMRIGHT = 1
začíná v pravém spodním rohu obrazovky
ARW_TOPLEFT = 2
začíná v levém horním rohu obrazovky
ARW_TOPRIGHT = 3
začíná v pravém horním rohu obrazovky
ARW_LEFT = 0
přidá ikonu vlevo od existující
ARW_UP = 0
přidá ikonu nad existující
ARW_RIGHT = 4
přidá ikonu vpravo od existující
ARW_DOWN = 4
přidá ikonu pod existující
ARW_HIDE = 8
neumístí ikonu
SM_CLEANBOOT = 67
Pouze Win95/98 - vrací, jak byl počítač nastartován. 0 normálně, 1 nouzový start,
2 nouzový start s prací v síti
SM_CMOUSEBUTTONS = 43
Počet tlačítek myši, 0 v případě, že myš není nainstalovaná
SM_CXBORDER = 5
WinNT - šířka pozadí okna
Win95/98 - šířka pozadí "single" okna
SM_CXCURSOR = 13
WinNT - šířka kurzoru
Win95/98 - šířka standardní kurozorové bitmapy
SM_CXDLGFRAME = 7
Pouze WinNT - šířka rámu dialogu
SM_CXDOUBLECLK = 36
Šířka obdélníku, ve kterém musí být dvakrát kliknuto pro rozpoznání double-click
SM_CXDRAG = 68
Minimální šířka, o kterou se musí kurzor pohnout pro začátek operace drag-and-drop
SM_CXEDGE = 45
Pouze Win95/98 - šířka 3D pozadí okna
SM_CXFRAME = 32
Pouze WinNT - šířka pozadí okna, které může měnit velikost
SM_CXFULLSCREEN = 16
Šířka plochy v okně, které je roztáhnuto na celou obrazovku
SM_CXHSCROLL = 21
Pouze Win95/98 - šířka bitmapy ukazatele na horizontálním ScrollBaru
SM_CXHTHUMB = 10
Šířka "posuvníku" horizontálního ScrollBaru
SM_CXICON = 11
Standardní (default) šířka ikony
SM_CXICONSPACING = 38
WinNT - šířka buňky pro umístění ikony
Win95/98 - šířka buňky pro umístění ikony v pohledu Velké ikony (Large View)
SM_CXMAXIMIZED = 61
Pouze Win95/98 - standardní šířka maximalizovaného okna
SM_CXMAXTRACK = 59
Pouze Win95/98 - standardní maximální šířka, na kterou je možné zvětšit okno
SM_CXMENUCHECK = 71
Pouze Win95/98 - šířka standardní bitmapy pro zobrazení check-mark menu
SM_CXMENUSIZE = 54
Pouze Win95/98 - šířka tlačítka v menu (menu bar button)
SM_CXMIN = 28
Minimální šířka okna
SM_CXMINIMIZED = 57
Pouze Win95/98 - šířka normálního minimalizovaného okna
SM_CXMINSPACING = 47
Pouze Win95/98 - šířka buňky pro zobrazování minimalizovaných oken
SM_CXMINTRACK = 34
Pouze Win95/98 - standardní minimální šířka, kam je uživateli dovoleno zmenšit okno
SM_CXSCREEN = 0
Šířka obrazovky
SM_CXSIZE = 30
WinNT - šířka bitmapy titulku okna (TitleBar)
Win95/98 - šířka tlačítka v titulku okna
SM_CXSIZEFRAME = 32
Pouze Win95/98 - šířka "Thick" rámu okna
SM_CXSMICON = 49
Pouze Win95/98 - doporučená šířka pro malé ikony
SM_CXSMSIZE = 52
Pouze Win95/98 - šířka malého tlačítka v titulku okna
SM_CXVSCROLL = 2
Pouze Win95/98 - šířka vertikálního ScrollBaru
SM_CYBORDER = 6
WinNT - výška pozadí okna
Win95/98 - výška pozadí "single" okna
SM_CYCAPTION = 4
Výška plochy titulkového pruhu
SM_CYCURSOR = 14
WinNT - výška kurzoru
Win95/98 - výška standardní kurzorové bitmapy
SM_CYDLGFRAME = 8
Pouze WinNT - výška rámu dialogu
SM_CYDOUBLECLK = 37
Výška obdélníku, do kterého je nutno kliknout myší pro rozpoznání double-click
SM_CYDRAG = 69
Minimální výška o kterou se musí posunou kurzor pro začátek operace drag-and-drop
SM_CYEDGE = 46
Pouze Win95/98 - výška 3D pozadí okna
SM_CYFRAME = 33
Pouze WinNT - výška pozadí okna, které může měnit velikost
SM_CYFULLSCREEN = 17
Výška plochy okna, které je přes celou obrazovku (full-screen)
SM_CYHSCROLL = 3
Pouze Win95/98 - výška horizontálního ScrollBaru
SM_CYICON = 12
Standardní výška ikony
SM_CYICONSPACING = 39
WinNT - výška buňky pro umístění ikony
Win95/98 - výška buňky pro umístění ikony v pohledu Velké ikony (Large icon view)
SM_CYMAXIMIZED = 62
Pouze Win95/98 - standardní výška maximalizovaného okna
SM_CYMAXTRACK = 60
Pouze Win95/98 - standardní maximální výška, kam může uživatel roztáhnout okno
SM_CYMENU = 15
Výška panelu menu
SM_CYMENUCHECK = 72
Pouze Win95/98 - výška standardní bitmapy pro zobrazení check-mark menu
SM_CYMENUSIZE = 55
Pouze Win95/98 - výška tlačítka v menu (menu bar button)
SM_CYMIN = 29
Minimální výška okna
SM_CYMINIMIZED = 58
Pouze Win95/98 - výška normálního minimalizovaného okna
SM_CYMINSPACING = 48
Pouze Win95/98 - výška buňky pro umístění minimalizovaného okna
SM_CYMINTRACK = 35
Pouze Win95/98 - standardní minimální výška, na kterou může uživatel zmenšit okno
SM_CYSCREEN = 1
Výška obrazovky
SM_CYSIZE = 31
WinNT - výška bitmapy titulkového pruhu
Win95/98 - výška tlačítka v titulkovém pruhu
SM_CYSIZEFRAME = 33
Pouze Win95/98 - výška rámu "thick" okna
SM_CYSMCAPTION = 51
Pouze Win95/98 - výška plochy malého titulku
SM_CYSMICON = 50
Pouze Win95/98 - doporučená výška pro malé ikony
SM_CYSMSIZE = 53
Pouze Win95/98 - výška malého tlačítka v titulkovém pruhu
SM_CYVSCROLL = 20
Pouze Win95/98 - výška bitmapy ukazatele na vertikálním ScrollBaru
SM_DEBUG = 22
Vrací nenulovou hodnotu, pokud je nainstalována ladící verze USER.EXE, 0 pokud ne
SM_MENUDROPALIGNMENT = 40
Vrací nenulovou hodnotu, pokud se popup menu zobrazuje vpravo, 0 v případě
zobrazování vlevo
SM_MIDEASTENABLED = 74
Vrací nenulovou hodnotu, jestli je system nastaven na použití Hebrejštiny
a Arabštiny, 0 pokud ne
SM_MOUSEPRESENT = 19
Vrací nenulovou hodnotu, jestliže je myš nainstalována a rozpoznána, 0 pokud ne
SM_NETWORK = 63
Pokud je nainstalována síť, nastaví bit &H1 návratové hodnoty.
SM_PENWINDOWS = 41
Vrací nenulovou hodnotu, jestliže je nainstalováno rozšíření MS Windows
for Pen computing, jinak 0
SM_SLOWMACHINE = 73
Vrací nenulovou hodnotu, pokud má PC pomalý procesor, 0 pokud ne
SM_SWAPBUTTON = 23
Vrací nenulovou hodnotu, pokud jsou přehozena tlačítka myši (levé za pravé a naopak)
Zaheslovaná databáze Access, žádný problém
Zaheslovali jste si databázi Access a neznáte heslo? Použijte tuto VELICE JEDNODUCHOU
funkci. Na ofsetu &H42 (neboli 66) stačí přečíst 13 znaků a použít funkci XOR s jednotným
klíčem a hle, heslo je na světě. Databáze může být klidně i zašifrovaná, postup se vůbec
nemění.
Public Function DejMDBHeslo(ByVal soubor As String) As String
Dim i As Long, s As Integer, strKlic As String
Dim strHeslo As String, strCti As String * 13
If Len(Dir(soubor)) = 0 Then
MsgBox "Soubor neexistuje"
Else
strKlic = "†űě7]DśúĆ^(ć"
s = FreeFile
Open soubor For Binary As #s
Get #s, 67, strCti
Close s
For i = 0 To 12
strHeslo = strHeslo & _
Chr(Asc(Mid(strCti, i + 1, 1)) Xor Asc(Mid(strKlic, i + 1, 1)))
Next i
DejMDBHeslo = strHeslo
End If
End Function
Kdo tomu nevěříte, zkopírujte si tento prográmek, spusťte jej a potom zkuste databázi otevřít z heslem, které vám nabídl.
Chcete-li mít některou položku ve výčtovém typu skrytou, uzavřete ji do hranatých závorek
a před název dejte podtržítko. Celé to může vypadat třeba takto:
Public Enum mujVycet
prvni=1
druhy=2
[_skryty]=3
posledni=4
End Enum
V tomto případě je skrytá položka [_skryty].
Jestliže používáte prvek WebBrowser, a chcete zobrazit prázdnou stránku, zkuste
tento kód:
Public Sub PrazdnaWWW(browser AS WebBrowser)
browser.Navigate "about:blank"
End Sub
Je to výhodné už z toho důvodu, že WebBrowser vypadá s prázdnou stránkou mnohem lépe než bez jakékoliv stránky (přidá ScrollBar a udělá ze sebe 3D okno).
Máte-li povolen MultiSelect (u ListBoxu) a chcete zjistit, které položky jsou vybrané,
není jiné cesty než této:
Dim i As Long
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then
Debug.Print "Položka " & List1.List(i) & " je vybrána."
End If
Next i
Pokud zná někdo lepší způsob, neváhejte a napište.
Přesune-li se uživatel Vašeho programu na nějaké textové pole (po našem TextBox), často
chce původní text automaticky označit. Jak to udělat? Vyberte si, co se vám líbí více:
Private Sub Text1_GotFocus()
SendKeys "{home}+{end}"
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Jak přeskočit na konec textu v TextBoxu
Text1.SelStart = Len(Text1.Text)
To je opravdu všechno.
ENTER se chová stejně jako TAB
Na stisk klávesy TAB se focus (fokus, ohnisko ...) přesune na další prvek. Chcete-li
tohoto dosáhnout i po stisku klávesy ENTER, použijte tento kód:
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
SendKeys "{TAB}"
End If
End Sub
Množství červené, zelené a modré barvy v barvě určené jedním číslem získáme takto:
cervena = barva Mod 256
zelena = (barva \ 256) Mod 256
modra = barva \ 256 \ 256
Pokud dostanete číslo v poněkud jiném formátu (systémové barvy, třeba &H7000000B),
vykreslete v této barvě bod na obrazovku a zjistěte jeho barvu takto:
PSet (1,1),&H7000000B 'vykresleni bodu
barva=Point(1,1) 'zjisteni barvy
S takto zjištěnou barvou už můžete zopakovat výše uvedený postup rozkladu na jednotlivé složky RGB.