![]() |
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?
|
AW: ListBox Item verstecken?
Ja. Indem man diese gar nicht erst addiert.
|
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. |
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. |
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:
Es ist zwar als TObject deklariert, aber in der LISTBOX (WinAPI) ist es bloß ein dummer "Integer".
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 ![]() 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 |
AW: ListBox Item verstecken?
Mh ich glaube ich schreibe alles auf VST um, das ist dann wesentlich einfacher mit dem Ein- und Ausblenden.
|
AW: ListBox Item verstecken?
|
AW: ListBox Item verstecken?
Dann lieber VST, weil ich schon an anderen Stellen 2 VST nutze, die komplett auf meine bedürfnisse angepasst wurden.
|
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.
|
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.
|
AW: ListBox Item verstecken?
Zitat:
![]() |
AW: ListBox Item verstecken?
Zitat:
|
AW: ListBox Item verstecken?
Ich nehme mal an, Du meinst eine VCL-Listbox? Ja, das geht auch hier, wenn Du für Deine ListBox den Style "lbOwnerDrawVariable" wählst und dann im MeasureItem-Event für das gewünschte auszublendende Element die Höhe von Null angibst:
Delphi-Quellcode:
Ich nutze das in meinem PixPower-Programm, nicht um Sachen auszublenden, aber z.B. um bei Icondateien, die mehrere Icons unterschiedlicher Größe enthalten, diese dann in der entsprechenden Originalgröße in der Listbox anzuzeigen (allerdings auch nur bis 48 Pix, bei Größen darüber wird dann runterskaliert).
procedure TForm21.ListBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer);
begin if Index = 2 then Height := 0; end; |
AW: ListBox Item verstecken?
Ich setze das am Wochenende mal um was ich vorhabe. Aber das hier ist echt die einfachste Lösung. Dann erspare ich mir das VST.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz