새로운 글
새로운 덧글

안녕하세요...

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.

 

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

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

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

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [온라인세미나] What's NEW! RAD스튜디오 10.2.2 관리자 2018.01.04 40
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 1542
공지 이 달의 기술자료 & 기술레터 관리자 2017.02.06 447
공지 데브기어 강의 - 2018년 1월~2018년 4월 관리자 2015.01.22 5742
공지 RAD Studio(Delphi, C++Builder) 시작하기 관리자 2015.06.30 9398
공지 RAD 스튜디오로 개발된 모바일 앱 사례(17년 12월 13일 업데이트) 험프리 2014.01.16 146883
» TFrame의 생성 및 해제를 편하게 해주는 TFrame 관리 클래스입니다.. file 푸른솔 2017.12.15 132
106 [개발자 Tip] 모바일 앱 개발 시 시간 낭비를 줄이는 Tip #1: 테스트하기 위해 기다리는 시간을 줄인다. 관리자 2016.12.26 375
105 [XE8] 모바일 튜토리얼 무료 다운로드(영문), 총 364페이지 관리자 2015.07.09 1072
104 [XE8] 스피드버튼의 이미지를 크게 표시할 수 있습니다. Humphery 2015.06.04 445
103 앱의 상태바(StatusBar) 제어하기(색상변경, 감추기, 투명하게) Humphery 2015.06.04 1162
102 파이어몽키에서 외부 라이브러리 연동하기(jar, so, a) [2] Humphery 2015.04.14 1687
101 [XE8] Android 단말기 연결안될때 SDK 확인 및 설치 Humphery 2015.04.11 1540
100 모바일 앱 라이프사이클 이벤트 처리하기 Humphery 2015.04.09 903
99 모바일 앱 라이프 사이클 이벤트 처리하기(앱 완전 구동 후 실행하기) [1] Humphery 2015.04.09 632
98 [XE7] iOS 시뮬레이터 배포 시 'Please specify exact device preset UUID.' 오류 대응 Humphery 2015.02.26 1274
97 안드로이드 하드웨어 백버튼 제어하기 Humphery 2015.02.25 1351
96 파이어몽키 용 그리드 컴포넌트 안내 - FirePower Humphery 2015.02.23 1105
95 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 16319
94 안드로이드 각종 설정값 제어 예제. c2design 2014.08.14 1712
93 Find the O/S Language Type c2design 2014.07.30 1452
92 QR 코드를 만들고 스캔(읽는) 방법 Humphery 2014.07.24 4070
91 GPS좌표 이용 날씨정보앱 런칭. file c2design 2014.07.15 2151
90 모바일 Bluetooth 연동 자료 Humphery 2014.06.24 5753
89 모바일(안드로이드, iOS) 연락처에 접근하는 방법 Humphery 2014.06.20 3021
88 사다리게임 소스와 함께 오픈(iOS, 구글 마켓 등록완료) [2] file c2design 2014.05.27 5768


광고 모듈이 설치되어 있지 않아 실행을 중단합니다..