안녕하세요...

TFrame을 처음 사용하면 좀 난해한 부분이 있습니다..

어떻게 생성하고 또 어떻게 해제를 해야 하는지.....

이럴 경우에 아주 편리하게 사용할 수 있는 TFrame 관리 클래스를 공개합니다..

(공개라 하기에는 좀 뭐시기 하지만....)

 

현재 도쿄 10.2.2에서 잘 돌아감....

 

 

// 메인 폼...

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.

 

클래스는 파일로 첨부되어 있습니다....

사용자 상황에 맞게 수정하여 사용하셔도 되며,

무단 복제 및 배포를 적극 환영합니다....

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15443
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13962
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39259
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174713
269 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 107351
268 델파이 XE2에서 dbExpress를 이용해 오라클 연결하기 file 박병일 2012.02.15 17722
267 다중 클라이언트를 위한 DataSnap 서버 만들기 관리자 2011.12.22 16116
266 델파이XE2의 VCL Styles 활용하기 박병일 2012.01.19 15363
265 dbExpress 의 SQLConnection 에서 트랜젝션 처리하기 박병일 2012.02.08 13975
264 [델파이 문법 시리즈] #1. 제네릭 - 개요 file 관리자 2012.03.21 13166
263 델파이 XE2 DataSnap Client 만들기 [1] 관리자 2011.12.22 12896
262 [델파이 업그레이드 마이그레이션 무상 컨설팅] 체크리스트와 가이드(첨부 파일) [1] file 관리자 2012.02.08 12877
261 "모바일 앱" 개발 또는 유지관리, 데브기어와 해결하세요! file 관리자 2015.03.26 12732
260 [델파이 문법] 클래스와 객체 #8 file 관리자 2012.05.07 12579
259 델파이로 만든 구글 지오코딩 쎔플 입니다. 박병일 2012.02.06 11019
258 [델파이 문법] 클래스와 객체 #1 file 관리자 2012.04.12 10867
257 [오픈소소] 델파이용 TProcessInfo 클래스 file 관리자 2012.05.23 10446
256 VCL Style Util 박병일 2012.01.11 10287
255 [델파이 문법 시리즈] #2. 제네릭 - 용어 file 관리자 2012.03.22 10012
254 [델파이 문법] 클래스와 객체 #10 file 관리자 2012.05.22 9837
253 [델파이 문법] 클래스와 객체 #3 file 관리자 2012.04.18 9319
252 델파이 XE2 Update4의 새기능 - 더 쉬운 모바일 REST 접속 file 박병일 2012.03.06 9144
251 [델파이 문법] 프로그램과 유닛 #1 file 관리자 2012.09.03 9067