hat jemand eine Tip wie man die gewählte Checkbox aus einer ListView ermittelt ohne dass die Row selektiert wurde? Wenn man einmal die Zeile selectiert hatte geht es, aber die User denken nie dran. Außerdem habe ich im GUI 5 LVs, d.h. per Select oder Focus wird es schwierig, da es unterschiedliche Einstiegsszenarien und Vorgehensweisen gibt.
Vorgehensweise Soll:
1 - keine Zeile anwählen
2 - Checkbox klicken
3 - ermitteln der jeweiligen Zeile
bsp (siehe LV 2):
Code: Select all
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Gui, 70:Destroy
Gui, 70:New
Gui, 70:Font, bold s16
gui, 70:add, Text, x5, Liste der vorhandenen Arbeitspläne:
Gui, 70:Font, norm s10
Gui, 70:Add, Text, Section ,Artikel:
Gui, 70:add, ListView, % "xs Section w550 h550 HWNDhHLVAllBetrA grid gResultsLVAllBetrAClick AltSubmit vResultsLVAllBetrA +LV0x10000", Artikel|Bezeichnung
Loop, 10
{
rowNum := LV_Add("", "Artikel " A_Index,"test Bez " A_Index)
}
Gui, 70:add, ListView, % "xs Section w900 h160 HWNDhHLVAllBAMat grid AltSubmit gResultsLVGetDataAllBAKlickListeMat Checked NoSort vResultsLVGetDataAllBAListeMat +LV0x10000 -multi", lfdnr|Artikel-Nr(E)|Bez(E)
gosub, MaterialNeuaufbauen
gui, 70:Show, ,Arbeitsplan
return
70GuiClose:
ExitApp
return
MaterialNeuaufbauen:
Gui, 70:Default
Gui, 70:
Gui, ListView, ResultsLVGetDataAllBAListeMat
LV_Delete()
Random, anzahl , 4, 10
Loop, %anzahl%
{
rowNum := LV_Add("", A_Index,"test " A_Index,A_Now)
}
return
ResultsLVGetDataAllBAKlickListeMat:
Critical, on
If (A_GuiControl != "ResultsLVGetDataAllBAListeMat")
return
Gui, 70:Default
Gui, 70:
Gui, ListView, ResultsLVGetDataAllBAKlickListeMat
;MsgBox %A_GuiEvent% / %A_GuiControl% / %A_DefaultListView%
ItemsSelected :=LV_GetCount("S")
if (ItemsSelected=0)
{
BAMatLfdnrNr := 0
xRowSelMat := 0
xRowMat := 0
return
}
If (A_GuiEvent == "Normal") {
Gui, 70:Default
Gui, 70:
Gui, ListView, ResultsLVGetDataAllBAListeMat
xRowSelMat := A_EventInfo
LV_GetText(BAMatLfdnrNr, A_EventInfo, 1)
}
If (A_GuiEvent == "F") {
}
if (A_GuiEvent = "I")
{
xRowSelMat := A_EventInfo
Gui, 70:Default
Gui, 70:
Gui, ListView, ResultsLVGetDataAllBAListeMat
if (InStr(ErrorLevel, "c", true))
{
LV_Modify(A_EventInfo, "+Select")
LV_GetText(BAMatLfdnrNr, A_EventInfo, 1)
MsgBox, %BAMatLfdnrNr% / %A_EventInfo% / %ErrorLevel%
sQry := "UPDATE BetrAuftrMaterial SET Standard = 'N' where lfdnr = " . BAMatLfdnrNr . ";"
;MsgBox c
;DB.Exec("BEGIN TRANSACTION;")
;DB.Exec(sQry)
;DB.Exec("COMMIT TRANSACTION;")
;###################################################################
;LogoDataDB(db, A_UserName, A_Now, sQry, 1, "BetrAuftrMaterialSpeichern")
;###################################################################
;gosub, DatensubBAMat
}
if (InStr(ErrorLevel, "C", true))
{
LV_Modify(A_EventInfo, "+Select")
LV_GetText(BAMatLfdnrNr, A_EventInfo, 1)
MsgBox, %BAMatLfdnrNr% / %A_EventInfo% / %ErrorLevel%
;DB.Exec("BEGIN TRANSACTION;")
;sQry := "UPDATE BetrAuftrMaterial SET Standard = 'N' where artikelnr = '" . GeklicktFMAllBAArtikelNr . "';"
;DB.Exec(sQry)
;sQry := "UPDATE BetrAuftrMaterial SET Standard = 'J' where lfdnr = " . BAMatLfdnrNr . ";"
;DB.Exec(sQry)
;DB.Exec("COMMIT TRANSACTION;")
;###################################################################
;LogoDataDB(db, A_UserName, A_Now, sQry, 1, "BetrAuftrMaterialSpeichern")
;###################################################################
;gosub, DatensubBAMat
}
}
Critical, off
return
ResultsLVAllBetrAClick:
Critical, on
Gui, 70:Submit, nohide
if (A_GuiEvent = "Normal")
{
Gui, 70:Default
Gui, 70:
Gui, ListView, ResultsLVAllBetrA
MsgBox %A_GuiEvent% / %A_GuiControl% / %A_DefaultListView%
gosub, MaterialNeuaufbauen
}
Critical, off
return