タイトルと通りなのですがTreeViewでアイテムの高さを変更したい(ちなみに行間を大きくしたい)のですが、どのような方法ですべきでしょうか?
編集 削除こんなの作ったことあります。ハズレでしたら忘れてください。
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.
なるほど自前でクラスを作るということですね。
出来れば自前でクラスを作らない方法を考えたかったのですが…。
いや、単純に、
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
としたほうがよいかも。
通りすがりさん、にしのさんありがとうございます。
確かにその通りで、解決できました。