0
フレームに関する経験はありません。Delphi:Tree of Nodeビューに割り当てられたフレームを表示
フレームでツリービューを使用するにはどうすればよいですか? ツリービューのノード間を切り替えて、指定したフレームを選択したノードに表示する必要があります。
大変大きな助けに感謝!
フレームに関する経験はありません。Delphi:Tree of Nodeビューに割り当てられたフレームを表示
フレームでツリービューを使用するにはどうすればよいですか? ツリービューのノード間を切り替えて、指定したフレームを選択したノードに表示する必要があります。
大変大きな助けに感謝!
ノードのData
がフレームまたは他の種類のオブジェクトへのポインタを保持している場合、それが保持するオブジェクトの型へのポインタを型キャストすると、実際には何の違いもありません。
以下のコードでは、TreeViewのノードとして2つのフレーム(IDEによって作成されたFrame2とFrame3)を追加し、 1つは偽です。
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;
良い。なぜNods:First chance例外で$ 766EB727のようなエラーが発生するのでしょうか?モジュール 'Project1.exe'のアドレス0049515Bでのアクセス違反という例外クラスEAccessViolation。アドレス00000059 'の読み出し。プロセスProject1.exe(3636)??? – maxfax
いいえ:) – maxfax
+1、コードは完璧に動作します。 @maxfax、あなたのために動作しない場合、より具体的に失敗してください。コードをコピーして貼り付けましたか、それともあなたの状況に適応させましたか?アクセス違反はどこで手に入りますか? –