새로운 글
새로운 덧글

안녕하세요...

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
813 윈도우와 맥 개발 시작을 위한 파이어몽키 코스북: 무료 다운로드 제공(385페이지) 관리자 2013.04.05 151922
812 델파이 튜토리얼 자습서 이용 안내 관리자 2014.09.01 70729
811 이 달의 기술자료 - 2014년 11월 험프리 2014.10.13 53861
810 CD-ROM 열고 닫기 박병일 2011.12.22 44529
809 이 달의 기술자료 - 2014년 12월 file 험프리 2014.11.26 32206
808 이 달의 기술자료 - 2014년 6월 file 험프리 2014.06.05 29535
807 RAD Studio XE6 Update1 발표 [1] Humphery 2014.06.20 29194
806 델파이 XE2에서 dbExpress를 이용해 오라클 연결하기 file 박병일 2012.02.15 17180
805 [Android] 폰번호 가져오기 [1] 타락천사 2014.09.05 16319
804 이 달의 기술자료 - 2014년 4월 file 험프리 2014.04.03 16249
803 SendMessage 함수를 이용한 메세지 전송 관리자 2012.01.05 15941
802 이 달의 기술자료 - 2015년 03월 험프리 2015.02.25 15581
801 XE5에서 ComPort(시리얼 통신) 컴포넌트 설치안내 [10] file 험프리 2013.12.04 15183
800 델파이 XE2 로 아이폰 하드웨어 컨트롤 하기 박병일 2012.01.19 15147
799 다중 클라이언트를 위한 DataSnap 서버 만들기 관리자 2011.12.22 14763
798 이 달의 기술자료 - 2015년 02월 file 험프리 2015.01.29 14762
797 델파이XE2의 VCL Styles 활용하기 박병일 2012.01.19 14199
796 파이어몽키 기반의 아이폰앱 개발에서 주소록 가져오기 박병일 2012.01.25 13708
795 파이어몽키 3D Text Editor file 박병일 2012.02.06 13678


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