Entwickler-Ecke
Sonstiges (Delphi) - ListBox Eintrag auslesen verschieben
patrick dee - Mo 21.05.07 08:01
Titel: ListBox Eintrag auslesen verschieben
Morgen zusammen
habe eine Frage : Habe eine ListBox die mir als Playliste dient.
8000-01 ABBA WATERLOO 03:19
8545-15 BEE GEES WORD 02:55
Wie bekomme ich es hin das die Länge der Titel untereinander stehen. Könnte doch mit Pos suchen irgenwie gehen. Also die Länge des Titels herausnehmen und nach rechts verschieben - immer um den gleichen Abstand von links.
Müßte irgendwie nach den Doppelpunkt gesucht werden - oder ?
Kann mir jemand Helfen ???
Danke und einen sonnigen Tag
Patrick
Lannes - Mo 21.05.07 09:37
Hallo,
patrick dee hat folgendes geschrieben: |
Wie bekomme ich es hin das die Länge der Titel untereinander stehen. Könnte doch mit Pos suchen irgenwie gehen. Also die Länge des Titels herausnehmen und nach rechts verschieben - immer um den gleichen Abstand von links.
Müßte irgendwie nach den Doppelpunkt gesucht werden - oder ?... |
vermute eher das er das erreichen möchte:
Quelltext
1: 2:
| 8000-01 ABBA WATERLOO 03:19 0815-15 A-AH VELVET 02:55 |
Sind Die Anzahl Zeichen der ID('8000-01') und der Länge des Titels('03:19') immer gleich?
Dann brauchst Du nur den längsten Eintrag suchen.
Ps.: Ich würde eine ListView mit drei Columns nehmen, mit ListView.RowSelect = True
patrick dee - Mo 21.05.07 10:02
Hei Danke schon mal für die Tips.
Also die Playlisten lade ich in die ListBox mit LoadFromFile. Die Zeitangabe wie lang der Titel ist sind immer gleich.
Habe auch schon überlegt - ob das geht ???? - die Liste umzubauen. Da die Nummern 800-01 in einer Paradox Datenbank drinnen stehen müsste es doch auch gehen das man die Original Liste lädt die als 21-05-07.mr1 File vorliegt. Und dann die Nummer durchgeht und die Liste neu aufbaut so das ich auch einen Abstand zwischen Titel und Interpret habe.
8000-01 ABBA WATERLOO 03:30
8001-05 BEE GEES WORDS 02:59
Und dann als 21-05-07.li1 speichert und diese in der ListBox zu sehen ist.
Wäre natürlich noch übersichtlicher. Oder gibt es ein Elegantere Lösung ???
Danke an aller fleißigen Helfer
Patrick
patrick dee - Mo 21.05.07 15:49
Hallo Horst_H
wie rufe ich diese function auf mit einer ListBox1 ???
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| function CompareLast5(List: TStringList; Index1, Index2: Integer): Integer; var i : integer; S1,S2 : string; begin I := length(List[Index1]); IF i > 5 then S1 := Copy(List[Index1],i-5,5) else S1 := List[Index1]; I := length(List[Index2]); IF i > 5 then S1 := Copy(List[Index2],i-5,5) else S1 := List[Index2]; CompareLast5 := CompareText(S1,S2); S1:=''; S2:=''; end; |
also ich blicke noch nicht durch. Danke aber für deine schnelle Hilfe
lg Patrick
Horst_H - Mo 21.05.07 17:00
Hallo,
Uups , ich dachte Du hättest den Delphipraxis-Link durchgelesen...
Aber Du musst Die Funktion CompareLast5 mal testen , ob sie es so richtig tut, also ob da -4 oder -5 richtig ist.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| function CompareLast5(List: TStringList; Index1, Index2: Integer): Integer; var i : integer; S1,S2 : string; begin I := length(List[Index1]); IF i > 5 then S1 := Copy(List[Index1],i-4,5) else S1 := List[Index1];
I := length(List[Index2]); IF i > 5 then S2 := Copy(List[Index2],i-4,5) else S2 := List[Index2]; CompareLast5 := CompareText(S1,S2); S1:=''; S2:=''; end;
procedure TForm1.Button1Click(Sender: TObject); var sl: TStringList; begin sl := TStringList.Create; try sl.Assign(listbox1.Items); sl.CustomSort(CompareLast5); listbox1.Items.Assign(sl); finally sl.Free; end; end; |
Also einfach mal eine Listbox mit 19000,28000,37000,73000,81000,90000 füllen und testen was passiert
Gruß Horst
patrick dee - Mo 21.05.07 17:23
hallo horst_h
danke für die schnelle Antwort. Werde ich mal testen und melde mich dann wieder.
schönen Abend
patrick
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!