Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[360] 스킨을 이용하여 폼의 모양 바꾸기 - 2
첫눈 [hadugo] 2324 읽음    2017-01-04 12:58
스킨을 이용하여 폼의 모양을 바꾸는 방법은
폼 자체를 이진파일로 저장했다가 그것을 불러들이는 방법이
제가 알고 있는 방법 중 가장 안정적인 방법입니다.

하지만 지난 글에서 이야기 했던 것 처럼 그 방법을 이용하기 위해서는
기본 폼으로 불러들였던 폼의 객체와 새로 불러들이려 하는 폼의 객체들의 순서가 일치해야 하는 문제가 있었습니다.

그것을 해결하기 위한 방법을 찾아봤습니다.

이것을 구현하기 위해서는 여러 함수들을 미리 만들어 놓어야 할 것 같습니다.

먼저 폼을 디자인한 후에 생성되는 DFM파일을 Bin파일로 변환하는 함수가 필요하겠네요.
procedure DFMToBin(DFMFile: String; BinFile: String);
var
  FileStream : TFileStream;
  MemStream : TMemoryStream;
Begin
  FileStream := TFileStream.Create(DFMFile, fmOpenRead);
  MemStream := TMemoryStream.Create;
  ObjectTextToBinary(FileStream, MemStream);
  MemStream.SaveToFile(BinFile);
  FreeAndNil(MemStream);
  FreeAndNil(FileStream);
End;


이건 아주 간단하네요.
그냥 DFM파일을 파일스트림에 읽어들인 다음
그것을 이진코드로 변환하여 메모리스트림에 저장하고
메모리스트림을 Bin파일로 저장하면 됩니다.

사용방법은 아주 간단합니다.

  DFMToBin('C:\Sample\Skin\Skin.DFM', 'C:\Sample\Skin\Skin.Bin');

이렇게 하면 그만입니다.

다음 시간에는 Bin파일을 불러들여 폼을 생성하고
생성된 폼을 보여주는 함수를 만들어 보겠습니다.

+ -

관련 글 리스트
360 스킨을 이용하여 폼의 모양 바꾸기 - 2 첫눈 2324 2017/01/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.