- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Milyen alaplapot vegyek?
- SSD kibeszélő
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Gamepad
- IGP nélküli processzorokkal készül az Intel és az AMD
- Pokoli repetát hoz az új GeForce driver
- AMD Navi Radeon™ RX 9xxx sorozat
- Sony MILC fényképezőgépcsalád
- Milyen notebookot vegyek?
Új hozzászólás Aktív témák
-
ArchElf
addikt
válasz
Cpt. Flint #1501 üzenetére
Pedig jó volna ha megértenéd a változók hatókörét. Nem tudom milyen fejlesztési tapasztalatod lehet, de ez a VB-re nem nagyon terjed ki.
Anélkül elég nehezen tudom elmagyarázni azt, amit látsz (és nem éresz meg). De röviden azért megpróbálom:
- Ha egy függvény definíciójában van definiálva egy változó (vastaggal)
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
azt hiába definiálod előre, az adott függvényben az itt definiált "változat" fog élni.
- Ha definiálsz egy változót egy függvényben, attól még az onnan meghívott függvényekben a változó nem létezik. A változó hatóköre csak a definiálás helyére érvényes (kivétel a kód "gyökerében" globálisan definiált változók, de azok a függvényekben felüldefiniálhatók - pl. mint paraméter)
- Használd az Option Explicit parancsot (kód legelején), hogy lásd, hogy minden változód helyesen van definiálva (és nem írtál el sehol semmit). Ez az utasítás kikényszeríti a változók definiálását.Az ActiveControl az aktuális konténerben aktív kontrolt kéri le. Arra meg kell nézned, hogy Container típusú-e és vannak-e tagjai, ha iden abban is meg kell nézni, hogy van-e aktív komponens -rekurzívan el lehet jutni az utolsó tagig, ami jelen esetben a TextBox1 komponens. De a KeyCode-ot és Shift-et nem lehet nem átadni. (Ha pedig odaírod, hogy ByVal - azaz érték és nem referencia szerinti átadás van -, akkor átkonvertálja neked az MSForms.ReturnInteger-t mezei Integer-ré)
Option Explicit
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
csakszam KeyCode, Shift
End Sub
Sub csakszam(ByVal KeyCode As Integer, ByVal Shift As Integer)
Dim Vezerlo As Control
Set Vezerlo = GetActive(ActiveControl)
'MsgBox TypeName(GetActive(ActiveControl))
If TypeName(Vezerlo) <> "TextBox" Then
Exit Sub
End If
If Shift <> 0 Then
Vezerlo.Locked = True
Else
If KeyCode = 8 Or KeyCode = 46 Or _
(KeyCode >= 48 And KeyCode <= 57) _
Or (KeyCode >= 96 And KeyCode <= 105) Then
Vezerlo.Locked = False
Else
Vezerlo.Locked = True
End If
End If
End Sub
Private Function GetActive(con As Control) As Control
If TypeName(con) = "UserForm" Then
Dim f As UserForm
Set f = con
Set GetActive = GetActive(f.ActiveControl)
ElseIf TypeName(con) = "MultiPage" Then
Dim mp As MultiPage
Set mp = con
Set GetActive = GetActive(mp.SelectedItem)
ElseIf TypeName(con) = "Page" Then
Dim pg As Page
Set pg = con
Set GetActive = GetActive(pg.ActiveControl)
ElseIf TypeName(con) = "Frame" Then
Dim fr As Frame
Set fr = con
Set GetActive = GetActive(fr.ActiveControl)
Else
Set GetActive = con
End If
End FunctionAE
Új hozzászólás Aktív témák
- Spórolós topik
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Eredeti játékok OFF topik
- VoLTE/VoWiFi
- Milyen alaplapot vegyek?
- Nyíregyháza és környéke adok-veszek-beszélgetek
- Az áremelések és a GTA VI késése miatt nem költekeznek a játékosok?
- Witcher topik
- War Thunder - MMO Combat Game
- Xbox Series X|S
- További aktív témák...
- Intel Core Ultra 7 265 /// Bontatlan, Teljesen Új // Üzletből, Számlával és Garanciával
- Csere-Beszámítás! Ryzen 9 9950X Processzor!
- Újszerű Gamer Asztali PC Számítógép 2026-ig Garis ASUS H510M-K R2.0 i5 11400F RTX 4060 8GB Dobozába
- Samsung Galaxy Tab A8 (2021) , 3/32 GB,
- Samsung Galaxy S6 Lite (2022) , 4/64 GB ,Wi-fi
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Bomba ár! Lenovo ThinkPad X250 - i5-5GEN I 8GB I 128GB SSD I 12,5" HD I Cam I W10 I Garancia!
- AKCIÓ! AMD Ryzen 5 2600 6 mag 12 szál processzor garanciával hibátlan működéssel
- Nvidia Quadro M2000/ M4000/ P2000/ P2200/ P4000/ P5000/ RTX 4000/ RTX A2000 / RTX A4000
- Dell USB-C, Thunderbolt 3, TB3, TB4 dokkolók (K20A) WD19TB/ WD19TBS/ WD22TB4, (K16A) TB16/ TB18DC
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest