안녕하세요...

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 15671
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 14094
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16624
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22209
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23510
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 19052
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39472
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174885
106 파이어 몽키 이퀼라이저 데모 동영상 박병일 2012.02.06 10065
105 Delphi XE5 and RAD Studio XE5 Android and iOS Code Samples Humphery 2013.12.14 9361
104 파이어몽키 써드파티 라이브러리 ApeSuite file 박병일 2012.02.06 9117
103 파이어몽키를 이용해서 아이폰앱을 개발할때 스타일 바꾸기 관리자 2012.04.19 8974
102 Firemonkey MAC OSX 에서 ComboBox 다운현상 [2] c2design 2012.03.28 8339
101 VCL 폼을 파이어몽키 폼으로 바꿀수 있는 컨버터 프로그램 file 박병일 2012.03.01 8329
100 [참고] MAC OSX 어플리케이션 프로젝트 경로 문제 [1] c2design 2012.03.23 8145
99 [참고] MAC OSX 에서 ExtractFileName 사용시 주의점. [1] c2design 2012.03.23 7725
98 파이어몽키와 VCL을 한 화면에서 함께 사용할 수 있는 방법을 설명한 동영상 [2] 관리자 2012.05.09 7573
97 앤더슨 올슨이 아이폰용 컴포넌트의 새버전을 오픈 했습니다. [3] file 관리자 2012.05.09 7394
96 [세미나자료] 20120508 "Mac과 윈도우를 동시에… 동일한 소스코드로 멋지게 개발" file 관리자 2012.05.10 7324
95 [개발보고] 델파이 안드로이드 앱 출시 기술정보 [7] file c2design 2013.11.08 7104
94 사다리게임 소스와 함께 오픈(iOS, 구글 마켓 등록완료) [2] file c2design 2014.05.27 7010
93 모바일 Bluetooth 연동 자료 Humphery 2014.06.24 7006
92 파이어몽키용 TMS 그리드의 간략한 소개 백서 관리자 2012.09.26 6868
91 3줄의 코드로 "움직이는 3D 컬러애벌레" 만들기 관리자 2012.07.12 6865
90 안드로이드 - 장비 부팅 시 앱을 자동시작(링크) Humphery 2014.01.15 6681
89 파이어몽키에서 미디어 플레이어 개발 관련 Humphery 2013.12.18 6605
88 [안드로이드] 네트워크 연결 상태 체크 함수. [1] c2design 2013.10.29 6493
87 David I의 31일 동영상(한글자막) - TLang컴포넌트로 다국어 파이어몽키 앱 만들기(델파이 동일 적용) [1] 관리자 2013.05.06 6434