![]() |
Problem mit ListView
Bei meinem mp3-Player benutze ich ein ListView als PlayList.
Die Pfade sind als SubItems gespeichert, durch einen klick auf einen Button wird die Datei abgespielt.
Code:
Das funktioniert auch, solange ich auf den Button klicke.
PlayFile(ListView1.Selected.SubItems.Strings[0];
Möchte ich das Ganze aus der ClientSocketRead-Prozedur von TClientSocket heraus aufrufen (z.B. Button1.click) , wird zwar ein Titel abgespielt der sich in der selben Zeile, jedoch in einer anderen Spalte wie der aktuell markierte befindet (ViewStyle: vsList)!? Bin völlig ratlos :wiejetzt: !!! |
Re: Problem mit ListView
Mit welchem Code rufst du das dort auf?
Mit obigem, oder mit einem anderen? |
Re: Problem mit ListView
Was hat die Methode ClientSockeRead mit dem Listview zu tun? Eine genauere Beschreibung deines Problems und wie du es machst (SourceCode) wäre echt nicht schlecht.
|
Re: Problem mit ListView
Zitat:
Wenn ich heute abend noch etwas mehr Zeit habe werde ich noch etwas Code posten |
Re: Problem mit ListView
Also, ich werde mal versuchen das Problem etwas genauer zu erläutern:
Ich habe folgende Prozedur, die funktioniert, wenn ich auf den entsprechenden Button klicke:
Code:
Hier ist die TClientSocket-Methode, der Client verbindet mit einem WinLIRC Server,
procedure TForm2.SpeedButton3Click(Sender: TObject);
var tag : TID3Tag; begin If Form1.IsPlaying = 'Paused' then Form1.ResumeBass else begin UserStop:=False; Form1.StopBass; //- LCD löschen - ClearDisplay; Count:=0; PlayRahmen; //- markierten Track abspielen - CurrentTrack := ListView1.Selected.SubItems.Strings[0]; Form1.PlayFile(CurrentTrack); //- Titel und Interpret auf dem LCD ausgeben Tag := TID3Tag.Create; PlayMode( Tag.Interpret(CurrentTrack), Tag.Titel(CurrentTrack) ); Tag.Free; end; end; damit eine IR-Fernbedienung für den mp3-Player genutzt werden kann:
Code:
Wenn ich also den SpeedButton anklicke wird der korrekte Titel abgespielt.
procedure TForm2.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket); var s,t:string; i:integer; partbeg,partend:integer; params:array[1..4] of string; begin s := socket.ReceiveText; partbeg := 0; partend := 0; t:=s; for i := 1 to 3 do begin partend := Pos(' ', t); params[i] := Copy(t, 1, partend - 1); Delete(t, 1, partend); end; params[4] := t; delete(params[4],length(params[4]),1); //-- Cursor-Tasten -- if ( Uppercase(params[3]) = 'VOL_DOWN') and (params[2] = '01') then SendMessage(ListView1.Handle, WM_KEYDOWN, VK_DOWN, 0); if ( Uppercase(params[3]) = 'VOL_UP') and (params[2] = '01') then SendMessage(ListView1.Handle, WM_KEYDOWN, VK_UP, 0); if ( Uppercase(params[3]) = 'NEXT') and (params[2] = '01') then SendMessage(ListView1.Handle, WM_KEYDOWN, VK_RIGHT, 0); if ( Uppercase(params[3]) = 'PREVIOUS') and (params[2] = '01') then SendMessage(ListView1.Handle, WM_KEYDOWN, VK_RIGHT, 0); if ( Uppercase(params[3]) = 'PAUSE') and (params[2] = '01') then SpeedButton2.Click; //-- Stop -- if ( Uppercase(params[3]) = 'STOP') and (params[2] = '01') then Begin UserStop := True; SpeedButton1.Click; End; //-- Play -- if ( Uppercase(params[3]) = 'PLAY') and (params[2] = '01') then begin UserStop:=False; SpeedButton3.Click; end; end; Wird aber die Taste 'PLAY' auf der Fernbedienung gedrückt wird ein falscher Titel abgespielt (also nicht der markierte) obwohl ja eigentlich genau das gleiche geschehen müsste wie wenn ich den Button anklicke! An der Fernbedienung u.s.w. kann es nicht liegen, da ansonsten alles funktioniert (Cursortasten, Stop...). Kann's einfach nicht verstehn :gruebel: |
Re: Problem mit ListView
Zitat:
Code:
SendMessage(ListView1.Handle, WM_KEYDOWN, VK_DOWN, 0);
SendMessage(ListView1.Handle, WM_KEYUP, VK_DOWN, 0); |
Re: Problem mit ListView
Das mit dem WM_KEYUP habe ich gerade ausprobiert, hat aber leider nichts gebracht. Aber die Cursortasten haben ja auch bisher schon funktioniert, es geht ja eigentlich nur darum, dass nicht der auf dem Bildschirm markierte Titel abgespielt wird.
|
Re: Problem mit ListView
Noch eine Anmerkung:
Der Fehler tritt nur auf, wenn ich die Tasten "VK_RIGHT" und "VK_LEFT" benutze! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 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