afficher quelque chose au passage de la souris

afficher quelque chose au passage de la souris - Delphi/Pascal - Programmation

Marsh Posté le 26-10-2004 à 13:27:46    

salut tout le monde,
je voudrais afficher du texte dans un label ou une boite d'edition en survollant un bouton ou un autre composant.
j'ai cherché partout mais je n'est rien trouvé.
merci de votre aide.
warrior.

Reply

Marsh Posté le 26-10-2004 à 13:27:46   

Reply

Marsh Posté le 26-10-2004 à 14:02:01    

T'as essayé la propiété Hint de tes composants ?
(N'oublie pas de mettre la propriété showhint à true)

Reply

Marsh Posté le 26-10-2004 à 14:12:03    

en regardant l'aide de delphi y'a aparement rien qui permette d'afficher du texte dans une boite d'edition ou un label au passage de la souris sur un ellement.
on peut faire une infobulle, marquer dans la barre des taches, mais pas dans une boite d'edition :/

Reply

Marsh Posté le 26-10-2004 à 14:33:33    

ah, tu veux dire, que tu veux, quand tu passes sur un bouton, qu'un TEdit que t'aurais mis ailleurs sur la fenêtre affiche un texte particulier ?
 
Si c'est ça, utilise l'evenement "onMouseMove" de tes composant pour initialiser ta boite d'édition.

Reply

Marsh Posté le 26-10-2004 à 14:57:27    

ok merci mais je comprend pas comment ca marche :(
t'as pas un exemple stp ?

Reply

Marsh Posté le 26-10-2004 à 15:20:42    

http://membres.lycos.fr/milkalechat/hfr/
je t'ai fait un pitit exemple très basique.
 
(exemple.zip)

Reply

Marsh Posté le 26-10-2004 à 16:16:45    

caRnAGE a écrit :

http://membres.lycos.fr/milkalechat/hfr/
je t'ai fait un pitit exemple très basique.
 
(exemple.zip)


 
merci t'est un dieu [:aloy]  
j'arrive pas a compiler ton prog tu utilise surement pas la même version de delphi que moi
j'utilise delphi 6
je dois partir la mais je vais le refaire ce soir pour voir si ca marche :)
encore merci :)

Reply

Marsh Posté le 26-10-2004 à 17:21:23    

J'suis pas un dieu :o , la preuve, tu peux pas compiler à cause de moi : faut virer les fichiers .dof, .cfg, .drc si je me souviens bien.
mais tout le monde peut se tromper :)
 
(et je suis en delphi 6)

Reply

Marsh Posté le 26-10-2004 à 19:55:17    

super ca marche maintenant
mais je voudrai que quand je suis plus sur les boutons, la boite d'edition soit vide.
 
j'ai penssé a faire comme ca :
 
donc je rajoute ca dans type
procedure Form1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
 
puis ca après l'implementation
 
procedure TForm1.form1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  EdResultat.Text := '';
end;
 
mais ca marche pas :cry:
je sais tu va me dire que je suis chiant :)

Reply

Marsh Posté le 27-10-2004 à 09:07:43    

T'es pas chient, tout le monde commence un jour.
Par contre, essaie de faire ces tutoriels :
http://www.phidels.com/php/index.p [...] x.htm&id=1
 
Tu comprendras mieux qu'avec un truc déjà fait ;)

Reply

Marsh Posté le 27-10-2004 à 09:07:43   

Reply

Marsh Posté le 27-10-2004 à 14:25:32    

caRnAGE a écrit :

T'es pas chient, tout le monde commence un jour.
Par contre, essaie de faire ces tutoriels :
http://www.phidels.com/php/index.p [...] x.htm&id=1
 
Tu comprendras mieux qu'avec un truc déjà fait ;)


 
lol j'en suis quand même plus loin que ca :lol:  
enfin y'a qaund même pas mal de tuto qui m'ont l'air pas mal sur ce site. j'ai regardé mais je pense pas qu'il y ai reponse a mon probleme

Reply

Marsh Posté le 27-10-2004 à 15:32:18    

Si c'est pour faire un peu comme la statusbar qui reçoit un texte d'aide quand on passe sur les icônes (ou les liens dans un browser) il y a une manière plus propre de procéder.
Dans la propriété "Hitn" tu as en fait deux Hints : le court et le long. Ils sont séparés par un "|".
Le Hint court est celui qui est affiché en infobulle. Le long est celui qui est affiché dans la statusbar.
Par exemple pour un bouton ayant "Ouvrir..." comme Caption, on mettrait le Hint suivant : "Ouvrir|Ouvrir un fichier".
La première partie du hint est affichée si ShowHint est à True (ou ParentShowHint, et que le parent a ShowHint à True, etc.).
La seconde partie est affichée dans la statusbar dont la propriété AutoHint est à True.
Mais si maintenant tu veux gérer ça toi-même (statusbar ayant plusieurs panels, autre composant, etc.), il suffit de rajouter dans la Form la procédure suivante :

function ExecuteAction(Action: TBasicAction): Boolean; override;


en "public", et d'ensuite mettre l'implémentation suivante :


function TForm1.ExecuteAction(Action: TBasicAction): Boolean;
begin
  if (Action is THintAction) then
  begin
    StatusBar1.Panels[2].Caption := THintAction(Action).Hint;
    Result := True;
  end
  else
    Result := inherited ExecuteAction(Action);
end;


ici par exemple j'envoie le Hint dans le 3è panel de ma statusbar. Mais on pourrait mettre un Edit ou un Label à la place.

Message cité 1 fois
Message édité par antp le 27-10-2004 à 15:33:07
Reply

Marsh Posté le 27-10-2004 à 16:48:34    

merci de ton aide antp je vais essayer ca ce soir :jap:

Reply

Marsh Posté le 27-10-2004 à 17:09:30    

the_warrior a écrit :

super ca marche maintenant
mais je voudrai que quand je suis plus sur les boutons, la boite d'edition soit vide.
 
j'ai penssé a faire comme ca :
 
donc je rajoute ca dans type
procedure Form1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
 
puis ca après l'implementation
 
procedure TForm1.form1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  EdResultat.Text := '';
end;
 
mais ca marche pas :cry:
je sais tu va me dire que je suis chiant :)


 
si j'ai bien compris ce post là, tu voudrais que quand tu passe sur un composant, ton Edit change son texte en fonction du composant, mais que quand tu n'est plus sur aucun composant, l'Edit soit vide ?
 
ton truc devrais marcher.
 
MAis pour le form1MouseMove, tu l'a rajouté toi-même dans l'éditeur ?
parce que bon, vaut mieux double-cliquer sur l'évènement dans l'inspecteur d'objet, et il te fait tout tout seul au niveau des déclarations de fonctions, ça a plus de chance de fonctionner.

Reply

Marsh Posté le 23-08-2006 à 11:42:02    

Desolé de déterrer un vieux topic....
 

antp a écrit :

Si c'est pour faire un peu comme la statusbar qui reçoit un texte d'aide quand on passe sur les icônes (ou les liens dans un browser) il y a une manière plus propre de procéder.
Dans la propriété "Hitn" tu as en fait deux Hints : le court et le long. Ils sont séparés par un "|".
Le Hint court est celui qui est affiché en infobulle. Le long est celui qui est affiché dans la statusbar.
Par exemple pour un bouton ayant "Ouvrir..." comme Caption, on mettrait le Hint suivant : "Ouvrir|Ouvrir un fichier".
La première partie du hint est affichée si ShowHint est à True (ou ParentShowHint, et que le parent a ShowHint à True, etc.).
La seconde partie est affichée dans la statusbar dont la propriété AutoHint est à True.
Mais si maintenant tu veux gérer ça toi-même (statusbar ayant plusieurs panels, autre composant, etc.), il suffit de rajouter dans la Form la procédure suivante :

function ExecuteAction(Action: TBasicAction): Boolean; override;


en "public", et d'ensuite mettre l'implémentation suivante :


function TForm1.ExecuteAction(Action: TBasicAction): Boolean;
begin
  if (Action is THintAction) then
  begin
    StatusBar1.Panels[2].Caption := THintAction(Action).Hint;
    Result := True;
  end
  else
    Result := inherited ExecuteAction(Action);
end;


ici par exemple j'envoie le Hint dans le 3è panel de ma statusbar. Mais on pourrait mettre un Edit ou un Label à la place.


 
 
Mais je n'arrive pas a faire fonctionner cette fonctione sous D7.
 
Je voudrais afficher le hint automatiquement dans un label qd on passe dessus. Mon label reste desesperement vide  :sweat:  :cry:  
 
Une idee ?
 
 
[EDIT] : Toutes mes excuses, je viens de detecter le pb, j ai essaye d appliquer cela avec un composant TMS pour faire une barre d outils, et c est ce composant qui fait merder le tout. Sur un projet "bidon" ca fonctionne avec les composants natifs de Delphi.
Mais je ne pige pas vraiment ce qui fait bloquer tout cela sur les composants TMS.....a part que le bouton placé dans une toolbar placée elle meme dans un dockpanel n ont pas tjs les proprietes ShowHint et ParentShowHint  :heink:  
En gros le bouton a toutes les proprietes, la toolbar n a pas ParentShowHint, et le dockPanel n a plus rien excepte la propriete Hint  :heink:  :heink:  
Est ce que qqun saurait me dire pk ???????? merci  :jap:
 
 
[EDIT 2 ] : Le probleme ne vient tjs pas des TMS...... J ai qqchose qui bloque le declenchement de l action dans mon appli, mais pour savoir quoi ? alors la.........
Je mets un point d arret sur if (Action is THIntAction) then mais a aucun moment je n arrive sur le point d arret , Aucune action ne se declenche  :heink:  :heink:  :sleep:  :fou:  
 
EST CE QQUN A DEJA RENCONTRE CE PB ?  
 


Message édité par mkracing66 le 23-08-2006 à 13:35:15
Reply

Marsh Posté le 24-08-2006 à 09:54:08    

Aller.....personne ne saurait dire pk un ExecuteAction n est jamais declenché ??
 
plz....:'(

Reply

Marsh Posté le 24-08-2006 à 17:03:27    

Si tu as dans ton appli (même sur une autre fenêtre) une statusbar avec la propriété Autohint (ou un truc du genre) active, ça foire.  
À part ça si ça marche dans un nouveau projet mais pas dans ton appli je n'ai pas d'idée :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed