Utilisation des TGrpButtonItem en création dynamique

kibouzou Messages postés 1 Date d'inscription samedi 18 juin 2016 Statut Membre Dernière intervention 18 juin 2016 - 18 juin 2016 à 02:39
papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 - 21 juin 2016 à 15:07
Bonjour,

J'ai créé une appli pour rassembler divers raccourcis vers des exécutables sous la forme d'une liste de boutons.

Pour ce faire, j'utilise le composant TButtonGroup. Celui-ci est éditable par l'utilisateur et les paramètres (caption, chemin de l'exe, ...) des boutons créés ou supprimés sont enregistrés dans un fichier ini.

Tous les boutons de la liste utilisent la même procédure, qui fait appel à shellexecute mais je n'arrive pas à détecter quel bouton a été clické.

Lorsque j'utilise le sender, la procédure 'reçoit' le TButtonGroup mais pas le TGrpButtonItem.

Voici le code:

procedure TMainForm.BtnClick(Sender: TObject);
begin
With Sender as TControl do
begin
ShowMessage(Hint);
//ShellExecute(Handle,'open', PWIDEChar(Hint), nil, nil, SW_SHOWNORMAL);
end;
end;

J'ai inséré un showmessage afin de voir le Hint et c'est bien celui du TButtonGroup mais pas celui du TGrpButtonItem.

Enfin, si je remplace Sender as Tcontrol par Sender as TGrpButtonItem, j'ai 'Transtypage de classes incorrect'.

Merci de votre aide...

2 réponses

papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 15
21 juin 2016 à 13:51
salut
le hint ne s'affiche pas dans un ShowMessage(Hint), mais uniquement au survol par la souris du ButtonGroup1.tems[index],
a condition que ButtonGroup1.ShowHint soit a true
0
papyvore Messages postés 223 Date d'inscription samedi 15 novembre 2003 Statut Membre Dernière intervention 16 décembre 2021 15
Modifié par papyvore le 21/06/2016 à 15:09
je crois avoir compris tu veut exécuter un programme !?
alors si hint = Calc.exe par exemple

ShellExecute(Handle,'open', PWIDEChar(ButtonGroup1.Items[0].Hint), nil, nil, SW_SHOWNORMAL); 

alors teste cette ligne elle lance la calculette
papyvore
0
Rejoignez-nous