40.1 Úvod do čtvrté desítky
40.2 Vlastní typ binárního souboru
40.3 Flexgrid - pokračování
40.4 Volání procedur událostí v kódu
40.5 Dodatek o objektu Label
40.6 Domácí úkol
40.7 V další lekci
40.1 Úvod do čtvrté desítky
Toto je jubilejní 40. lekce. Takhle jsem to sice nechtěl, ale vyšlo to tak. Mělo tu být něco velmi zajímavého, ale bohužel tomu tak nebude. Musím totiž splnit nějaké sliby a povinnosti. Ze slibů je to ukázka vlastního binárního souboru, která se mi nějakým způsobem vytratila, a z povinností je to dokončení Flexgridu, který ovšem osobně moc rád nemám.
40.2 Vlastní typ binárního souboru
Následující kód - tedy předvedení binárního souboru - pochází z návrhu na jednu hru. Na styl Diabla, ale s grafikou podobnou spíše hře Pokémon pro Gameboy color. Bohužel jsem se do tohoto projektu nějak zamotal a nemám čas v něm pokračovat, snad jindy :) Kód využívá především datových typů. Ty ho dělají přehlednější. Kód je značně ořezán, protože byste museli sakra dlouho skrolovat a asi byste se nedozvěděli nic navíc. Ale pokud chcete dělat savy a podobné věci, doporučuji používat uživatelsky definované typy, je to fakt lepší.
Kód:
Do modulu:
Public Type Waepon 'popisuje vlastnosti zbraní
Jmeno As String * 16
Damage As Byte
Durability As Byte
Cost As Long
NeedStrange As Byte
Special As Byte
Magic As Byte
MagicHP As Byte
Description As String * 255
End Type
Public Type Armor 'popisuje vlastnosi brnění
Jmeno As String * 16
Durbilty As Byte
Cost As Long
NeedStrange As Byte
Special As Byte
Magic As Byte
Description As String * 255
End Type
Public Type Charakter 'popisuje vlastnosti postav, ale nejsou tam všechny
Jemno As String * 16
Exp As Long
Level As Byte
Money As Long
Aura As Byte
Streng As Byte
Dexterity As Byte
Magistry As Byte
Life As Integer
maxLife As Integer
Mana As Integer
maxMana As Integer
Year As Byte
End Type
Public Type Magic 'zde jsou uvadeny pouze základní skupiny, běžně mají ještě podtypy
Fire As Byte
Ice As Byte
Elct As Byte
White As Byte
Black As Byte
Phys As Byte
Curse As Byte
End Type
Na formulář přidat 4 tlačítka, toto je kód do modulu formuláře:
Private cokoliv As Long 'toto je tu jen abyste viděli, jak se prcuje s jednotlivými proměnnými
Private Char1 As Charakter
Private armor1 As Armor
Private Waepon1 As Waepon
Private Mag As Magic
Sub SaveToBinnary()
Open "c:/charakter.cha" For Binary As #1
Put #1, 1, Char1
Put #1, , cokoliv
Put #1, , Waepon1
Close #1
End Sub
Sub LoadFromBinnary()
Open "c:/charakter.cha" For Binary As #1
Get #1, 1, Char1
Get #1, , cokoliv
Get #1, , Waepon1
Close #1
End Sub
Private Sub Command1_Click()
With Char1
.Jemno = "DruSeev"
.Exp = 12845
.Level = 12
.Money = 350
.Aura = 20
.Streng = 11
.Dexterity = 11
.Magistry = 14
.Life = 105
.maxLife = 106
.Mana = 20
.maxMana = 163
.Year = 2
End With
With Waepon1
.Jmeno = "Sword of darkness"
.Damage = 5
.Durability = 21
.Description = "meč se vyznačuje temnou silou, jež oslepuje protivníka, za to se platí nízkým zraněním "
End With
With Mag
.Fire = 0
.Ice = 3
.Elct = 1
.White = 0
.Black = 6
.Phys = 2
.Curse = 12
End With
cokoliv = 7
End Sub
Private Sub Command2_Click()
SaveToBinnary
End Sub
Private Sub Command3_Click()
LoadFromBinnary
End Sub
Private Sub Command4_Click()
With Char1
Print .Jemno
Print .Level
Print .Exp
End With
With Waepon1
Print .Damage
Print .Jmeno
Print .Description
End With
Print cokoliv
End Sub
Prvním tlačítkem uložíte hodnoty do proměnných. Druhým vytvoříte soubor a uložíte hodnoty do něj. Pak můžete formulář zavřít. Potom hodnoty pomocí třetího tlačítka načtete do proměnných a pomocí čtvrtého tlačítka je vytisknete na formulář. Nevytahoval jsem vše, protože - jak jsem psal nahoře - by byl kód příliš roztáhlý. Proto vypisuji pouze několik hodnot, však to vyzkoušejte sami. A teď už ke druhé části, tou je propojení FlexGridu s databází.
40.3 Flexgrid pokračování
Upřímně řečeno nevím, co mě to napadlo roztahovat Flex Grid do dvou lekcí, těch pár řádků, co tu napíšu, za to ani nestojí. Protože pokud chcete data z databáze dát do flexgridu, tak opravdu nemáte moc práce, stačí si vhodně nastavit flexgrid a potom už jen u flexgridu nastavit správě vlastnost DataSource na Data1 nebo na název všeho objektu Data. Vzhledem k tomu, že jsem to moc neodhadl, tak ještě něco málo přidám.
40.4 Volání procedur událostí v kódu
Pokud chceme zavolat nějakou proceduru události v kódu, tak ji voláme jejím jménem, takto:
Private Sub Command1_Click()
Print "x", 135
Print "y", 523
End Sub
Private Sub Command2_Click()
Command1_Click
End Sub
Pokud má funkce parametry voláme ji takto:
Private Sub Command1_Click()
Command2_MouseDown 1, 0, 150, 150
End Sub
Private Sub Command2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Print Button
Print Shift
Print X
Print Y
End Sub
To by bylo tak vše k danému tématu.
40.5 Dodatek o objektu Label
Objet label má ještě dvě vlastnosti, o kterých jsem se nezmínil, tak to chci napravit. Takže zaprvé je to vlastnost Autosize. Pokud ji nastavíte na true, tak se label bude při vkládání roztahovat do délky. Pokud ovšem nastavíte na true i vlastnost wordwarp, tak se bude roztahovat i na výšku a to tak, že bude řádky zalamovat v mezerách. Nemusíte tedy mít strach, že by vám rozpůlil slovo.
40.6 Domácí úkol
Vytvořte vlastní binární soubor jakéhokoliv programu
40.7 V další lekci.
V další lekci zase nějaké drobnosti na doplnění.