Tag für Items in Listbox
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Tag für Items in Listbox
Ich habe eine normale Listbox mit vielen Items.
Es wäre schön, wenn ich jedem Item eine Nummer (=Tag) mitgeben könnte, aber offiziell hat ein Item kein Tag.
Nun könnte ich diese Nummer zwar in das Item selbst ans Ende stellen (in Klammern z.B.), - das sieht aber sehr hässlich und unübersichtlich aus.
Gibt es vielleicht doch noch eine Möglichkeit einem Item einen Tag mitzugeben ?
Es wäre schön, wenn ich jedem Item eine Nummer (=Tag) mitgeben könnte, aber offiziell hat ein Item kein Tag.
Nun könnte ich diese Nummer zwar in das Item selbst ans Ende stellen (in Klammern z.B.), - das sieht aber sehr hässlich und unübersichtlich aus.
Gibt es vielleicht doch noch eine Möglichkeit einem Item einen Tag mitzugeben ?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2811
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tag für Items in Listbox
Was willst du denn genau machen?
Du kannst ein Objekt an jedes Item hängen. Mit
Zugriff erfolgt über
Du kannst ein Objekt an jedes Item hängen. Mit
Code: Alles auswählen
ListBox1.AddItem('BlaFasel', MyObject);
Code: Alles auswählen
ListBox1.Items.Objects[123];
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Tag für Items in Listbox
Ich bekomme die Fehlermeldung: incompatible Type got "longint",expected "Array of Const"
Wenn ich einen record übergebe, folgt immer noch die Meldung ... expected "Array of Const".
Kann man denn nur Konstante übergeben, keine Variablen ?
Code: Alles auswählen
einheit.Items.add(z,dsnr);
Kann man denn nur Konstante übergeben, keine Variablen ?
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2811
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tag für Items in Listbox
Ich habe weder etwas von LongInt geschrieben noch von Records. Ich sprach von Objekten.
Wenn du auch mal meine Frage beantworten könntest was du genau vorhast, wäre es sicherlich möglich dir detailliertere Empfehlungen zu geben.
Wenn du auch mal meine Frage beantworten könntest was du genau vorhast, wäre es sicherlich möglich dir detailliertere Empfehlungen zu geben.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Tag für Items in Listbox
Ist ein Record kein Object ?
Was ich vorhabe ?
Ich möchte zu jedem Item eine Nummer, die auf einen Eintrag in einer speziellen Datei hinweist, speichern.
Was ich vorhabe ?
Ich möchte zu jedem Item eine Nummer, die auf einen Eintrag in einer speziellen Datei hinweist, speichern.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2811
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tag für Items in Listbox
Ja. Siehe auch https://www.delphi-treff.de/object-pasc ... d-objekte/malabarista hat geschrieben:Ist ein Record kein Object?
Klasse, nun weiß ich wirklich genau Bescheid. Leute, lasst euch doch nicht immer alles aus der Nase ziehen. Mehr Input für mehr Output.malabarista hat geschrieben:Was ich vorhabe ?
Ich möchte zu jedem Item eine Nummer, die auf einen Eintrag in einer speziellen Datei hinweist, speichern.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Tag für Items in Listbox
Zunächstmal musst du statt Add die Methode AddObject aufrufen, der man neben dem Text auch einen Pointer auf ein TObject mitgeben kann. Wenn du jetzt anstelle eines TObject eine Integer-Zahl einträgst, meckert der Compiler, zu Recht, denn ein Pointer ist etwas anderes als ein Integer. Nachdem intern aber alles nur Nullen und Einsen sind, kann man dem Compiler den Integer als TObject unterjubeln, wenn beide Datentypen gleich viele Bytes groß sind. Dafür gibt es den Integer-Typ PtrInt (oder PtrUInt (für vorzeichenlose Zahlen) - beide Typen sind immer so groß wie ein Pointer, egal ob man mit einem 32-Bit oder 64-Bit Betriebssystem arbeitet. Wenn du nun schreibst TObject(a), wobei a vom Typ PtrInt ist, nimmt der Compiler die in a steckenden Nullen und Einsen und betrachtet sie als Pointer bzw als TObject. Wenn deine Zahlen kein PtrInt sind, schreibst du noch PtrInt(a) vornedran, so dass der Compiler den Integer a so erweitert, dass er so groß ist wie ein PtrInt.
Das Tag liest du dann später mit der entsprechenden Typumwandlung von TObject zu PtrInt aus der Eigenschaft Objects[] aus:
Code: Alles auswählen
einheit.Items.AddObject(z, TObject(PtrInt(dsnr)));
Code: Alles auswählen
dsnr := PtrInt(einheit.Items.Objects[i]);
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2811
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Tag für Items in Listbox
Ich weine gleich. Warum werden solche Hacks immer wieder als Lösung angeboten?
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Tag für Items in Listbox
Weil das lange Zeit das einfachste Boxing bzw. Unboxing war, besonders bei den alten Delphiversionen.m.fuchs hat geschrieben:Ich weine gleich. Warum werden solche Hacks immer wieder als Lösung angeboten?
Ich habe das auch jahrelang so gelernt und mit guten Gewissen gemacht. Erst mit aufkommen der Crosscompiler und 32/64Bit habe ich mich rasch umgewöhnt, weils ganz einfach rasch ins Auge gehen kann. Und ein gebranntes Kind scheut das heisse Eisen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Tag für Items in Listbox
Nachdem ich nun das Stichwort "addobjects" hatte, habe ich hier eine verständliche Anleitung dazu gefunden:
https://www.tweaking4all.com/software-d ... addobject/
https://www.tweaking4all.com/software-d ... addobject/