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

Langage Delphi Discussion :

Divers problemes avec appli MDI


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut Divers problemes avec appli MDI
    Bonjour a tous, voilà, je programme un client IRC en delphi, j'en avais déjà programmé un mais celui-ci était mono-cannal. Maintenant, j'en reprogramme un, mais il doit etre multi-cannal (et pourquoi pas par la suite, multi-serveur).
    J'utilise donc une application MDI, ce qui permet d'avoir un cannal par fiche, donc, a chaque fois que je joint un cannal, une fiche est créée dynamiquement, ainsi qu'un Tbutton associé a cette fiche, qui est créé dans un Ttoolbar. Mes problemes sont les suivants :
    -je n'arrive pas a afficher au premier plan la fiche associée a un Tbutton en cliquant sur celui-ci.
    -je ne sais pas comment faire pour pouvoir recevoir les messages d'un cannal dans la fiche associée a ce cannal (créée dynamiquement lorsque je joins ce cannal)

    Voilà, si vous connaissez la solution a un ou plusieurs de ces problemes, merci d'avance

    @ +

  2. #2
    Membre confirmé
    Avatar de korntex5
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2004
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 415
    Points : 454
    Points
    454
    Billets dans le blog
    1
    Par défaut
    Pour la première question je ne sais pas trop c pas très clair dit ce qur tu asdéjà fais


    Pour la seconde tu devrais enregistrer le handle de la form que tu crée avec le canal correspondant

    Puis avec un sniffer que tu fais toi même lorsque tu as des infos sur un canal tu regarde dan ta table d'enregistremet quel est le handle de la form qui doit recevoir ces infos, mais as tu zieuté les composants indy, ils sont très bien faient et peuvent surement faire ça totu seul...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Salut, pour la premiere question, je ne vois pas trop comment etre plus clair lol, en gros, je veux, losque je clique sur un bouton créé dynamiquement en meme temps qu'une fiche fille, faire apparaitre au premier plan du programme cette fiche fille.

    Sinon, ben... J'ai regardé le composant Tidirc et je n'ai rien trouvé pouvant se rapporter au multi-cannal...

    @ +

  4. #4
    Membre confirmé
    Avatar de korntex5
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2004
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 415
    Points : 454
    Points
    454
    Billets dans le blog
    1
    Par défaut
    tu peux essayer ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShowWindow(Handle, SW_SHOW);//force l'affichage de la form désignée par son handle

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Salut, ok ben je vais essayer ça, je te dirais ce qu'il en est.
    Merci, @ +

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Bon, ya un tit probleme lol, comment je fais pour récupérer le handle d'une fiche créée dynamiquement ?
    @ +

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Pour récupérer le handle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    frmMdi := TForm.create(MainForm);
    LeBouton.Tag := frmMdi.Handle;
    Pour le onclick du bouton :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ShowWindow((Sender as TButton).Tag, SW_SHOW);

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Merci, je vais essayer ça
    @ +

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Je viens d'essayer, ça ne fonctionne pas... Celà vient peut etre du fait que les boutons soient créés dynamiquement non ?

    Sinon, pour ceux qui n'auraient pas compris, je veux faire un systeme à la mIRC, les boutons sur lesquels on clique pour faire apparaitre la fiche correspondant a un cannal sur lequel on est.

    @ +

  10. #10
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Que veux tu dire par "ca ne fonctionne pas".
    Que fait tu comme code quand tu joint un canal ?
    (code de création du bouton + liaison de la fille MDI.) ?

    Si ta propriété tag est correctement renseignée, il n'y a pas de pb.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Lorsque je clique sur le bouton pour afficher la fiche, rien de ne passe, en revanche, il n'y a pas de message d'erreur.

    Voilà le code :
    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
     
    procedure TMainForm.CreateMDIChild(const Name: string);
    var
      Child: TMDIChild;
      btn: TButton;
    begin
         { create a new MDI child window }
         Child := TMDIChild.Create(self);
         Child.Caption := Name;
         btn:= TButton.Create(Self.ActiveMDIChild);
         btn.Parent:= toolbar1;
         btn.Caption:= edit3.Text;
         btn.OnClick:= btnclick;
         btn.Tag:= child.Handle;
    end;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TMainForm.btnclick(Sender: TObject);
    begin
         ShowWindow((Sender as TButton).Tag, SW_SHOW); 
    end;
    Enfin, quand je joins un cannal, voici ce que je fais (pour l'instant, je n'utilise pas encore TIdIrc) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TMainForm.Button2Click(Sender: TObject);
    begin
         CreateMDIChild(edit3.Text);
    end;
    Voilà, @ + et merci de vous interresser a mon probleme :-)

  12. #12
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         btn:= TButton.Create(Self.ActiveMDIChild);
    Pourtant ta toolbar n'est dans ta fille MDI ?

    essaie :


    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
    procedure TMainForm.CreateMDIChild(const Name: string);
    var
      Child: TMDIChild;
      btn: TButton;
    begin
         { create a new MDI child window }
         Child := TMDIChild.Create(self);
         child.parent := self;
         Child.Caption := Name;
         btn:= TButton.Create(Self
         btn.Parent:= toolbar1;
         btn.Caption:= edit3.Text;
         btn.OnClick:= btnclick;
         btn.Tag:= child.Handle;
    end;

  13. #13
    Membre confirmé
    Avatar de korntex5
    Homme Profil pro
    Directeur technique
    Inscrit en
    Juin 2004
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 415
    Points : 454
    Points
    454
    Billets dans le blog
    1
    Par défaut
    Là je suis d'accord ça doit marcher y a pas de raison

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    eh bien ça ne fonctionne toujours pas

  15. #15
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    C'est à dire, pas de fille MDi qui s'affiche ?
    un msg d'erreur ?

    C quoi le code de ta procédure btnclick ?

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Donc quand je clique sur le bouton, la fenetre reste sous les autres, il ne se passe strictement rien, meme pas un ptit message d'erreur de rien du tout lol. Et le code de ma procedure btnclick, c'est celui que j'ai donné plus haut, c'est Malatar qui m'a donné ce morceau de code.

  17. #17
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Essaie ( j'ai pas testé):

    if faut vérifier au préalable que le sender est bien le bouton sur lequel on clique. et vérifier que sender.tag est bien renseigné


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure btnclick(sender : tobject);
    with (Tform(tbutton(sender).tag)) do
    begin
        if windowstate=wsminimzed then
         windowstate:= wsnormal;
       show;
    end;

  18. #18
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Pour le code de création de la fille MDI met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    btn:= TButton.Create(Child);
    le owner du bouton doit etre la fille MDI, comme ca, quand elle est détruite, le bouton est normalement détruit.
    Si ce n'est pas le cas surcharge la procedure Notification

    Une question idiote,qu'as tu mis en formStyle pour ta fille MDI.

    Quand tu clic sur tes boutons de sélection de canal, à défaut de passer en premier plan, est-ce que la fille MDI correspondant au bouton est activée ?

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    Salut, pour mon appli MDI, j'ai utilisé le générateur d'applications MDI de delphi 7, donc normalement, la fiche MDI doit etre une MDIChild. Sinon, je ne sais pas si la fiche est activée losque je clique sur le bouton, je te dirais ça cet aprem.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 44
    Points : 22
    Points
    22
    Par défaut
    J'ai fais le test, losque je clique sur le bouton, la fiche associée n'est pas activée :-(.
    En plus, on ne peut pas utiliser btn dans la procedure btnclick, ça serait vachement plus facile si on pouvait lol.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. divers probleme avec windows XP
    Par Zetophe dans le forum Windows XP
    Réponses: 2
    Dernier message: 27/02/2007, 06h40
  2. Divers problemes avec les liens
    Par Mystic'Angel dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/01/2007, 12h04
  3. le probleme avec wxWigdets MDI
    Par dorotha dans le forum wxWidgets
    Réponses: 1
    Dernier message: 22/12/2006, 15h17
  4. [XSLT] problème avec apply-templates
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/11/2006, 11h20
  5. [VB]Probleme avec le MDI
    Par Skieur38 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 28/03/2006, 17h18

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