몇개의 실행파일로 나뉘어졌던 수백개의 모듈을 하나로 통합하는 작업을 하고 있습니다.
요는, 프로그램 등록하는 폼과 DB를 만들어서 그것을 연동하여 분야별 프로그램리스트가
쫘악 뜨고 그것을 클릭하면 해당 폼이 실행되야 합니다.
헌데...
될 줄 알았던
procedure TTopMenufm.SpeedButton1Click(Sender: TObject);
var T_Form : TForm;
begin
T_Form := TForm(FindComponent((Sender As TSpeedButton).Hint+'fm'));
T_Form := T_Form.Create(Self);
T_Form.ShowModal;
T_Form.Free;
end;
요것이 안먹네요...
(참고로 프로그램 목록을 쿼리해서 스피드버튼에 모듈명,제목 등을 저장했거든요)
결론은 버튼을 클릭하여 정해지지 않은 폼을 실행시키려고 하는데... 답이 없나요...?
빠른 답변 좀 부탁드립니다...
FindComponent는 자식컴포넌트 그러니까 폼내의 컴포넌트를 찾기위해 쓰이는것니가 이걸로는 힘들구요...
사용하실려고 하는 폼들을 RegisterClass/RegisterClasses함수로 등록하신뒤에 GetClass함수로 객체의 형을 찾아서 인스턴스를 만들어서 사용하시면 됩니다....
<!--CodeS-->
RegisterClasses([TForm2, TForm3, ........, 사용할폼목록들]); ==> 단한번만 호출하시면 됩니다...
procedure TTopMenufm.SpeedButton1Click(Sender: TObject);
var
FormClass: TFormClass;
Form: TForm;
FormName: string;
begin
FormName := (Sender As TSpeedButton).Hint+'fm';
FormClass:= TFormClass(GetClass(FormName));
if FormClass<> nil then
begin
Form := FormClass.Create(Self);
Form.ShowModal;
Form.Free;
end
else
ShowMessage('폼없다... 먼저 등록해...');
end;
<!--CodeE-->
^^ 항상 즐코하세요...