Delphi의 Tapplication 클래스에 대한 자세한 설명 TApplication은 Delphi 애플리케이션의 한 유형으로 TComponent에서 상속되며 Forms 유닛에 선언됩니다. 그리고 Forms에는 공개 객체 애플리케이션이 있습니다. 그 메소드와 속성에는 Windows 운영 체제에서 애플리케이션 생성, 실행 및 삭제와 같은 확립된 기본 작업과 속성이 포함되어 있어 Delphi에서 Windows 애플리케이션을 작성할 때 사용자와 Windows 환경 간의 인터페이스를 단순화합니다. TApplication은 다음 네 가지 기능을 캡슐화합니다. 1. Windows 메시지 처리. 2. 메뉴 가속 및 키보드 처리. 3. 예외 처리. 4. 상황별 온라인 도움말. 다음은 TApplication에서 일반적으로 사용되는 속성, 메소드 및 이벤트를 소개합니다. 1. 속성 1. 1 속성 활성 속성 활성은 애플리케이션이 활성 상태이고 포커스가 있는지 여부를 나타냅니다. 정의는 다음과 같습니다. PRperty Active: Boolean은 읽기 전용 속성입니다. Active는 애플리케이션이 활성화되면 True이고, 그렇지 않으면 False입니다. TApplica-tion의 생성자는 Active를 True로 설정합니다. 창이나 응용 프로그램에 포커스가 있으면 응용 프로그램이 활성화된 것입니다. 다른 응용 프로그램의 창이 활성화되면 현재 응용 프로그램이 비활성화됩니다. 애플리케이션이 닫히면 TApplication의 소멸자는 Active를 False로 설정합니다. 애플리케이션에서는 타이머(TTimer)를 사용하여 Active 속성의 값을 확인하여 현재 애플리케이션이 활성 상태인지 여부를 확인하여 적절한 처리가 이루어질 수 있습니다. 지정된 작업은 OnActive 이벤트와 OnDeactive 이벤트에서도 정의할 수 있습니다. 1.2 DialogHandle 속성 DialogHandle은 Delphi 응용 프로그램이 Delphi가 아닌 대화 상자를 사용할 수 있는 메커니즘을 제공합니다. 정의는 다음과 같습니다. property DialogHandle: HWnd; API 함수 CreateDialog를 사용하여 비모달 대화 상자를 생성하는 경우 DialogHandle을 사용해야 하며 해당 작업을 수행하려면 애플리케이션 메시지 루프에서 메시지를 확인해야 합니다. 예를 들어 모덜리스 대화 상자가 활성화 메시지(WM_NCACTIVATE)를 받으면 해당 핸들을 DialogHandle에 할당할 수 있으며 대화 상자가 비활성화 메시지를 받으면 DialogHandle이 0으로 설정됩니다. 1.3 속성 ExeName 속성 ExeName에는 실행 가능한 응용 프로그램 파일 이름과 경로 정보가 포함됩니다. 이는 다음과 같이 정의됩니다. property ExeName: string ExeName은 읽기 전용 속성입니다. ExeName을 사용하여 애플리케이션 실행 파일의 파일 이름을 가져옵니다. 이는 매우 유용한 속성입니다. 예를 들어, CD에서 f:/media/myapp.exe 응용 프로그램을 실행할 때 f:/media/data/ 디렉터리의 파일에 액세스하거나 응용 프로그램이 있는 드라이브 문자를 확인해야 할 수 있습니다. 이때 Delphi에서 제공하는 ExtractFilePath 및 ExtractFileName 함수를 사용하여 ExeName 속성을 구문 분석하여 필요한 정보를 얻을 수 있습니다. 1.4 속성 핸들 핸들 속성은 애플리케이션의 기본 창 핸들에 대한 액세스를 제공합니다. 정의는 다음과 같습니다. property Handle: HWND 핸들 속성은 상위 창 핸들이 필요한 Windows API 함수를 호출할 때 사용해야 합니다. 예를 들어, 애플리케이션의 DLL(동적 연결 라이브러리)이 팝업되어 맨 앞으로 표시될 수 있도록 상위 창 핸들이 필요할 수 있습니다. Application.Handle을 사용하여 애플리케이션의 여러 창을 구성하면 해당 창을 애플리케이션에서 최소화, 복원, 활성화 또는 비활성화할 수 있습니다. 참고: VCL 양식을 사용하는 동적 링크 라이브러리를 작성할 때 기본 실행 프로그램의 기본 창 핸들은 동적 링크 라이브러리의 Application.Handle 속성에 할당되어야 합니다. 이렇게 하면 동적 링크 라이브러리의 형식이 기본 애플리케이션의 일부가 됩니다. EXE 응용 프로그램에서는 Application.Handle에 값을 할당해서는 안 된다는 점을 지적하는 것이 중요합니다. 1.5 HelpFile 속성 HelpFile은 도움말 내용을 표시하기 위해 응용 프로그램에서 사용하는 파일 이름을 지정합니다. 정의는 다음과 같습니다. property HelpFile: string; HelpFile을 사용하는 것은 응용 프로그램이 표준 Windows 도움말 시스템을 사용하는 도움말 파일을 갖기 위한 것입니다. Windows는 HelpFile 속성에 지정된 도움말 파일을 표시합니다. 애플리케이션이 이를 달성하려면 런타임에 HelpFile 속성에 파일 이름 값을 제공하거나 디자인 타임에 Project|Options 대화 상자의 애플리케이션 페이지에 도움말 파일을 지정해야 합니다. 기본적으로 HelpFile은 빈 문자열('')이며 애플리케이션의 도움말 메소드는 도움말을 표시하려는 모든 시도를 무시합니다. HelpFile에 콘텐츠가 포함되어 있는 경우 도움말 항목 메서드는 Windows 도움말 시스템을 불러와 파일 이름을 기반으로 온라인 도움말을 제공합니다. 참고: 활성 창의 도움말 파일이 지정된 경우 해당 파일은 응용 프로그램의 도움말 파일보다 우선적으로 표시됩니다. 1.6 속성 힌트 속성 힌트는 도움말 힌트 상자에 나타나는 텍스트 문자열을 지정합니다. 정의는 다음과 같습니다. property Hint: string; TApplication.Hint 속성은 마우스가 이동하는 컨트롤 또는 메뉴 항목의 힌트 값입니다. 이 속성에는 사용자에게 작업, 오류 또는 기타 정보를 제공하는 문자열 값이 할당될 수도 있습니다. 따라서 Hint 속성을 사용하면 컨트롤의 프롬프트 정보를 다른 표시 영역으로 전송할 수도 있습니다. 예를 들어 OnHint 이벤트 핸들러를 통해 상태 표시줄에 프롬프트를 표시할 수 있습니다. 이때 Hint 속성을 읽어옵니다. 작업을 수행할 때 애플리케이션의 상태를 간략하게 설명합니다. 이때 Hint 속성이 설정됩니다. OnHint 이벤트가 발생하면 도움말 프롬프트가 나타납니다. 따라서 TApplication의 Hint 속성에 상태 표시줄의 제목이 할당된 경우(예: 상태 표시줄 컨트롤의 제목이 Hint 속성의 현재 문자열 값을 표시하는 경우)에도 OnHint 이벤트에 귀속되어야 합니다. 힌트 문자열은 짧은 힌트와 긴 힌트의 두 부분으로 구성됩니다. 짧은 프롬프트는 간결한 팝업 프롬프트에 사용됩니다. 긴 프롬프트와 짧은 프롬프트는 수직 막대 "|"로 구분되며 상태 표시줄에 더 자세한 프롬프트 정보를 표시하는 데 사용됩니다. Unit Controls에 제공된 문자열 함수 GetShortHint 및 GetLongHint를 사용하여 Hint 속성에서 짧은 힌트와 긴 힌트를 얻을 수 있습니다. 참고: 애플리케이션이 Hint 속성을 설정하여 이벤트 발생에 대한 정보를 사용자에게 제공할 때 기본적으로 마우스를 컨트롤 위로 이동하면 힌트 문자열이 Hint 속성 값으로 재설정된다는 점을 기억해야 합니다. 통제의. 1.7 속성 HintHidePause 속성 HintHidePause는 마우스가 컨트롤이나 메뉴 항목에서 멀어지기 전에 도움말 프롬프트가 숨겨지기 전의 시간 간격을 지정합니다. 이는 다음과 같이 정의됩니다: property HintHidePause: Integer; HintHidePause를 사용하여 대기 시간을 밀리초 단위로 지정합니다. 이 속성은 TApplication 생성자에서 2500밀리초(2.5초)로 설정됩니다. 컨트롤이나 메뉴 항목에 대한 도움말 팁은 Hint 속성에 지정됩니다. 참고: 기본적으로 HintHidePause 값은 HintPause 속성 값의 3~5배로 미리 결정되어야 합니다. 1.8 MainForm 속성 MainForm 속성은 애플리케이션의 기본 양식을 고유하게 식별합니다. 이는 다음과 같이 정의됩니다. property MainForm: TForm; MainForm 속성에 의해 지정된 양식은 반드시 애플리케이션의 기본 창과 동일할 필요는 없습니다. MainForm 속성의 값은 CreateForm 메서드로 생성된 모든 폼 중에서 첫 번째 폼이어야 하지만 해당 폼이 응용 프로그램의 기본 창이 아닐 수도 있습니다. 새 프로젝트를 생성하면 MainForm 속성 값이 자동으로 Form1로 설정됩니다. 디자인 타임에 Project|Options 대화 상자의 Forms 페이지를 통해 여러 폼 중 하나를 MainForm으로 지정할 수 있습니다. MainForm 속성은 읽기 전용이므로 런타임에 수정할 수 없습니다. 기본 폼은 애플리케이션 테마로 생성된 첫 번째 폼입니다. 기본 양식이 닫히면 애플리케이션이 종료됩니다. 애플리케이션에서는 Application.MainForm.Close 메소드를 호출하여 애플리케이션을 종료할 수 있습니다. Application.MainForm.Top 및 Application.MainForm.Left와 같은 속성 값을 얻어 현재의 위치와 크기를 확인할 수 있습니다. 활성 창. 1.9 속성 ShowMainForm 속성 ShowMainForm은 애플리케이션이 시작될 때 메인 폼을 표시할지 여부를 결정합니다. 이는 다음과 같이 정의됩니다. property ShowMainForm: Boolean; 응용 프로그램은 ShowMainForm 속성을 사용하여 기본 양식을 표시할지 여부와 시기를 제어합니다. TApplication의 생성자는 ShowMainForm을 True로 설정합니다. 기본적으로 MainForm 속성에 지정된 대로 기본 양식이 표시됩니다. 애플리케이션이 시작될 때 기본 폼을 숨겨야 하는 경우 기본 프로젝트 파일에서 Application.Run을 호출하기 전에 ShowMainForm을 False로 설정하고 기본 폼의 Visible 속성 값이 False인지 확인해야 합니다. 이는 자동화 서비스를 시작할 때 서버 프로그램의 기본 양식을 숨기는 등 OLE 자동화 서버의 다양한 구현에 유용합니다. 또한 애플리케이션 시작 시 플래시 그림(Flash)을 표시하고 애플리케이션 환경에 대한 몇 가지 준비를 해야 하며, 메인 폼 표시를 비활성화해야 하는 경우에도 ShowMainForm 속성을 사용하여 구현할 수 있습니다. 예를 들어 Delphi가 시작되면 기본 폼의 표시가 비활성화됩니다. 1.10 종료된 속성 종료된 속성은 프로그램을 종료하는 Windows 메시지 WM_QUIT를 프로그램이 수신했는지 여부를 보고합니다. 정의는 다음과 같습니다. Terminating 속성: Boolean은 읽기 전용 속성입니다. 이 속성은 애플리케이션이 Windows 메시지 처리를 중단할 필요가 없도록 ProcessMessages 메서드를 호출할 때 주로 사용됩니다. ProcessMessages 메서드가 WM_QUIT 메시지를 받으면 Terminating이 True로 설정됩니다. Delphi 애플리케이션은 기본 폼이나 애플리케이션이 닫히거나 Terminate 메소드가 호출되기 때문에 항상 WM_QUIT 메시지를 받습니다. 애플리케이션이 시스템 리소스를 많이 차지하는 집약적인 작업을 수행하는 경우 주기적으로 Application-on.ProcessMessages 메서드를 호출해야 하며, 애플리케이션을 종료하기 위해 작업을 종료해야 하는지 여부를 확인하기 위해 Application.Terminating 속성을 확인해야 합니다. . 1.11 UpdateFormatSettings 속성 UpdateFormatSettings는 사용자가 시스템 구성을 변경할 때 응용 프로그램이 형식 설정을 자동으로 업데이트할지 여부를 지정합니다. 다음과 같이 정의됩니다. property UpdateFormatSettings: Boolean; UpdateFormatSettings 속성 응용 프로그램을 사용하면 형식 설정의 자동 업데이트를 제어할 수 있습니다. TApplication의 생성자는 이 속성을 True로 설정합니다. 응용 프로그램이 WM_WININICHANGE 메시지를 받으면 UpdateFormatSett-ings 속성을 확인합니다. 로컬 Windows 설정인 기본 형식 설정을 사용하는 것이 좋습니다. UpdateFormatSet-ttings를 False로 설정하면 Delphi 애플리케이션 실행 중에 형식 설정이 변경되는 것을 방지할 수 있습니다. 1.12 속성 UpdateMetricSettings 속성 UpdateMetricSettings 속성은 프롬프트 창 글꼴, 아이콘 제목 등 관련 설정을 업데이트할지 여부를 나타냅니다. 정의는 다음과 같습니다. property UpdateMetricSettings: Boolean; UpdateFormatSettings 속성은 시스템의 프롬프트 창 글꼴, 아이콘 제목 등 설정 변경 사항이 애플리케이션의 관련 설정 변경 사항에 반영되는지 여부를 나타냅니다. TApplication의 생성자는 UpdateMetricSettings의 초기 값을 True로 설정합니다. 2. 방법 2.1 방법 BringToFront 방법 BringToFront는 응용 프로그램에서 가장 최근에 활성화된 창을 바탕 화면의 모든 창 앞에 표시하도록 설정합니다. 해당 정의는 다음과 같습니다. 프로시저 BringToFront; 기본 양식에 속하는 가장 최근의 활성 창을 찾아 앞으로 가져오려면 BringToFront 메서드를 사용합니다. BringToFront 메서드는 맨 앞 창이 되기 전에 창이 표시되고(Visible) 유효한지(Enabled) 여부를 테스트하고 확인할 수도 있습니다. 예를 들어, 응용 프로그램이 메일을 받으면 특수 처리기를 활성화하여 Windows 바탕 화면의 최전선으로 가져와야 할 수 있습니다. 이때 Application.BringToFront 메서드를 호출하여 이를 달성할 수 있습니다. 2.2 CreateForm 메소드 CreateForm 메소드는 새로운 폼(form)을 생성하는데 사용됩니다. 이는 다음과 같이 정의됩니다: Procedure CreateForm(FormClass: TFormClass; var Reference) Delphi 애플리케이션은 항상 CreateForm 메소드를 호출합니다. 따라서 프로그래머가 CreateForm 메서드를 직접 호출할 필요는 거의 없습니다. 일반적인 Delphi 프로젝트에는 프로젝트의 기본 코드 부분에 CreateForm 메서드에 대한 하나 이상의 호출이 포함되어 있으며 양식 디자이너를 사용할 때 양식 생성을 자동으로 제어합니다. 또한 런타임에 CreateForm 메서드를 호출하여 양식을 동적으로 만들 수도 있습니다. CreateForm 메서드는 FormClass 매개 변수를 기반으로 지정된 새 양식을 만들고 해당 양식을 변수 매개 변수 Reference에 할당합니다. 새로 생성된 양식의 소유자는 Application 개체입니다. 응용 프로그램은 기본적으로 CreateForm을 프로젝트의 기본 양식으로 호출하여 생성된 첫 번째 양식으로 설정됩니다. 2.3 HandleException 메서드 HandleException 메서드는 응용 프로그램 예외에 대한 기본 핸들을 제공합니다. 이는 다음과 같이 정의됩니다. Procedure HandleException(Sender: TObject); HandleException 메소드는 Windows 메시지에 응답할 필요가 없는 이벤트를 생성할 수 있으므로 특정 구성 요소 작성자에게 유용합니다. 애플리케이션에서 OnException 이벤트 처리기를 사용하여 사용자 지정 코드에서 다른 예외 작업을 제어할 수 있습니다. 애플리케이션 코드에서 예외가 모든 try 블록을 건너뛰면 애플리케이션은 자동으로 HandleE-xception 메서드를 호출하고 오류가 발생했음을 나타내는 대화 상자를 표시합니다. 예외 개체가 EAbort가 아니면 Hand-dleException은 OnException 핸들(존재하는 경우)을 호출하고, 그렇지 않으면 ShowException이 호출되어 오류를 묻는 대화 상자를 표시합니다. 2.4 UnhookMainWindow 메소드 UnhookMainWindow 메소드는 HookMainWindow 메소드에 의해 메인폼에 걸린 프로그램을 해제하는데 사용됩니다. 정의는 다음과 같습니다: type TWindowHook = function(var Message: TMessage): Boolean of object; Procedure UnhookMainWindow(Hook: TWindowHook); 후크 창을 해제하려면 UnhookMainWindow를 사용하십시오. 매개변수 Hook에 대화 상자 절차를 지정합니다. TwindowHook 유형은 HookMainWindow 메소드를 호출하기 위한 매개변수입니다. 이 매개변수는 Delphi가 아닌 대화 상자에서 대화 상자 프로그램을 호출하기 위한 메소드 포인터입니다. 대화 상자 프로그램은 대화 상자의 메시지를 처리한다는 점에서 창 프로그램과 유사하지만 구문이 다릅니다. 3. 이벤트 3.1 이벤트 OnActivate OnActivate 이벤트는 애플리케이션이 활성화될 때 발생합니다. 정의는 다음과 같습니다: type TNotifyEvent = 프로시저(Sender: TObject) of object; 속성 OnActivate: TNotifyEvent; OnActive 이벤트를 사용하여 애플리케이션이 활성화될 때 특수 처리를 지정하는 이벤트 핸들러를 작성합니다. Windows 응용 프로그램은 처음 실행될 때 또는 포커스가 다른 Windows 응용 프로그램에서 현재 응용 프로그램으로 다시 전송될 때 활성화됩니다. 3.2 OnDeactivate 이벤트 OnDeactivate 이벤트는 애플리케이션이 비활성화될 때 발생합니다. type TNotifyEvent = 프로시저(Sender: TObject) of object; 속성 OnDeactivate: TNotifyEvent; OnDeactive 이벤트는 애플리케이션이 비활성화되기 직전에 트리거되어 이벤트 핸들러에 지정된 특수 처리를 완료할 수 있습니다. 현재 응용 프로그램의 OnDeactive 이벤트는 사용자가 현재 응용 프로그램에서 다른 응용 프로그램으로 전환할 때 발생합니다. 3.3 OnException 이벤트 OnException은 응용 프로그램에서 핸들 없는 예외가 발생할 때 발생합니다. type TExceptionEvent = 객체의 프로시저(Sender: TObject; E: Exception), 속성 OnException: TExceptionEvent; 애플리케이션에서 핸들러 없이 예외가 발생할 경우 기본 동작을 변경하는 데 사용할 수 있습니다. TApplication.HandleException 메소드에서는 OnException 이벤트 핸들러가 자동으로 호출됩니다. OnException 이벤트는 메시지 처리 중에 발생하는 예외를 처리하는 데에만 사용됩니다. Application.Run이 실행되기 전이나 후에 발생하는 예외로 인해 OnException 이벤트가 발생하지 않습니다. 애플리케이션 코드의 try 블록에서 예외가 무시되면 애플리케이션은 자동으로 HandleException 메서드를 호출합니다. 예외 개체가 EAbort가 아닌 경우 HandleException은 OnException 핸들(존재하는 경우)을 호출하고, 그렇지 않으면 ShowException이 호출되어 오류를 묻는 대화 상자를 표시합니다. TExceptionEvent 유형은 애플리케이션에서 예외를 처리하기 위한 메서드를 가리키는 OnException 이벤트의 유형입니다. 매개변수 Sender는 예외를 발생시키는 객체이고, 매개변수 E는 예외 객체입니다. 3.4 이벤트 OnHelp OnHelp 이벤트는 응용 프로그램이 도움말 요청을 받을 때 발생합니다. 정의는 다음과 같습니다. type THelpEvent = function (Command: Word; Data: Longint; var CallHelp: Boolean): 객체의 부울 OnHelp: THelpEvent 요청이 있을 때 특수 처리를 완료하는 이벤트 핸들러를 작성합니다. 도움을 위해. HelpContext 메서드와 HelpJump 메서드는 자동으로 OnHelp 이벤트를 발생시킵니다. 이벤트 발생 후 VCL이 WinHelp를 호출할 수 있도록 하려면 CallHelp를 True로 설정하고, VCL이 WinHelp를 호출하지 않도록 하려면 CallHelp를 False로 설정합니다. Delphi 애플리케이션의 모든 도움말 관련 메소드는 OnHelp 이벤트를 거칩니다. WinHelp는 OnHelp 이벤트의 CallHelp 매개 변수가 True를 반환하거나 OnHelp 이벤트가 유효한 핸들에 할당되지 않은 경우에만 호출됩니다. 3.5 OnHint 이벤트 마우스 포인터가 컨트롤이나 메뉴 항목 사이를 이동하고 컨트롤이나 메뉴 항목이 도움말 프롬프트를 표시할 수 있으면 OnHint 이벤트가 발생합니다. 정의는 다음과 같습니다: type TNotifyEvent = 객체의 프로시저(Sender: TObject); 속성 OnHint: TNotifyEvent; OnHint로 작성된 이벤트 핸들러는 OnHint 이벤트가 발생할 때 지정된 작업을 수행할 수 있습니다. 사용자가 컨트롤 위에 마우스 포인터를 놓았을 때 컨트롤의 Hint 속성 값이 빈 문자열('')이 아닌 경우 OnHint 이벤트가 발생합니다. OnHint 이벤트는 일반적으로 컨트롤이나 메뉴 항목의 Hint 속성 값을 패널 컨트롤(예: TStatusBar)의 제목으로 표시하는 데 사용되므로 패널은 상태 표시줄로 사용됩니다. OnHint 이벤트가 발생하면 Hint 속성은 일반적으로 도움말 힌트와 다른 곳에 표시되는 더 긴 힌트로 지정됩니다. 3.6 이벤트 OnIdle OnIdle 이벤트는 애플리케이션이 유휴 상태가 될 때 발생합니다. 정의는 다음과 같습니다: type TIdleEvent = 프로시저(Sender: TObject; var Done: Boolean) of object; 속성 OnIdle: TIdleEvent OnIdel을 사용하여 애플리케이션이 유휴 상태일 때 지정된 작업을 완료하는 이벤트 핸들러를 작성합니다. 애플리케이션은 코드를 실행하지 않을 때 유휴 상태입니다. 예를 들어 애플리케이션은 사용자 입력을 기다리는 동안 유휴 상태입니다. TIdelEvent 유형은 애플리케이션이 유휴 상태일 때 실행되는 메서드를 가리키는 OnIdel 이벤트 유형입니다. TIdelEvent 객체에는 기본값이 True인 Done 변수가 있습니다. Done이 True이면 OnIdel이 반환될 때 Windows API 함수 WaitMessage가 호출됩니다. WaitMessage는 응용 프로그램의 메시지 대기열에 새 메시지가 나타날 때까지 다른 응용 프로그램이 제어 포커스를 얻도록 합니다. Done 매개변수가 False이고 애플리케이션이 사용 중이지 않으면 애플리케이션은 다른 애플리케이션이 제어 포커스를 얻는 것을 허용하지 않습니다. 애플리케이션이 유휴 상태가 되면 OnIdel 이벤트는 한 번만 발생하며 Done 매개변수가 True로 설정될 때까지 다음 OnIdel 이벤트가 발생하지 않을 수 있습니다. 애플리케이션에서 Done을 False로 설정하면 전체 시스템 성능에 영향을 미칠 수 있는 불규칙한 CPU 시간 계산이 제거됩니다. 3.7 이벤트 OnMessage는 애플리케이션이 WINDOWS 메시지를 수신할 때 생성됩니다. 이는 다음과 같이 정의됩니다. type TMessageEvent = object 속성의 프로시저(var Msg: TMsg; var Handled: Boolean); 이 이벤트는 WINDOWS 메시지를 수신하는 데 사용됩니다. 프로그램이 WINDOWS로 보낸 모든 메시지를 받을 수 있습니다. 이 이벤트는 애플리케이션이 메시지를 수신할 때 생성됩니다. Msg 변수는 WINDOWS 메시지 유형입니다.