Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Suche ein StringGrid das wie eine ListBox behandelt wird (https://www.delphipraxis.net/100776-suche-ein-stringgrid-das-wie-eine-listbox-behandelt-wird.html)

Jackie1983 3. Okt 2007 19:21


Suche ein StringGrid das wie eine ListBox behandelt wird
 
hi,

bin auf der suche nach einem StringGrid die wie eine ListBox arbeitet.
z.b
Add(DatenArray : array of String); //Je nachdem wie viele spalten
Delete(zeile : integer);
IndexOfObject() etc

Schwer zu erklären.
Eingentlich eine Listbox mit mehrer Spalten.
Gibt es sowas?

marabu 3. Okt 2007 21:27

Re: Suche ein StringGrid das wie eine ListBox behandelt wird
 
Hi Jackie,

mit dem StringGrid kannst auch du glücklich werden, wenn du statt dem "array of string" eine StringList nimmst:

Delphi-Quellcode:
AppendRow(StringGrid).Assign(ListBox.Items);
AppendRow() findest du in der Unit GridUtils.

Gute Nacht

Jackie1983 3. Okt 2007 21:58

Re: Suche ein StringGrid das wie eine ListBox behandelt wird
 
aber es gibt kein Funktionen wie
indexofobject(spalte);
oder
Delete(zeile)

Cyberbob 3. Okt 2007 23:09

Re: Suche ein StringGrid das wie eine ListBox behandelt wird
 
Was spricht gegen ein TListView?

marabu 4. Okt 2007 06:46

Re: Suche ein StringGrid das wie eine ListBox behandelt wird
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen

Zitat:

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:

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

Jackie1983 4. Okt 2007 09:29

Re: Suche ein StringGrid das wie eine ListBox behandelt wird
 
danke. Werde mich mal damit beschäftigen.

thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz