flowと申します。
TreeViewの各ノードに個別のヒントを表示したいのですが、どうすれば実現できるでしょうか。
IEで、表示⇒エスクプローラバー⇒お気に入りを表示した際に、各ブックマークの上をポイントすると表示されるヒントをイメージしています。
win2k+sp4 Delphi7Proを使用しています。
どうぞよろしくお願いします。
新規で TreeView1 を Form1 に置いて適当に複数のノードをつくっておきます。
そして以下のようにします。
private
{ Private 宣言 }
public
revTN:TTreeNode;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.ShowHint := true;
end;
procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
TN:TTreeNode;
begin
TN := TreeView1.GetNodeAt(X,Y);
if TN = revTN then exit;
revTN := TN;
if not Assigned(TN) then begin
Application.HideHint;
exit;
end;
TreeView1.Hint := TN.Text; // ここで個別のテキストを設定
Application.ActivateHint(Mouse.CursorPos);
end;
ここではノードのテキストをそのままヒントとして表示しています。
TStringList のインスタンスと TTreeNode.Data を組み合わせると任意の
個別のテキストを設定できます。
ちょっと訂正します。
procedure TForm1.TreeView1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
TN:TTreeNode;
begin
TN := TreeView1.GetNodeAt(X,Y);
if TN = revTN then exit;
revTN := TN;
if not Assigned(TN) then begin
Application.HideHint;
TreeView1.Hint := ''; // この行を追加
exit;
end;
TreeView1.Hint := TN.Text;
Application.ActivateHint(Mouse.CursorPos);
end;
うろ覚えで申し訳ないですけど、Borlandのサイトだったか、
TListViewで同様のことをするサンプルコードが載っていたような…。
参考になりませんかねえ?
jok様、たかみちえ様。
教えていただいたソースでバッチリできました。
ありがとうございました。
ツイート | ![]() |