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 listbox1.Items.IndexOf (https://www.delphipraxis.net/111688-listbox1-items-indexof.html)

wol 7. Apr 2008 22:02


listbox1.Items.IndexOf
 
Hallo,
die Funktion m:=listbox1.Items.IndexOf(s) liefert bekanntlich den index m des Textes s in listbox.
Diese Funktion will ich nutzen.
Meine Frage: Kann man in listbox auch ein 2-dimensionales array speichern?
Ich möchte aus einem Telefonbuch (Nummern; Namen) die Nummer finden und dann auf den Namen zugreifen und das möglichst bequem.
Gruß Wolfgang

mkinzler 7. Apr 2008 22:09

Re: listbox1.Items.IndexOf
 
Schau dir mal TValueListEditor an.

s-off 7. Apr 2008 22:09

Re: listbox1.Items.IndexOf
 
Hallo,
Zitat:

Zitat von wol
die Funktion m:=listbox1.Items.IndexOf(s) liefert bekanntlich den index m des Textes s in listbox.

das ist keine Funktion, sondern die Zuweisung eines Funktionsergebnisses zu einer Variablen.

Zitat:

Zitat von wol
Meine Frage: Kann man in listbox auch ein 2-dimensionales array speichern?

Du kannst jedem Item ein Object zuweisen -> TListBox.Items.Objects
Damit kannst Du dann bspw. Dein Array hinterlegen.

Wie wäre es ansonsten mit einer TListView oder TValueListEditor?

wol 7. Apr 2008 22:17

Re: listbox1.Items.IndexOf
 
Danke für die schnelle Antwort. Natürlich hast du recht, mit der Fkt. bzw. Zuweisung.
Trotzdem verstehe ich es nicht.
Kannst du mir verklickern?
Also:
type telefone = record
nr,tn:shortstring;end;
var mat:array[0..100] of telefone;

und wie bastle ich nun aus mat eine liste?

DP-Maintenance 8. Apr 2008 07:07

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Neuen Beitrag zur Code-Library hinzufügen" nach "VCL / WinForms / Controls" verschoben.

oki 8. Apr 2008 07:39

Re: listbox1.Items.IndexOf
 
Moin Wol,

so nicht. Wie bereits gesagt nutzt du TValueListEditor. Einfach mal die OH deines Delphi bemühen. Du kannst damit Einträge pro Zeile in der Form Key=Value speichern und sowohl auf Key wie auf Value einzeln zugreifen. Willst mehrere Einträge (Spalten, weitete Array-Dimensionen...) kam der Verweis auf ein Object. Jedes Item kapselt die Eigenschaft Object vom Typ TObject. Somit kannst du auch jedem Item ein eigenes Object zuweisen. Deinem eingenen Object kannst du dann alle dir genehmen Eigenschaften zuweisen. Leitest du dir eine eigene Listenklasse ab, kannst du dir auch eigene IndexOf-Methoden schreiben denen du z.B. andere Prameter für die Suche übergibst usw.

Gruß oki

wol 8. Apr 2008 22:09

Re: listbox1.Items.IndexOf
 
Zitat:

Zitat von oki
Moin Wol,

so nicht. Wie bereits gesagt nutzt du TValueListEditor. Einfach mal die OH deines Delphi bemühen. Du kannst damit Einträge pro Zeile in der Form Key=Value speichern und sowohl auf Key wie auf Value einzeln zugreifen. Willst mehrere Einträge (Spalten, weitete Array-Dimensionen...) kam der Verweis auf ein Object. Jedes Item kapselt die Eigenschaft Object vom Typ TObject. Somit kannst du auch jedem Item ein eigenes Object zuweisen. Deinem eingenen Object kannst du dann alle dir genehmen Eigenschaften zuweisen. Leitest du dir eine eigene Listenklasse ab, kannst du dir auch eigene IndexOf-Methoden schreiben denen du z.B. andere Prameter für die Suche übergibst usw.

Gruß oki

Danke für Deine Mühe.
Leider komme ich mit valuelisteditor nicht zu recht. Die Hilfe ist bei meiner Delphi-Schwabenversion zu gering.
Ich hab es aber nun mit stringgrid reallisieren können.
ergebnissStr:=stringgrid1.Cells[1,stringgrid1.Cols[0].IndexOf(suchStr)];
Somit hab ich meine schnelle Suchfkt.
Leider muss ich den Datenfile per Hand (Schleife) in das Stringgrid laden.
Geht bestimmt auch bequemer wie per cells[m,n]:= bla bla!
Gruß aus Stgt.,
Wolfgang

mkinzler 8. Apr 2008 22:16

Re: listbox1.Items.IndexOf
 
Besser per .Rows()

wol 8. Apr 2008 22:42

Re: listbox1.Items.IndexOf
 
Zitat:

Zitat von mkinzler
Besser per .Rows()

ne, die Zeile wird zurückgegeben! Ich muss somit die Spalte angeben die dann über alle Zeilen durchsucht wird.
mfg WG


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 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