Thema: Delphi Problem mit ListView

Einzelnen Beitrag anzeigen

Schneider-Huetter

Registriert seit: 5. Mär 2004
97 Beiträge
 
Delphi 7 Personal
 
#5

Re: Problem mit ListView

  Alt 1. Sep 2004, 21:37
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:
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;
Hier ist die TClientSocket-Methode, der Client verbindet mit einem WinLIRC Server,
damit eine IR-Fernbedienung für den mp3-Player genutzt werden kann:

Code:
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;
Wenn ich also den SpeedButton anklicke wird der korrekte Titel abgespielt.
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
Gruß Schneider-Huetter
  Mit Zitat antworten Zitat