델파이 VCL 폼을 처음 만들면 기본적으로 다음처럼 되어있다.
unit ~
interface
uses
~
type
~
var
~
implementation
end.
unit 은 pas파일의 이름이다.
반드시 파일 이름과 같아야 한다.
interface는 자바의 인터페이스와 유사하다.
'선언부' 라고도 하는데 이 소스코드에서 사용할 함수와 객체를 모두 선언해둔다.
선언부에서 선언하지 않은 클래스와 객체는 사용할 수 없다.
델파이도 자바와 유사하게 클래스 구조로 되어있다.
메인이 따로 결정되어 있지 않고, 맨 처음 실행할 클래스는 직접 지정할 수 있다.
선언부 내에는 uses, type, var 이 들어간다.
uses
파이썬, 자바의 import와 동일하다. 사용할 모듈을 가져온다.
type
클래스를 선언하는 부분이다.
VCL폼을 만들면 기본적으로 TForm을 상속받는 폼 클래스가 선언되어있다.
클래스의 선언은 기본적으로 다음처럼 되어있다.
TCMIFALARMSENDMAIL = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
자바와 유사하게 프라이빗, 퍼블릭으로 접근지정자를 나누어 변수를 쓸 수 있다.
var
프로그램 내에서 사용할 변수와 객체를 선언하는 부분이다.
VCL폼을 만들면 기본적으로 type에서 선언된 클래스 객체가 선언되어있다.
로컬 변수를 이곳에서 선언해 사용할 수 있다.
implementation
선언부에 선언된 함수, 프로시져의 '구현부'이다.
실제 코딩은 사실상 이곳에서 한다고 보면 된다.
프로젝트는 다음처럼 되어있다.
exe 실행파일이 있고,
그 아래로 pas 파일과 pas파일에 연결된 dfm 파일이 있다.
pas파일의 실행에 대한 정보는 저 exe 파일 내부에 있다.
exe파일을 클릭 - Cntr + V
또는 exe파일에 마우스 우클릭 - View Source 를 클릭하면 다음과 같이 되어있다.
program SendAlarmIF_AlarmSendList;
uses
Forms,
CM_IF_AlarmSendMail in 'Unit\CM_IF_AlarmSendMail.pas' {CM_IF_AlarmSendMail};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TCMIFALARMSENDMAIL, CMIFALARMSENDMAIL);
Application.Run;
end.
program은 실행파일의 이름이다.
반드시 같아야한다.
uses 는 동일하다.
자세히보면 이 실행파일이 있는 경로를 기준으로
Unit 폴더의 CM_IF_AlarmSendMail.pas 파일을 가져와 사용하고 있음을 알 수 있다.
그 옆의 { } 이 중괄호가 바로 폼 파일이다.
그 아래의 {$R } 은 컴파일러 지시자이다.
구체적인 기능은 잘 모르겠지만
프로그램 이름과 똑같은 이름의 res 파일을 활용하는 코드라고 이해했다.
실제 폴더에도 다음처럼 res 파일이 있다.
그 아래로는 begin, end로 구분된 실제 프로그램 실행 코드가 있다.
모든 VCL 폼 프로그램은 다음과 같은 구조를 가지는 것 같다.
Application.CreateForm(TCMIFALARMSENDMAIL, CMIFALARMSENDMAIL);
이 코드로 폼을 만든다.
TCMIFALARMSENDMAIL 이건 아까 코드에 적었던 폼 클래스 명
CMIFALARMSENDMAIL 이건 해당 폼 클래스의 객체 명이다.
'인턴 > 델파이' 카테고리의 다른 글
[프로젝트] 자동 메일 송신 프로세스 만들기(2) : 알람 전송 리스트 테이블 만들기 (0) | 2021.02.18 |
---|---|
[프로젝트] 자동 메일 송신 프로세스 만들기(1) (0) | 2021.02.08 |
[델파이] 1. 델파이 프로젝트의 구성 (0) | 2021.01.08 |
[델파이 DB조작 예제] 3. Banded Table 사용해보기 (0) | 2020.08.28 |
[델파이 DB조작 예제] 2. DB 데이터 조작하기 (0) | 2020.08.28 |