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 :

INI – PopupMenu – SendMessage


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 23
    Points
    23
    Par défaut INI – PopupMenu – SendMessage
    Bonjour,

    PREMIERE FORMS :
    Un bouton avec un popup menu

    Deuxièmes FORMS
    DEUX TEDIT
    Un bouton pour ajouter du texte dans le fichier INI

    Ce que je veux :
    Mètre un TITRE au TEXT et le TEXT lol DANS LE INI
    Ensuite j'aimerais que la Caption du menu de mon popumenu
    Contienne le titre du texte qui va chercher dans le INI
    il risque d'avoir plusieurs TITRE et TEXTE c'est pour cela que je veux les différenciés

    Et que quand je clique sur le buttons mon sendmessage envoie le texte

    MON FICHIER INI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure T2Form.bouton1 Click(Sender: TObject);
    begin
      ini := Tinifile.Create('C:\Users\b_boys150\Desktop\TEST.ini');   // Creation d'un fichier ini
     
        ini.WriteString('Raison','nom',Ajout.Text); // écrit une chaîne
     
        ini.WriteInteger('Raison','largeur',Screen.Width); // écrit un nombre
     
          ini.free; // on libère
    MON SEND MESSAGE DU menu dans le POPUPMENU :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure T1form.SENDClick(Sender: TObject);
    begin
     
      Send := SendMessage(ll, WM_GETTEXTLENGTH, 0, 0);
     
        Sendmessage( ll, WM_SETTEXT, 0, integer(Pchar('ICI LE TEXT QUE JE RECUPERE))); // envoie un message texte dans la saisie de texte
     
          SendMessage(mm,WM_LBUTTONDOWN,0,0);  // simule le clic gauche en appui
     
            SendMessage(mm,WM_LBUTTONUP, 0, 0);    // simule le clic gauche en relache
     
    end;

    merci pour votre aide je ne sais pas si j'ai réussi a me faire comprendre

  2. #2
    Membre régulier Avatar de khaled-benloucif
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 77
    Points
    77
    Par défaut
    sault


    j'ai buggé ici:
    Mètre un TITRE au TEXT et le TEXT lol DANS LE INI
    essaye S.T.P d'éclaircir la question

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Salut merci de ta réponse

    Et bien cela est simple

    Je veux un titre dans l'ini

    Et à coter le texte qui sera envoyé dans le send message

    GENRE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [PREMIER TEXT]
     
    MONTITRE=MONTEXT
     
    [DEUXIEME TEXTE]
     
    MONTIRE=MONTEXT
    De façons à pouvoir récupérer Mon Titre et le mètre dans la CATION du menu pop-up

    Par contre, quand je vais cliquer sur le menu du pop-up il m'enverra le texte

    Je ne sais pas si c'est compréhensible j'ai un peu de mal j'avoue lol

  4. #4
    Membre régulier Avatar de khaled-benloucif
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 77
    Points
    77
    Par défaut
    Bon, pour générer le fichier ini, voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm1.Button_genIniFileClick(Sender: TObject);
    var IniFile: TIniFile;
    		I: Integer;
    begin
     with TIniFile.Create(ExtractFilePath(ParamStr(0))+'test.ini') do
    	try
    	 for I := 0 to 9 do
    		WriteString('PopupMenu_Item'+IntToStr(I), 'Caption', 'valeur'+inttostr(I))
      finally
    	 Free
      end
    end;
    avant d'avancer, je veux que tu m'explique pourquoi tu emploi le SendMessage?
    procedure T1form.SENDClick(Sender: TObject);
    begin

    Send := SendMessage(ll, WM_GETTEXTLENGTH, 0, 0);

    Sendmessage( ll, WM_SETTEXT, 0, integer(Pchar('ICI LE TEXT QUE JE RECUPERE))); // envoie un message texte dans la saisie de texte

    SendMessage(mm,WM_LBUTTONDOWN,0,0); // simule le clic gauche en appui

    SendMessage(mm,WM_LBUTTONUP, 0, 0); // simule le clic gauche en relache

    end;
    Le popupMenu existe il déjà ou tu va le créer dynamiquement?

  5. #5
    Membre régulier Avatar de khaled-benloucif
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 77
    Points
    77
    Par défaut
    j'ai pas compris on entend quoi par:
    Par contre, quand je vais cliquer sur le menu du pop-up il m'enverra le texte
    sous forme de Dialogue par exemple? et ce texte il représente quoi ?

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Sur ma première form mon bouton se passe en deux événements

    On click = Pop-up s'ouvre avec un Titre

    On click sur le menu qui enverra le TEXTE qui se rapporte au titre

    Et tout ça doit ce trouvé dans un fichier INI

    GENRE en FINAL il enverra ça

    TITRE1 DU POPUP je clique dessus et il envoie

    LE TEXT EN DUR + MON TEXTE DE L'INI

    Et donc pour ça je dois avoir une deuxièmes forme qui va me servir d'éditeur

  7. #7
    Membre régulier Avatar de khaled-benloucif
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 77
    Points
    77
    Par défaut
    désolé j'arrive plus à te suivre

  8. #8
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Ce que je veux faire c'est un éditeur qui va stocker tout ça dans un fichier ini

    Pour pouvoir l'ajouter dans un POPUP menu

    Voilà

    Editeur aura

    EDIT1 Pour le titre

    EDIT2 pour le texte

    BOUTON qui va l'enregistrer dans l'INI

    Ensuite mon POPUP menu va lire le fichier ini va prendre le titre pour sa caption des menus

    Et le texte pour l'envoyer une fois que je clique dessus

    Voilà Ce n'est pas facile de l'expliquer moi-même je ne m'en sorts pas lol

  9. #9
    Membre régulier Avatar de khaled-benloucif
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 77
    Points
    77
    Par défaut
    bonjour,

    pour l'écriture dans le fichier ini, je te propose cette procédure:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure AddToIni(AItemName, ACaption, AText: String);
    begin
     with TIniFile.Create(ExtractFilePath(ParamStr(0))+'test.ini') do
    	try
    		WriteString(AItemName, 'Caption', ACaption);
    		WriteString(AItemName, 'Text', AText)
    	finally
    	 Free
    	end
    end;
    pour la récupération depuis le fichier, essaye ça:

    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
    procedure TForm1.Button_CreatePMClick(Sender: TObject);
    var MenuItem: TMenuItem;
    		Sections: TStrings;
    		I: Integer;
    		PStr: PString;
    begin
     if not Assigned(MyPopup) then
     with TIniFile.Create(ExtractFilePath(ParamStr(0))+'test.ini') do
    	try
    	 MyPopup:= TPopupMenu.Create(Self);
    	 PopupMenu:= MyPopup;
    	 Sections:= TStringList.Create;
    	 ReadSections(Sections);
    	 for I := 0 to Sections.Count - 1 do
    		begin
    		 MenuItem:= TMenuItem.Create(Self);
    			with MenuItem do
    			 begin
    				Name:= Sections[I];
    				Caption:= ReadString(Name, 'Caption', '');
    				New(PStr);
    				PStr^:=  ReadString(Name, 'Text', '');
    				Tag:= DWord(PStr)
    			 end;
    		 MyPopup.Items.Add(MenuItem)
    		end;
    	finally
    	 Sections.Free;
    	 Free
    	end
    end;
    Et le texte pour l'envoyer une fois que je clique dessus
    puisque tu m'a pas encore expliqué ça veut dire quoi envoyer le texte (et le texte représente quoi?), je l'ai mis dans la propriété Tag du menu Item.

  10. #10
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Salut Merci de Ton aide

    Enfaite le Sendmessage va reprendre le texte qui se rapporte au titre

    Et il va l'envoyer sur un handle d'une autre fenêtre, mais ça j'ai déjà trouvé

    Merci pour ton aide je vais essayer d'appliquer sa

  11. #11
    Membre régulier Avatar de khaled-benloucif
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 77
    Points
    77
    Par défaut
    salut,
    pour completer, on ajoute donc l'évènement OnClick commun à tous les MenuItem, donc le code sera le suivant:

    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
    procedure TForm1.Button_CreatePMClick(Sender: TObject);
    var MenuItem: TMenuItem;
    		Sections: TStrings;
    		I: Integer;
    		PStr: PString;
    begin
     if not Assigned(MyPopup) then
     with TIniFile.Create(ExtractFilePath(ParamStr(0))+'test.ini') do
    	try
    	 MyPopup:= TPopupMenu.Create(Self);
    	 PopupMenu:= MyPopup;
    	 Sections:= TStringList.Create;
    	 ReadSections(Sections);
    	 for I := 0 to Sections.Count - 1 do
    		begin
    		 MenuItem:= TMenuItem.Create(Self);
    			with MenuItem do
    			 begin
    				Name:= Sections[i];
    				Caption:= ReadString(Name, 'Caption', '');
    				New(PStr);
    				PStr^:=  ReadString(Name, 'Text', '');
    				Tag:= DWord(PStr)
    			 end;
    		 MyPopup.Items.Add(MenuItem);
    		 OnClick:= CommonMenuItemClick                          
    		end;
    	finally
    	 Sections.Free;
    	 Free
    	end
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.CommonMenuItemClick(Sender: TObject);
    begin
     SendMessage(hDestination, WM_MON_MESSAGE, (Sender as TMenuItem).Tag, 0)
    end;
    bonne chance

  12. #12
    Membre à l'essai
    Inscrit en
    Janvier 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 37
    Points : 23
    Points
    23
    Par défaut
    Salut

    Je viens de tester Ton code et le premier est au point

    Par contre, l'autre je l'ai essayé et il me fait une erreur d'exception

    Voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '« MON TITRE » n est pas un nom de composant correct'

  13. #13
    Membre régulier Avatar de khaled-benloucif
    Inscrit en
    Octobre 2008
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2008
    Messages : 74
    Points : 77
    Points
    77
    Par défaut
    pas d'espace dans les noms de variables, surement tu essaye d'affecter la chaine "MON TITRE"à la propriété Name (premier paramètre de la fonction AddToIni).

    Exemple d'appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddToIni('MenuItem1', 'Mon titre 1', 'Mon texte à envoyer!');

Discussions similaires

  1. SendMessage bloquant l'exécution du programme
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 03/05/2003, 19h26
  2. PopupMenu sur item de TListBox
    Par nmathon dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/03/2003, 17h28
  3. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16
  4. Probleme combobox et ini
    Par Techsan dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2003, 19h16
  5. faire un fichier .ini
    Par florent dans le forum C++Builder
    Réponses: 14
    Dernier message: 31/05/2002, 22h06

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