ListViewとTreeViewを両方ともHideSelect = falseで配置し、
ListViewの[i]番目のアイテムが選択されたとき、ListViewの[i]番目のItemとTreeViewの[i]番目のItemを選択状態にし、また、
TreeViewの[i]番目のItemが選択されたとき、TreeViewの[i]番目のItemとListViewの[i]番目のItemが選択されているようにしたいのですが、ListViewのOnSelectイベントでTreeViewを選択状態しするとListViewの選択が解かれてしまいます。
このようなことを実現するにはどうすればよいのでしょうか。どうかご教授ください
他にも色々方法ありますが。
簡単げな方法をひとつ
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
ListView1: TListView;
procedure ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private 宣言 }
eventFlag:boolean;
procedure commonEvent(Sender: TObject);
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.commonEvent(Sender: TObject);
begin
caption:=(Sender as TWinControl).Name;
end;
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if eventFlag=True then
exit else
begin
eventFlag:=True;
TreeView1.Items[Item.Index].Selected :=True;
commonEvent(Sender);
eventFlag:=False;
end;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if eventFlag=True then
exit else
begin
eventFlag:=True;
ListView1.Items[Node.Index].Selected :=True;
commonEvent(Sender);
eventFlag:=False;
end;
end;
end.
ありがとうございました。
無事両方を選択状態にすることができました。。
ツイート | ![]() |