Guten Morgen
Zitat von
Jackie1983:
aber es gibt kein Funktionen wie indexofobject(spalte); oder Delete(zeile)
es wird dein Mangel an Programmiererfahrung sein, dass du DeleteRow nicht als Analogie zu Delete(Zeile) erkennst. Bei deiner Suche nach IndexOfObject(spalte) musst du wissen, dass beim StringGrid jeder Zelle ein Object zugeordnet werden kann. Wenn du nur ein Object je Spalte benötigst, dann nimm die Zelle mit dem Index 0:
Delphi-Quellcode:
with StringGrid do
begin
Objects[iCol, 0] := Pointer(42);
idx := Rows[0].IndexOfObject(Pointer(42));
ShowMessage(BoolToStr(idx = iCol));
end;
// Getippt und nicht getestet
Ich habe beim Verlinken der
Unit GridUtils offenbar eine ältere Fassung erwischt. Da ich den Beitrag mit der neuesten Fassung selbst nicht lokalisieren kann, hänge ich die
Unit nochmal an.
Zitat von
Cyberbob:
Was spricht gegen ein TListView?
Die ListView ist kein genereller Ersatz für ein StringGrid. Sie ist vornehmlich als Kernbaustein des Windows Explorers mit W95 eingeführt und seither stetig weiterentwickelt worden. Das StringGrid hingegen ist die Implementierung einer Sparse Matrix. Dabei handelt es sich um einen abstrakten Datentyp, der speziell auf die Verwaltung dünn besiedelter Matrizen ausgelegt ist. Als generellen Ersatz würde ich eher den VirtualTreeView von Mike Lischke sehen, aber den kann ich keinem Programmieranfänger empfehlen.
Freundliche Grüße