2014-09-01 6 views
1

이름으로 양식을 찾는 방법은 무엇입니까? 이 양식에는 편집 (TEdit)이 있으며이 TEdit (예 : 주소)에 글을 쓰고 싶습니다. 그러나 양식 이름 만 있습니다. 도와 주시겠습니까?Delphi, 이름으로 양식 찾기

+2

양식을 어떻게 잃어 버리셨습니까? –

+0

런타임에 응용 프로그램이 만든 양식 중에서 양식을 찾는 방법을 의미합니까? – MartynA

+0

양식을 만든 경우 변수에서 기억하지 않는 것이 좋습니다. 왜 이름으로 뭔가를보고 싶니? –

답변

5

이름으로 양식을 찾는 더 간단한 방법이 있습니다. auto-created 양식 객체는 모두 Application 객체에 속하고 TApplicationTComponent에서 상속되므로 Application.Components 배열 속성을 반복하거나 Application.FindComponent 메서드를 사용할 수 있습니다.

var 
    Form: TForm; 
begin 
    Form := Application.FindComponent('LostForm1') as TForm; 
    if Assigned(Form) then 
    Form.Show 
    else 
    { error, can't find it } 

FindComponent은 대소 문자를 구분하지 않습니다.

0

양식 제목 또는 양식의 클래스 이름을 알고있는 경우 FindWindow 함수를 사용할 수 있습니다.

+0

OP가 양식을 포함하는 응용 프로그램 내부에서 양식을 찾는 방법을 묻고있는 것 같습니다. – MartynA

4

이 답변은 VCL 응용 프로그램을 작성한다고 가정합니다. FireMonkey가 비슷한 해결책을 가지고 있는지 나는 모른다.

모든 양식은 Vcl.Forms 객체가 선언 될 때 전역 화면에 추가됩니다. 따라서 이런 작은 도우미 기능을 만들 수 있습니다.

function FindFormByName(const AName: string): TForm; 
var 
    i: Integer; 
begin 
    for i := 0 to Screen.FormCount - 1 do 
    begin 
    Result := Screen.Forms[i]; 
    if (Result.Name = AName) then 
     Exit; 
    end; 
    Result := nil; 
end;