새로운 글
새로운 덧글

안녕하세요...

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.

 

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

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

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

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 246
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 4154
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 822
공지 [프로그래밍 강의] 2018.10 ~ 2018.12 관리자 2015.01.22 6831
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 관리자 2015.06.30 11971
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2018년 09월 업데이트 됨) 험프리 2014.01.16 149070
109 [무료 제공툴] 파이어몽키 스텐실(FMX Stencils) [3] 관리자 2018.08.24 503
108 10.2.3 새로운 기능: 파이어몽키 UI 템플릿 - 프로필 화면 관리자 2018.04.24 330
» TFrame의 생성 및 해제를 편하게 해주는 TFrame 관리 클래스입니다.. file 푸른솔 2017.12.15 395
106 [개발자 Tip] 모바일 앱 개발 시 시간 낭비를 줄이는 Tip #1: 테스트하기 위해 기다리는 시간을 줄인다. 관리자 2016.12.26 480
105 [XE8] 모바일 튜토리얼 무료 다운로드(영문), 총 364페이지 관리자 2015.07.09 1172
104 [XE8] 스피드버튼의 이미지를 크게 표시할 수 있습니다. Humphery 2015.06.04 481
103 앱의 상태바(StatusBar) 제어하기(색상변경, 감추기, 투명하게) Humphery 2015.06.04 1400
102 파이어몽키에서 외부 라이브러리 연동하기(jar, so, a) [3] Humphery 2015.04.14 2047
101 [XE8] Android 단말기 연결안될때 SDK 확인 및 설치 Humphery 2015.04.11 1606
100 모바일 앱 라이프사이클 이벤트 처리하기 Humphery 2015.04.09 1046
99 모바일 앱 라이프 사이클 이벤트 처리하기(앱 완전 구동 후 실행하기) [1] Humphery 2015.04.09 656
98 [XE7] iOS 시뮬레이터 배포 시 'Please specify exact device preset UUID.' 오류 대응 Humphery 2015.02.26 1305
97 안드로이드 하드웨어 백버튼 제어하기 Humphery 2015.02.25 1459
96 파이어몽키 용 그리드 컴포넌트 안내 - FirePower Humphery 2015.02.23 1157
95 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 19547
94 안드로이드 각종 설정값 제어 예제. c2design 2014.08.14 1749
93 Find the O/S Language Type c2design 2014.07.30 1459
92 QR 코드를 만들고 스캔(읽는) 방법 Humphery 2014.07.24 4295
91 GPS좌표 이용 날씨정보앱 런칭. file c2design 2014.07.15 2292
90 모바일 Bluetooth 연동 자료 Humphery 2014.06.24 5912


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