TreeViewのアイテムの高さを変更

解決


LupinⅢ  URL  2003-12-25 20:55:56  No: 6406  IP: [192.*.*.*]

タイトルと通りなのですがTreeViewでアイテムの高さを変更したい(ちなみに行間を大きくしたい)のですが、どのような方法ですべきでしょうか?

編集    削除
通りすがり  2003-12-25 21:52:34  No: 6407  IP: [192.*.*.*]

こんなの作ったことあります。ハズレでしたら忘れてください。
unit MyTreeView;
interface
uses
  Windows, Messages, SysUtils, Classes, Controls, ComCtrls;
type
  TMyTreeView = class(TTreeView)
  private
    { Private 宣言 }
    FItemHeight: Integer;
    procedure SetItemHeight(Value: Integer);
    function GetItemHeight: Integer;
  published
    { Published 宣言 }
    property ItemHeight: Integer read GetItemHeight write SetItemHeight;
  end;
procedure Register;
implementation
uses CommCtrl;
procedure Register;
begin
  RegisterComponents('MyCompo', [TMyTreeView]);
end;
procedure TMyTreeView.SetItemHeight(Value: Integer);
begin
  if FItemHeight<>Value then begin
    FItemHeight := Value;
    SendMessage(Handle,TV_FIRST+27,FItemHeight,0);
  end;
end;
function TMyTreeView.GetItemHeight: Integer;
begin
  Result := SendMessage(Handle,TV_FIRST+28,0,0);
end;
end.

編集    削除
LupinⅢ  URL  2003-12-26 20:51:37  No: 6408  IP: [192.*.*.*]

なるほど自前でクラスを作るということですね。
出来れば自前でクラスを作らない方法を考えたかったのですが…。

編集    削除
にしの  2003-12-26 21:03:16  No: 6409  IP: [192.*.*.*]

いや、単純に、
SendMessage(Handle,TV_FIRST+27,FItemHeight,0);//設定

Result := SendMessage(Handle,TV_FIRST+28,0,0);//取得

ここが重要で、それを使いやすくするためのクラスということだと思います。

ちなみに、TV_FIRST+27やTV_FIRST+28だと解りづらいので、
TVM_SETITEMHEIGHT
TVM_GETITEMHEIGHT
としたほうがよいかも。

編集    削除
LupinⅢ  URL  2003-12-26 21:20:26  No: 6410  IP: [192.*.*.*]

通りすがりさん、にしのさんありがとうございます。
確かにその通りで、解決できました。

編集    削除