Hallo Dieter, wie kann ich am besten die ListView imitieren?
Ich lese die Daten in einen Zwischenspeicher, daraus erstelle ich die Gridliste.
Zum Ändern der Daten lese ich die Daten aus dem Zwischenspeicher,
ändere die Daten in einer eigenen Form,
speichere die geänderten Daten aus dem inzwischen geänderten Zwischenspeicher,
rufe über einen CallBack die Sub myFaktListe_OnStore auf,
und will nun die Gridliste in der geänderten Zeile ändern.
Ich verwende hier den [u]List_Mode.
Dies ist der ListView-Code:
Private Sub myFaktListe_OnStore(ByVal Fakt As BcFakt, ByVal isNew As Boolean)
With LV(1)
If isNew Then
FillListItem Fakt, Nothing
Else
FillListItem Fakt, .SelectedItem
End If
Set .SelectedItem = .ListItems("#" & Fakt.id)
End With
End Sub Fakt bzw. BcFakt ist ein Objekt, das die Daten enthält.
Bisheriger Code für das Grid:
Private Sub myFaktListe_OnStore(ByVal Fakt As BcFakt, ByVal isNew As Boolean)
With Grid2
If isNew Then
FillListItem Fakt, Nothing
Else
FillListItem Fakt, [u].SelectedItem ???
End If
Set .SelectedItem = ?????
End With
End Sub Wie kann ich [u]".ListItems("#" & Fakt.id)" ersetzen?
[u]"#" & Fakt.id soll einen Key ergeben.
In der ersten Spalte habe ich den Key (GUID) gespeichert und ich kann ihn zusätzlich als Key speichern, wenn nötig.
sID = Fakt.id
Set oItem = Grid2.AddItem(sHelp, , , sID)
anstatt von:
Set oItem = Grid2.AddItem(sHelp) In sHelp sind alle Spalten einer Zeile enthalten.
Ein kurzer Blick in FillListItem für ListView:
Private Sub FillListItem(ByVal Fakt As BcFakt, ByVal LI As ListItem)
.....
With LV(1)
If LI Is Nothing Then
[u]Set LI = .ListItems.Add(, "#" & Fakt.id, Fakt.Jahr)
Else
[u]LI.Text = Fakt.Jahr
End If
Set irec = Fakt
For C = 2 To .ColumnHeaders.Count
fieldname = .ColumnHeaders(C).Key
Select Case fieldname
....
Case Else
LI.SubItems(C - 1) = "" & irec.Field(fieldname)
End Select
Next
.... Ich müsste die beiden unterstrichenen Zeilen irgendwie ersetzen.
Der bisherige Code für das Grid:
Private Sub FillListItem(ByVal Fakt As BcFakt, ByVal LI As ListItem)
Dim oItem As sevDataGrid2.ListItem
Dim sHelp As String
Dim sID As String
sID = Fakt.id
sHelp = sID & vbTab
sHelp = sHelp & Fakt.FaktNo & vbTab
....
Set oItem = Grid2.AddItem(sHelp, , , sID) '< ergibt den Fehler:
' Schlüssel ist in dieser Auflistung nicht eindeutig! Wenn ich aber "Set oItem = Grid2.AddItem(sHelp)" verwende, wird die GridListe nicht geändert.
Muss ich da irgendwie mit DoEdit etc. arbeiten?
Bitte um Hilfe
Danke |