출처: http://tech.devgear.co.kr/index.php?mid=delphi_news&page=2&document_srl=438463
// 메인 폼...
unit Unit3;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.VirtualKeyboard, FMX.Platform,
uFrameList;
type
TForm3 = class(TForm)
btnFrameTest: TButton;
btnClose: TButton;
Button1: TButton;
procedure btnFrameTestClick(Sender: TObject);
procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
procedure btnCloseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
public
FrameList: TFrameList; // 프레임 관리 변수를 전역으로...
end;
var
Form3: TForm3;
implementation
uses Unit4;
{$R *.fmx}
procedure TForm3.btnFrameTestClick(Sender: TObject);
var
fr: TFrame1;
begin
// 버튼을 누르면 프레임을 생성해서 관리 클래스에 추가한다....
fr := TFrame1.Create(Self);
FrameList := TFrameList.GetObject;
FrameList.Add(Self, fr);
end;
procedure TForm3.btnCloseClick(Sender: TObject);
begin
Close;
end;
procedure TForm3.FormCreate(Sender: TObject);
begin
// 메인 폼 처음 생성 시 프레임 관리 변수에 클래스를 생성하여 저장한다...
FrameList := TFrameList.GetObject; // 중복 생성을 방지하기 위해 싱글톤으로.....
end;
procedure TForm3.FormDestroy(Sender: TObject);
begin
// 메인 폼 종료 시 클래스도 해제한다...
FrameList.Free;
end;
procedure TForm3.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
var
Keyboard: IFMXVirtualKeyboardService;
begin
if Key = vkHardwareBack then
begin
Key := 0;
// 백버튼을 눌렀을 때 프레임이 생성되 있으면 해제한다....
if FrameList.Count > 0 then
begin
FrameList.DeleteCurrentFrame; // 가장 마지막에 생성된 프레임(현재 프레임) 삭제....
// FrameList.Clear; // 모든 프레임 일괄 삭제....
Exit;
end;
Close;
end;
end;
end.
// 프레임 유닛....
unit Unit4;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.Edit;
type
TFrame1 = class(TFrame)
Edit1: TEdit;
btnFrameFree: TButton;
procedure btnFrameFreeClick(Sender: TObject);
private
public
end;
implementation
uses Unit3;
{$R *.fmx}
procedure TFrame1.btnFrameFreeClick(Sender: TObject);
begin
// 프레임 위의 '닫기' 버튼을 눌렀을 때 현재 프레임을 삭제한다...
Form3.FrameList.DeleteCurrentFrame;
end;
end.
클래스는 파일로 첨부되어 있습니다.... 사용자 상황에 맞게 수정하여 사용하셔도 되며,
무단 복제 및 배포를 적극 환영합니다....
'언어 > delphi' 카테고리의 다른 글
초를 0시간 0분 0초식으로 리턴 (0) | 2018.05.15 |
---|---|
익명함수+쓰레드를 활용한 간단한 쓰레드 사용 방법 (0) | 2018.05.15 |
복수의 유닛 참조와 간접 유닛 참조 #4 (0) | 2018.04.27 |
유닛 참조와 uses 절 #3 (0) | 2018.04.27 |
유닛의 구조와 문법 (0) | 2018.04.27 |