Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   ListBox Item verstecken? (https://www.delphipraxis.net/211321-listbox-item-verstecken.html)

DieDolly 29. Aug 2022 19:23

ListBox Item verstecken?
 
Gibt es die Möglichkeit, Einträge einer ListBox zu verstecken? Sei es komplett verstecken oder nur die Höhe auf 1px einstellen. Geht sowas?

venice2 29. Aug 2022 19:28

AW: ListBox Item verstecken?
 
Ja. Indem man diese gar nicht erst addiert.

DieDolly 29. Aug 2022 19:33

AW: ListBox Item verstecken?
 
Die müssen leider in der Liste sein, da ich sonst mit meiner Zählung und den Texten nicht hinkomme.
Ich würde ja eine VirtualStringTree nehmen aber das ist viel Aufwand, wenn die am Ende genau so aussehen soll wie meine ListBox aktuell.

venice2 29. Aug 2022 19:41

AW: ListBox Item verstecken?
 
Listbox Items haben keinen visiblen Status.

Du könntest sowas versuchen aber ob es Funktioniert habe ich noch nicht getestet.
Delphi-Quellcode:
SendMessage( hWnd, LB_SETITEMHEIGHT, rowIndex, 0)


Damit sollte die Höhe der Zeile auf 0 gesetzt werden.

himitsu 29. Aug 2022 19:46

AW: ListBox Item verstecken?
 
Keine Datenhaltung in der Anzeige. (Index der Komponente ist vollkommen egal)
C und D fehlen, dennoch keine Probleme damit.

Items löschen, einfügen, verschieben, sortieren, umbenennen (z.B. Mehrsprachigkeit) ... alles keine Problem.

Delphi-Quellcode:
ListBox1.Items.AddObject('A', TObject(0));
ListBox1.Items.AddObject('B', TObject(1));
ListBox1.Items.AddObject('E', TObject(4));

ListBox1.Items.IndexOf('E') == 2
NativeInt(ListBox1.Items.Objects[2]) == 4
Es ist zwar als TObject deklariert, aber in der LISTBOX (WinAPI) ist es bloß ein dummer "Integer". MSDN-Library durchsuchenCB_SETITEMDATA


Falls du keine bösen Casts magst, dann nimm eben ein Datenobjekt dafür.
Delphi-Quellcode:
type
  TDataObject = class
    Index: Integer;
    constructor Create(AIndex: Integer);
  end;

ListBox1.Items.AddObject('A', TDataObject.Create(0));
ListBox1.Items.AddObject('B', TDataObject.Create(1));
ListBox1.Items.AddObject('E', TDataObject.Create(4));

ListBox1.Items.IndexOf('E') == 2
TDataObject(ListBox1.Items.Objects[2]).Index == 4

// und die Freigabe natürlich nicht vergessen

DieDolly 29. Aug 2022 19:51

AW: ListBox Item verstecken?
 
Mh ich glaube ich schreibe alles auf VST um, das ist dann wesentlich einfacher mit dem Ein- und Ausblenden.

himitsu 29. Aug 2022 20:08

AW: ListBox Item verstecken?
 
TDBListBox + TClientDataSet o.Ä.
TListView
Delphi-Referenz durchsuchenTControlList
Bei Google suchenTEasyListview (GetIt)
...

Millionen Wege

DieDolly 29. Aug 2022 20:10

AW: ListBox Item verstecken?
 
Dann lieber VST, weil ich schon an anderen Stellen 2 VST nutze, die komplett auf meine bedürfnisse angepasst wurden.

jaenicke 29. Aug 2022 20:39

AW: ListBox Item verstecken?
 
Wenn man den VST generisch nutzt und nicht mit Pointern hantiert wie in vielen Beispielen, ist der auch sehr einfach nutzbar. Das lässt sich leicht implementieren und dafür spart man sich später viel Quelltext und Aufwand.

Rolf Frei 30. Aug 2022 12:21

AW: ListBox Item verstecken?
 
Mach doch einfach noch eine TStringList mit allen Einträgen udn fülle dann eine ListBoix nur mit den WErten die wu brauchst. Wenn du dann in der Combobox was auswählst suchst du in der StringListe den Eintrag über den Namen der Conbobox-Auswahl und verwendest dannn den entsprechenden Index aus der StringList.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:31 Uhr.
Seite 1 von 2  1 2      

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