У меня нет опыта работы с рамками.
Как использовать Tree View с фреймами? Мне нужно переключаться между узлами древовидного представления и показывать назначенный кадр выбранному узлу.
Огромнейшее спасибо за помощь!!!
У меня нет опыта работы с рамками.
Как использовать Tree View с фреймами? Мне нужно переключаться между узлами древовидного представления и показывать назначенный кадр выбранному узлу.
Огромнейшее спасибо за помощь!!!
На самом деле не имеет никакого значения, если Data
узлов содержат указатель на фрейм или любой другой тип объекта, приведите указатель к типу объекта, который он содержит.
В приведенном ниже коде добавляются два фрейма ("Frame2" и "Frame3", созданные в среде IDE — очень похоже на новую форму) в качестве узлов TreeView, и задается для видимости фрейма выбранного узла значение true, а для невыбранного — значение false.
type
TForm1 = class(TForm)
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
procedure FormDestroy(Sender: TObject);
end;
var
Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
TreeView1.Align := alLeft;
with TFrame(TreeView1.Items.AddObject(nil, 'Frame2', TFrame2.Create(nil)).Data) do begin
Visible := False;
Parent := Self;
Align := alClient;
end;
with TFrame(TreeView1.Items.AddObject(nil, 'Frame3', TFrame3.Create(nil)).Data) do begin
Visible := False;
Parent := Self;
Align := alClient;
end;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
begin
for i := 0 to TreeView1.Items.Count - 1 do
TFrame(TreeView1.Items[i].Data).Free;
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
TFrame(Node.Data).Visible := True;
end;
procedure TForm1.TreeView1Changing(Sender: TObject; Node: TTreeNode;
var AllowChange: Boolean);
begin
if Assigned((Sender as TTreeView).Selected) then
TFrame(TTreeView(Sender).Selected.Data).Visible := False;
end;
TreeView
? Код Сертака добавляет их в FormCreate
вместе со связанным TFrame
. Если вы добавили узлы в TreeView
каким-либо другим способом, связаны ли с ними кадры?
- person Cosmin Prund; 05.07.2011
if Assigned(Node.Data) then TFrame(Node.Data)...
- person Sertac Akyuz; 06.07.2011
if Assigned((Sender as TTreeView).Selected) and Assigned(TTreeView(Sender).Selected.Data) then
- person Sertac Akyuz; 06.07.2011
TTreeView(Sender)
, затем на Selected
, затем на Data
. Когда вы видите «ноль», вы знаете причину AV.
- person Sertac Akyuz; 06.07.2011
TreeView1.Items[1].Item[1].Data := MyFrame;
Конечно, к тому времени должен быть создан экземпляр «MyFrame»..
- person Sertac Akyuz; 06.07.2011