Newsgroup: it.comp.lang.delphi
Titolo: [d7] tooltips individuali sui nodi di un TV

Ciao a tutti
vorrei porre un diverso tooltip per ogni nodo di un treeview. sapete come
fare?
Agendo sulla proprietą Hint riesco a porne uno comune per tutti i nodi
Qualsiasi suggerimento/aiuto sarą gradito
un saluto

un saluto
	Ciao
	MassimoB
 
---------------------------
http:\\
www.massimobeschi.it

fare?[...]
tooltip e Hint per la TreeView sono due cose diverse
credo, infatti il primo appare sul nodo al passaggio
del mouse solo se il nodo supera le dimensioni di
visualizzazione della TreeView mentre l'altro appare
comunque alla sosta del mouse, in più l'hint appare al
di sotto del puntatore mentre come detto il tooltip
viene visualizzato sul nodo.
Quale è il comportamento che vui ottenere?


 Quale è il comportamento che vui ottenere?
grazie mille MassimoB
a me, in base alla tua differenziazione, serve l'Hint, in quanto voglio
comunque visualizzare il suggerimento (anche se in effetti vorrei
visualizzarlo sul nodo e non sotto al puntatore)
proverò quanto prima lo snippet che hai postato, thank you
un saluto

visualizzarlo sul nodo e non sotto al puntatore)
al questo punto mi sa che dovresti slacciarti dall'hint
della treeView ed usare una funzioncina che ti
restituisce una finestra di hint a partire dal testo e
dalla posizione ... mi ricordo che dovrebbe esistere
una cosa del genere ma non mi ricordo dove la puoi
trovare ... poi, conoscendo il nodo, grazie al suo rect
credo che tu possa sapere dove mettere tale
finestrella. :)
purtroppo non ho tempo di cercare la funzione e di
scrivere un codicillo demo. :(


 dalla posizione
buona idea, se l'hint di fabbrica non dovesse rivelarsi sufficiente proverò
anche in questo senso
per fortuna per adesso la visualizzazione del suggerimento può rimanere
diciamo un "optional" :-)
in pratica vorrei visualizzare un dato aggiuntivo "descrittivo" (più lungo
del solo Text del nodo, che altrimenti sarebbe più che sufficiente) come
"tooltip" nel momento che l'utente ci passa sopra con il mouse
grazie ancora
un saluto



Spero di non essermi perso e di non ripetere qualche cosa già detta in
quanto (purtroppo) faccio sempre fatica a seguire i thread di MassimoB
per i ben noti problemi di threading col suo newsreader :(
Posso suggerire un THintWindow e una procedua tipo questa
var
  MyHint: THintWindow;
MyHint := THintWindow.Create(self);
e poi nel TreeViewOnMouseMove
var
  Node: TTreeNode;
  HT: THitTests;
  ARect: TRect;
  APoint: TPoint;
begin
  Node := TreeView1.GetNodeAt(X, Y);
  HT := TreeView1.GetHitTestInfoAt(X, Y);
  if (Assigned(Node)) and (htOnItem in HT) then begin  
    APoint.X := X;
    APoint.Y := Y + 24;
    APoint := TreeView1.ClientToScreen(APoint);
    ARect := MyHint.CalcHintRect(500, S, nil);
    ARect.Left := ARect.Left + APoint.X;
    ARect.Right := aRect.Right + APoint.X;
    ARect.Top := ARect.Top + APoint.Y;
    ARect.Bottom := ARect.Bottom + APoint.Y;
    MyHint.ActivateHint(ARect, S);
  end else 
    MyHint.ReleaseHandle;
-- 
"La velocità luce non è sufficiente Comandante Nunziatella, 
dobbiamo passare alla velocità smodata!"

  if (Assigned(Node)) and (htOnItem in HT) then begin  
   Miaclasse := Node.Data;
   S := Miaclasse.Qualchecosa;


 contiene una classe o puntatore.
grazie anche a te Massimo
proverò senz'altro pure la tua soluzione
un saluto