Jag har på min Form lite checkboxar. Undrar varför du vill sättat värdet för CheckBoxen i click eventet? Det sker ju automatiskt. Jag håller med om att det låter konstigt....checkbox och event som triggas.
Lite beroende på vad som händer under programmets livscykel kommer dessa checkboxar att fyllas i av programmet. Eller ändras av programmet.
Exempel: check1=0
När jag gör detta triggas eventet: check1_click()
Detta är inte önskvärt då jag inom detta event ändrar status på checkboxen. För att lösa det har jag en static variabel som håller reda på om kod redan exekverar i subrutinen och i så fall gör exit sub.
============================================
Private Sub Check1_Click()
static inThis as Boolean
if inThis = True then exit sub
inThis=true
'Då följande kodrad exekveras kommer den hoppa
'till Check1_Click(), alltså till denna sub igen...
check1=0
inThis = False
End Sub
============================================
FRÅGA: Kan man lösa detta på ett smidigare sätt ?????
/peterhSv: checkbox och event som triggas.
Om du vill låsa värdet för användaren är det ju bättrer att disable den. Användaren kommer då se att värdet inte går att ändras.
Men för att undvika att koden i eventet utförs tror jag det är bättre att hindra den från att utföras när kod sätter värdena. Slipper då det andra eventet.
Private mBusy As Boolean
Private Sub Check1_Click()
If Not mBusy Then
Check1 = vbUnchecked
End If
End Sub
Private Sub Check2_Click()
If Not mBusy Then
Check1 = vbUnchecked
End If
End Sub
Private Sub Check3_Click()
If Not mBusy Then
Check1 = vbUnchecked
End If
End Sub
Private Sub Check4_Click()
If Not mBusy Then
Check1 = vbUnchecked
End If
End Sub
Private Sub Check5_Click()
If Not mBusy Then
Check1 = vbUnchecked
End If
End Sub
Private Sub Command1_Click()
mBusy = True
Check1 = vbChecked
Check2 = vbChecked
Check3 = vbChecked
Check4 = vbChecked
Check5 = vbChecked
mBusy = False
End Sub
Private Sub Command2_Click()
mBusy = True
Check1 = vbUnchecked
Check2 = vbUnchecked
Check3 = vbUnchecked
Check4 = vbUnchecked
Check5 = vbUnchecked
mBusy = False
End SubSv: checkbox och event som triggas.
Förklarar varför jag vill göra det.
Jag utvecklar ett program för att samla in mätdata från 0-255 noder. Alla noder sitter på ett RS485 nätverk och kommunicerar 9600,8,N,1 på okomplicerat sätt.
Man kan skicka kommandon till och läsa värden från modulerna.
Noderna kan variera mellan en uppsjö olika modeller. En del har 8-analoga in, andra har 3 RTD temp in för PT-100 givare.
I min Form har jag en flexgrid. Typ 15 rader * 15 kolumner. Med hjälp av denna flexgrid vill jag editera noderna. Så mitt program funkar så att jag i flexgriden kan markera en nod som jag vill konfigurera exvis rad 3 kolumn 1 detta ger noden på adress $31. OK nu kan jag beroende på vilken slags nod det är, (mitt program hanterar två modeller, kunden begränsar det till det på grund av utvecklingskostnader) konfigurera den och ange vilka kanaler på modulen som är anslutna och skall samplas. Detta görs genom att ett hexvärde fylls i i aktuell cell. exvis värdet 57 anger att modulen på adress $31 skall avläsas på kanalerna 1,4,5,6 vid varje cykelvarv. För varje cykelvarv loopas en lokal variabel som är en Mirror av flexgridden (Optimering) och frågor skickas ut på COM-porten för att läsa av alla noder och alla förvalda kanaler. Hoppas du hänger med....
Grejen är nu att vid vissa lägen när man editerar flexgridden... Säg att jag har markerat en cell och angett typ av Nod, detta markeras exvis med röd färg i flexgridcellen. Om jag sedan clickar runt i flexgridden så måste jag i runtime markera eller avmarkera vissa checkboxar, nämligen de som man klickar i för att välja nodtyp.
Ähhh jag orkar inte skriva mer. Men under editeringen sker som jag beskrev i inlägg 1... Och det måste ske. Det innebär inget problem... Men jag undrade bara om det fanns nåt smidigare sätt för att exvis upphäva eventet.
Man kan ju upphäva Query_unload men cancel=true för att få formen att ge fan i att unloada sig.
Inga tips....
/peterh