안녕하신가요 고수님들^^
Treeview로 메뉴 구성을 하려 하는데
자문좀 구할까 해서요 ^^
기존에 제가 treeview로 구성한 메뉴는
actionlist에 액션을 만들고 그담에 아래와 같이 treeview 더블클릭시
해당 노드의 caption으로 action을 찾아 이벤트를 실행토록 했었습니다..^^
for i := 0 to (mnu_list.ActionCount -1) do begin
if Trim((mnu_list.Actions[i] as TForm).Caption) = Trim(treeview1.Selected.Text) Then begin
(mnu_list.Actions[i] as TAction).Execute;
LoginLog(Trim(treeview1.Selected.Text));
Break;
end;
end;
이런식으로 사용 하니 신규 폼이 추가될때 마다 action들을 추가해야 하는군요 ㅠ,.ㅠ
그래서 DB에 폼의 caption이나 폼명을 입력해놓구
트리뷰 클릭시 폼을 create하는 방법을 생각하고 있는데..
문제는 폼의 caption으로 해당 Tform을 열수 있는 방법입니다.
아무리 생각해도 caption으로 Tform을 가지고 오는 방법이 떠오르지가 않네요 ㅠ,.ㅠ 아시는 고수분들은 지나치지 마시고 굴비 부탁드리겠습니다 ^^
그럼 좋은 하루 보내십시요~^^
아래함수를 사용하세요 ^^!
//===================================================================
function Create_Form(sClass : string):Boolean;
var MyFormClass : TFormClass;
MyForm : TForm;
i :integer;
begin
Result := True;
for i := 0 to (Screen.FormCount - 1 ) do
begin
if Screen.Forms[i].Name = Copy(sClass,2,length(sClass)-1) then
begin
Screen.Forms[i].show;
Exit;
end;
end;
MyFormClass := TFormClass(GetClass(sClass)); //클래스를 찾아온다
if MyFormClass <> nil then
begin
Application.CreateForm(TFormClass(FindClass(sClass)), MyForm);
for i := 0 to (Screen.FormCount - 1 ) do
begin
if Screen.Forms[i].Name = Copy(sClass,2,length(sClass)-1) then
begin
Screen.Forms[i].show;
Exit;
end;
end;
end
else
Result := False;
end;
= 사용방법 ===========================================================
sStr := 'T' + 폼명
Create_Form(sStr);