IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

problème pour gérer le son avec deux forms


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut problème pour gérer le son avec deux forms
    bonjour,

    Je réalise une interface pour un projet informatique qui a pour but de créer un jeu vidéo et j'aimerais mettre du son sur ma form(menu), j'ai réussi à mettre de la musique sur ma première form le problème est que j'aimerais gérer cette musique à partir d'une deuxième form(option) et que je n'arrive pas à les raccorder toutes les deux...
    (j'ai utilisé TWindowsMediaPlayer afin de mettre du son)

    voici ma form(option) avec 3 boutons : lecture, pause, stop, et une TrackBar pour le volume

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    procedure Toption.lectureClick(Sender: TObject);
    begin
      // On définit les états des boutons Lecture, Pause, Stop
      Lecture.Enabled:=false;
      Pause.Enabled:=true;
      Stop.Enabled:=true;
      // Selon le status de lecture, on effectue telle ou telle action
      case WMP.playState of
        wmppsUndefined,wmppsStopped : begin
                                        WMP.URL:='-Kamini- Marly Gomont.mp3';
                                        LabelPisteEnCours.Caption:=WMP.currentMedia.name;
                                        WMP.controls.play;
                                      end;
        wmppsPaused : begin
                        WMP.controls.play;
                      end;
      end;
    end;
     
    procedure Toption.pauseClick(Sender: TObject);
    begin
      WMP.controls.pause;
      // Désactive le bouton Pause
      Pause.Enabled:=false;
      // Réactive le bouton Lecture
      Lecture.Enabled:=true;
    end;
     
    procedure Toption.stopClick(Sender: TObject);
    begin
      WMP.controls.stop;
      // Désactive le bouton Stop et Pause
      Stop.Enabled:=false;
      Pause.Enabled:=false;
      // Réactive le bouton de lecture
      Lecture.Enabled:=true;
    end;
     
    procedure Toption.TrackBar1Change(Sender: TObject);
    begin
      WMP.settings.volume:=TrackBar1.Position;
     
    end;
     
    procedure Toption.FormCreate(Sender: TObject);
    begin
      WMP:=TWindowsMediaPlayer.Create(option);
      // Evite que la lecture d'un média démarre automatiquement
      WMP.settings.autoStart:=true;
      WMP.settings.volume:=50;
      TrackBar1.Position:=50;
     
    end;
     
    end.
    et ma form(menu) où ma musique se lance automatiquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    procedure Tmenu.FormCreate(Sender: TObject);
    begin
    WMP:=TWindowsMediaPlayer.Create(option);
    WMP.settings.autoStart:=true;
      Bitmap := TBitmap.Create;
      Bitmap.LoadFromFile('logo.bmp');
     
      // Selon le status de lecture, on effectue telle ou telle action
      case WMP.playState of
        wmppsUndefined,wmppsStopped : begin
                                        WMP.URL:='-Kamini- Marly Gomont.mp3';
                                        WMP.controls.play;
                                      end;
        wmppsPaused : begin
                        WMP.controls.play;
                      end;
      end;
    end;
     
    procedure Tmenu.FormDestroy(Sender: TObject);
    begin
      Bitmap.Free;
    end;
     
    procedure Tmenu.FormPaint(Sender: TObject);
    begin
      Canvas.Draw(0, 0, Bitmap);
    end;
     
    procedure Tmenu.SpeedButton2Click(Sender: TObject);
    begin
      option.Show;
    end;
     
    procedure Tmenu.SpeedButton4Click(Sender: TObject);
    begin
        showmessage('looser');
      application.terminate;
    end;
     
    end.
    Merci pour votre aide

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 154
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 154
    Par défaut
    Salut !

    Vite fait, je ne sais pas où tu as défini ta variable WMP, mais je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      WMP:=TWindowsMediaPlayer.Create(option);
    dans le FormCreate des 2 forms.
    ÀMHA, l'embrouille vient de là : chaque Form bricole avec son propre WMP...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    salut,

    en fait j'ai modifié ce que tu m'a dit mais cela ne fonctionne toujours pas, il ne reconnait pas la variable 'WMP:TWindowsMediaPlayer;' de la from(menu) ni les boutons pourtant je pense que mes uses sont bien placés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    unit option1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ImgList, Buttons, WMPLib_TLB, OleServer, OleCtrls, ComCtrls, menu1;
     
    type
      Toption = class(TForm)
        lecture: TButton;
        pause: TButton;
        stop: TButton;
        LabelPisteEnCours: TLabel;
        TrackBar1: TTrackBar;
        procedure lectureClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure pauseClick(Sender: TObject);
        procedure stopClick(Sender: TObject);
        procedure TrackBar1Change(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      option: Toption;
     
    implementation
     
    {$R *.dfm}
     
    procedure Toption.lectureClick(Sender: TObject);
    begin
      // On définit les états des boutons Lecture, Pause, Stop
      Lecture.Enabled:=false;
      Pause.Enabled:=true;
      Stop.Enabled:=true;
      // Selon le status de lecture, on effectue telle ou telle action
      case WMP.playState of
        wmppsUndefined,wmppsStopped : begin
                                        WMP.URL:='-Kamini- Marly Gomont.mp3';
                                        LabelPisteEnCours.Caption:=WMP.currentMedia.name;
                                        WMP.controls.play;
                                      end;
        wmppsPaused : begin
                        WMP.controls.play;
                      end;
      end;
    end;
     
    procedure Toption.pauseClick(Sender: TObject);
    begin
      WMP.controls.pause;
      // Désactive le bouton Pause
      Pause.Enabled:=false;
      // Réactive le bouton Lecture
      Lecture.Enabled:=true;
    end;
     
    procedure Toption.stopClick(Sender: TObject);
    begin
      WMP.controls.stop;
      // Désactive le bouton Stop et Pause
      Stop.Enabled:=false;
      Pause.Enabled:=false;
      // Réactive le bouton de lecture
      Lecture.Enabled:=true;
    end;
     
    procedure Toption.TrackBar1Change(Sender: TObject);
    begin
      WMP.settings.volume:=TrackBar1.Position;
     
    end;
     
    procedure Toption.FormCreate(Sender: TObject);
    begin
      WMP:=TWindowsMediaPlayer.Create(option);
      // Evite que la lecture d'un média démarre automatiquement
      WMP.settings.autoStart:=true;
      WMP.settings.volume:=50;
      TrackBar1.Position:=50;
     
    end;
     
    end.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    unit menu1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ImgList, Buttons, WMPLib_TLB, OleServer, OleCtrls;
     
    type
      Tmenu = class(TForm)
        SpeedButton1: TSpeedButton;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        procedure Button3Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormPaint(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure SpeedButton2Click(Sender: TObject);
        procedure SpeedButton4Click(Sender: TObject);
        procedure Button1Click(Sender: TObject);
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
            WMP:TWindowsMediaPlayer;
      end;
     
    var
      menu: Tmenu;
     
     
    implementation
     
    {$R *.dfm}
     
    uses option1;
     
    var
    Bitmap: TBitmap;
     
    procedure Tmenu.Button1Click(Sender: TObject);
    begin
    // On définit les états des boutons Lecture, Pause, Stop
      Button1.Enabled:=false;
      Button2.Enabled:=true;
      Button3.Enabled:=true;
      // Selon le status de lecture, on effectue telle ou telle action
      case WMP.playState of
        wmppsUndefined,wmppsStopped : begin
                                        WMP.URL:='-Kamini- Marly Gomont.mp3';
                                        WMP.controls.play;
                                      end;
        wmppsPaused : begin
                        WMP.controls.play;
                      end;
      end;
     
    end;
     
    procedure Tmenu.Button2Click(Sender: TObject);
    begin
      WMP.controls.pause;
      // Désactive le bouton Pause
      Button2.Enabled:=false;
      // Réactive le bouton Lecture
      Button1.Enabled:=true;
    end;
     
    procedure Tmenu.Button3Click(Sender: TObject);
    begin
      WMP.controls.stop;
      // Désactive le bouton Stop et Pause
      Button3.Enabled:=false;
      Button2.Enabled:=false;
      // Réactive le bouton de lecture
      Button1.Enabled:=true;
    end;
     
     
     
    procedure Tmenu.FormCreate(Sender: TObject);
    begin
    WMP:=TWindowsMediaPlayer.Create(menu);
    WMP.settings.autoStart:=true;
      Bitmap := TBitmap.Create;
      Bitmap.LoadFromFile('logo.bmp');
     
      // On définit les états des boutons Lecture, Pause, Stop
      Button1.Enabled:=false;
      Button2.Enabled:=true;
      Button3.Enabled:=true;
      // Selon le status de lecture, on effectue telle ou telle action
      case WMP.playState of
        wmppsUndefined,wmppsStopped : begin
                                        WMP.URL:='-Kamini- Marly Gomont.mp3';
                                        WMP.controls.play;
                                      end;
        wmppsPaused : begin
                        WMP.controls.play;
                      end;
      end;
    end;
     
    procedure Tmenu.FormDestroy(Sender: TObject);
    begin
      Bitmap.Free;
    end;
     
    procedure Tmenu.FormPaint(Sender: TObject);
    begin
      Canvas.Draw(0, 0, Bitmap);
    end;
     
    procedure Tmenu.SpeedButton2Click(Sender: TObject);
    begin
      option.Show;
    end;
     
    procedure Tmenu.SpeedButton4Click(Sender: TObject);
    begin
        showmessage('looser');
      application.terminate;
    end;
     
    end.

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 154
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 154
    Par défaut
    Citation Envoyé par huntermaster Voir le message
    salut,

    en fait j'ai modifié ce que tu m'a dit mais cela ne fonctionne toujours pas, il ne reconnait pas la variable 'WMP:TWindowsMediaPlayer;' de la from(menu) ni les boutons pourtant je pense que mes uses sont bien placés
    Sans doute, mais comme il y a quand même deux créations, il doit y avoir deux objets et c'est sûrement ça qui te fait un sac de noeuds. Enfin, il me semble.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    désolé je débute avec ce langage et donc j'ai un peu de mal mais si j'ai bien compris cela devrait donné un truc comme sa ou sinn j'ai rien compris à ce que tu m'a dit :

    (mais il ne reconnait toujours pas ma variable 'wmp' dans la form(option))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    unit menu1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ImgList, Buttons, WMPLib_TLB, OleServer, OleCtrls;
     
    type
      Tmenu = class(TForm)
        SpeedButton1: TSpeedButton;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        procedure FormPaint(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure SpeedButton2Click(Sender: TObject);
        procedure SpeedButton4Click(Sender: TObject);
     
     
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
            WMP:TWindowsMediaPlayer;
      end;
     
    var
      menu: Tmenu;
     
     
    implementation
     
    {$R *.dfm}
     
    uses option1;
     
    var
    Bitmap: TBitmap;
     
    procedure Tmenu.FormCreate(Sender: TObject);
    begin
    WMP:=TWindowsMediaPlayer.Create(menu);
    WMP.settings.autoStart:=true;
      Bitmap := TBitmap.Create;
      Bitmap.LoadFromFile('logo.bmp');
     
      // On définit les états des boutons Lecture, Pause, Stop
      // Selon le status de lecture, on effectue telle ou telle action
      case WMP.playState of
        wmppsUndefined,wmppsStopped : begin
                                        WMP.URL:='-Kamini- Marly Gomont.mp3';
                                        WMP.controls.play;
                                      end;
        wmppsPaused : begin
                        WMP.controls.play;
                      end;
      end;
    end;
     
    procedure Tmenu.FormDestroy(Sender: TObject);
    begin
      Bitmap.Free;
    end;
     
    procedure Tmenu.FormPaint(Sender: TObject);
    begin
      Canvas.Draw(0, 0, Bitmap);
    end;
     
    procedure Tmenu.SpeedButton2Click(Sender: TObject);
    begin
      option.Show;
    end;
     
    procedure Tmenu.SpeedButton4Click(Sender: TObject);
    begin
        showmessage('looser');
      application.terminate;
    end;
     
    end.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    unit option1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ImgList, Buttons, WMPLib_TLB, OleServer, OleCtrls, ComCtrls, menu1;
     
    type
      Toption = class(TForm)
        lecture: TButton;
        pause: TButton;
        stop: TButton;
        LabelPisteEnCours: TLabel;
        TrackBar1: TTrackBar;
        procedure lectureClick(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure pauseClick(Sender: TObject);
        procedure stopClick(Sender: TObject);
        procedure TrackBar1Change(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    var
      option: Toption;
     
    implementation
     
    {$R *.dfm}
     
    procedure Toption.lectureClick(Sender: TObject);
    begin
      // On définit les états des boutons Lecture, Pause, Stop
      Lecture.Enabled:=false;
      Pause.Enabled:=true;
      Stop.Enabled:=true;
      // Selon le status de lecture, on effectue telle ou telle action
    end;
     
    procedure Toption.pauseClick(Sender: TObject);
    begin
      WMP.controls.pause;
      // Désactive le bouton Pause
      Pause.Enabled:=false;
      // Réactive le bouton Lecture
      Lecture.Enabled:=true;
    end;
     
    procedure Toption.stopClick(Sender: TObject);
    begin
      WMP.controls.stop;
      // Désactive le bouton Stop et Pause
      Stop.Enabled:=false;
      Pause.Enabled:=false;
      // Réactive le bouton de lecture
      Lecture.Enabled:=true;
    end;
     
    procedure Toption.TrackBar1Change(Sender: TObject);
    begin
      WMP.settings.volume:=TrackBar1.Position;
     
    end;
     
    procedure Toption.FormCreate(Sender: TObject);
    begin
      WMP:=TWindowsMediaPlayer.Create(option);
      // Evite que la lecture d'un média démarre automatiquement
      WMP.settings.autoStart:=true;
      WMP.settings.volume:=50;
      TrackBar1.Position:=50;
     
    end;
     
    end.

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 154
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 154
    Par défaut
    Citation Envoyé par huntermaster Voir le message
    (mais il ne reconnait toujours pas ma variable 'wmp' dans la form(option))
    C'est-à-dire ?
    Message d'erreur ou ça ne fonctionne pas comme tu veux ?

    Ce qui me choque, moi, ce sont ces deux créations :
    Citation Envoyé par huntermaster Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unit menu1;
    procedure Tmenu.FormCreate(Sender: TObject);
    begin
    WMP:=TWindowsMediaPlayer.Create(menu);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unit option1;
    procedure Toption.FormCreate(Sender: TObject);
    begin
      WMP:=TWindowsMediaPlayer.Create(option);
    Désolé, mais j'ai absolument pas le temps, là maintenant, de continuer : faut que je file au taf, et y a pas de Delphi où je bosse...
    Bonne journée,

Discussions similaires

  1. [JDOM] Problème pour lire les noeuds avec JDOM
    Par Eclix dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 26/05/2014, 18h11
  2. [Upload] Problème pour gestion d'erreur avec class
    Par allserv dans le forum Langage
    Réponses: 2
    Dernier message: 27/12/2005, 13h00
  3. Réponses: 1
    Dernier message: 03/12/2005, 16h17
  4. problème pour faire un insert avec une image
    Par vbcasimir dans le forum Modules
    Réponses: 3
    Dernier message: 02/11/2005, 09h21
  5. Réponses: 1
    Dernier message: 17/05/2004, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo