TreeNodeに個別のヒントを表示するには?

解決


flow  2004-04-07 07:12:27  No: 8255

flowと申します。

TreeViewの各ノードに個別のヒントを表示したいのですが、どうすれば実現できるでしょうか。
IEで、表示⇒エスクプローラバー⇒お気に入りを表示した際に、各ブックマークの上をポイントすると表示されるヒントをイメージしています。

win2k+sp4 Delphi7Proを使用しています。
どうぞよろしくお願いします。


jok  2004-04-07 08:58:06  No: 8256

新規で 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 を組み合わせると任意の
個別のテキストを設定できます。


jok  2004-04-07 09:08:37  No: 8257

ちょっと訂正します。

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;


たかみちえ  URL  2004-04-07 09:21:30  No: 8258

うろ覚えで申し訳ないですけど、Borlandのサイトだったか、
TListViewで同様のことをするサンプルコードが載っていたような…。
参考になりませんかねえ?


flow  2004-04-07 22:56:43  No: 8259

jok様、たかみちえ様。
教えていただいたソースでバッチリできました。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加