Tach zusammen!
Obwohl ich ja schon länger mit dem Grid arbeite, werd ich aus der ListItems-Eigenschaft immer noch nicht schlau.
So ist es doch so, dass man mit einer Referenz auf eine ListItems-Instanz nur so lange arbeiten sollte, bis man diese Eigenschaft erneut aufruft.
Seit ich mich daran halte, sind auch einige hartnäckige Probleme verschwunden - und so wähnte ich mich schon als ListItems-Experte...
Bis jetzt, denn im folgenden Code-Schnipsel mache ich meiner Ansicht nach nichts falsch und in der IDE funktioniert auch alles, wie es soll.
Nur in der kompilierten EXE funktioniert es nicht. Da landet der im Else-Zweig gespeicherte 'OrigListKey' scheinbar im Daten-Nirvana. 'Noch kein Original-Schlüssel gespeichert?
If sevGrid1.ListItems(RowNo).CellText("OrigListKey") = "" Then
'Schlüsselwert vorhanden?
If sevGrid1.ListItems(RowNo).CellText("ListKey") = "" Then
'Speichere -1 als Original-Schlüssel
sevGrid1.ListItems(RowNo).CellText("OrigListKey") = "-1"
Else
'Speichere den aktuellen Schlüssel als Original
sevGrid1.ListItems(RowNo).CellText("OrigListKey") = _
sevGrid1.ListItems(RowNo).CellText("ListKey")
End If
End IfUnd bitte nicht herum meckern, dass ich keinen With-Block benutze, denn damit funktioniert es in der Tat auch in der EXE.
Ich würde aber gerne wissen, warum es so nicht funktioniert, damit ich ggf. ähnlich Fälle in meinem Projekt lokalisieren kann.
Vielen Dank schonmal für die Hilfe.
Gruß!
Reinski
PS: Demo-Projekt mit SevGrid1, einem Command1 und folgendem Code:Option Explicit
Private Sub Command1_Click()
Static RowNo As Long
RowNo = RowNo + 1
If RowNo > sevGrid1.Rows Then
RowNo = 1
End If
'Noch kein Original-Schlüssel gespeichert?
If sevGrid1.ListItems(RowNo).CellText("OrigListKey") = "" Then
'Schlüsselwert vorhanden?
If sevGrid1.ListItems(RowNo).CellText("ListKey") = "" Then
'Speichere -1 als Original-Schlüssel
sevGrid1.ListItems(RowNo).CellText("OrigListKey") = "-1"
Else
'Speichere den aktuellen Schlüssel als Original
sevGrid1.ListItems(RowNo).CellText("OrigListKey") = _
sevGrid1.ListItems(RowNo).CellText("ListKey")
End If
End If
End Sub
Private Sub Form_Load()
With sevGrid1
.DataMode = Mode_List
.AllowEdit = True
.ColumnAdd "Val", "Val", 1500, ALIGNMENT_LEFT, , TYPE_COMBOLIST
.ColumnAdd "ListKey", "ListKey"
.ColumnAdd "OrigListKey", "OrigListKey"
.AddItem "Montag" & vbTab & 1
.AddItem "Mittwoch" & vbTab & 3
.AddItem "Donnerstag" & vbTab & 4
.AddItem ""
End With
End SubImmer noch auf der Suche nach dem "Tu's trotzdem"-Button...  |