본문 바로가기

파이어몽키

Image URL로 TImage에 이미지 로드 웹에 있는 이미지를 표시해야 할 것 같아 간단하게 라이브러리 형태로 만들었어요.TBitmap을 class helper로 확장했습니다.소스가 몇 줄 되지 않으니 설명은 생략합니다. iOS(아이폰5), Android(Nexus 7), 윈도우(Windows 7)에서 모두 정상 동작 확인했습니다. 참고하세요^^ 사용법 procedure TForm3.Button1Click(Sender: TObject); var Size: Int64; begin Image1.Bitmap.LoadFromUrl('http://cfile2.uf.tistory.com/image/2353573E529FDAAC032731', Size); Memo1.Lines.Add('1 : ' + Format('W: %d, H: %d, S: %d', [Im.. 더보기
Delphi XE5 and RAD Studio XE5 Android and iOS Code Samples 안드로이와 iOS(아이폰)을 하나의 코드로 개발하는 RAD Studio XE5 모바일 샘플코드입니다. http://www.embarcadero.com/products/delphi/android-ios-code-samples-xe5 다양한 샘플코드 및 구현영상(1분 내외)을 보실 수 있어요^^ Device Sensors Accelerometer Gyroscope Location OrientationSensorDevice Services DeviceInfo MessageAlerts Notifications (Send/Cancel) Notifications (Set Badge Number) PhoneDialer ShareSheetTouch/Gestures InteractiveGestures TabSliding.. 더보기
StyleBook Resources Text Editor 패치 파이어몽키 스타일을 사용하면 매우 풍부하고 있어 보이게(?) 프로그램을 표현 할 수 있습니다.스타일 수정 시 약간의 편리한 기능의 패치가 있어 소개합니다. StyleBook Resources Text Editor내용 : Style designer로만 편집 가능했던 Resource를 Text Editor에서 수정 가능대상 : Delphi XE4 이상패치방법 : 1) 아래 링크에서 다운로드 - XE5: http://cc.embarcadero.com/Item/29623 - XE4: http://cc.embarcadero.com/item/29428 2) 다운받은 *.bpl파일을 특정 위치(라이브러리 등)로 이동 3) Components > Install Package > Add > 위의 *.bpl 선택 아래와 .. 더보기
[FMX] 다이나믹한 UI 효과 - Float animation effect 대부분의 분들은 파이어몽키로 멀티플랫폼 지원을 위한 개발을 생각하고 계실텐데요.파이어몽키는 멀티플랫폼 기능외에도 다양한 기능이 포함되어 있습니다. 대표적으로 3D 효과 및 벡터형식의 부드러운 출력, RoateAngle 및 Scale 등의 신규 속성 등이 추가되었습니다. 오늘은 새로운 기능 중 하나인 FloatAnimation에 대해 소개하려 합니다. FloatAnimation은 단어 그대로 Float을 Animation하는 놈입니다. 좀 더 자세히 설명하면, 지정한 Start와 Stop에 해당하는 Float 값사이를 지정된 시간(Duration)에 맞춰 다양한 효과(Interpolation: 보간)로 값을 변경하는 놈입니다. 우선 샘플을 보시면 아래의 영상은 마우스 휠(업/다운) 시 마우스 주변에 효과를.. 더보기
메인폼을 얼리지 않고(Idle 상태) 대기하기.(TStopWatch 활용) 볼랜드포럼에 Firemonkey 포럼이 생겨서 기분이 좋습니다. 룰루랄라 합니다.http://firemonkey.borlandforum.com 그래서 좋은 강좌를 남기고 싶은데 별로 아는게 없어서 쿨럭... 그래서 팁이라도 남깁니다. 이번에도 Unittest하며 필요해서 만들어 본것입니다. OpenDialog를 열고 파일경로를 입력해서 파일을 선택하는 Test 작성 중 OpenDialog.execute하면 바로 열리지가 않죠? 그래서 열릴때까지 대기를 해야 합니다. Sleep을 주었지요. 하지만 Sleep이 제어권을 놓지 않아 Sleep이 끝나고 창이 열립니다. 그래서 좀 쉬며 기다리게 하려고 봤더니 Firemonkey에서는 GetTickCount 등을 WinAPI를 사용하면 안되지요. 그래서 찾은 놈이.. 더보기
[FM2] XE3.FM2에서 Control을 Bitmap으로 내보내기 및 Bitmap.Pixels 사용하기 Firemonkey2로 버전업 된 후로 참 많은 것이 변했습니다. TControl은 말할 것도 없고 TBitmap도 많은 내용이 변했네요. Unit test에서 특정 Pixel의 색상을 얻어오고자 할때 기존 Bitmap.Pixels이 없어진 것을 확인 후 깜짝 놀랐습니다. 자... 그럼 제가 삽질로 얻어온 내용을 공유하도록 합니다. | Control을 Bitmap(TImage)으로 내보내기 var Bitmap: TBitmap; Map: TBitmapData; begin Bitmap := TBitmap.Create(Round(Panel1.Width), Round(Panel1.Height)); try Bitmap.Canvas.BeginScene; // Bitmap으로 내보내기 Bitmap.Assign(Pan.. 더보기
[FMX] Firemonkey 구조 - 어떻게 하나의 코드로 여러 플랫폼에서 실행 될까? 이번에는 이리저리 파이어몽키 소스 보며 익혔던 간단한 구조에 대해 설명하려 합니다.(딱, 제가 아는 만큼만 소개합니다.^^) 파이어몽키는 멀티 플랫폼을 지원하는 델파이 프레임웤 입니다.어떻게 파이어몽키는 하나의 소스로 여러개의 플랫폼을 지원할까요?여러개의 플랫폼을 지원하는 열쇠는 FMX.Platform.pas의 Platform: TPlatform에 있습니다. (C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\source\fmx에 소스파일이 있습니다.) FMX.Platform의 TPlatform 클래스를 보시면 대부분(거의 다)이 추상메소드(virtual; abstract;) 입니다. 구현이 안되어 있다는 것이죠.그리고 메소드명이 상당히 플랫폼에 종속적인 냄새를 풍.. 더보기
[FMX,VCL 비교] #1 VCL의 Canvas와 FMX의 Canvas 차이 파이어몽키로 작업하다보면 VCL과의 차이점으로 어려움을 겪는 경우가 많습니다. 그동안 작업하며 습득한 차이점을 한가지한가지 풀어놓으려 합니다.그중 첫번째 Canvas 입니다.일반적으로 TImage에 Drawing을 하는 예제로 구성하였습니다. VCL과 FMX의 동일한 기능을 구현했으니 비교해 보시면 좋을 것 같습니다.FMX 코딩시 주의점1, TImage.Picture.Bitmap => TImage.Bitmap : VCL의 Picture 객체가 빠졌습니다.2, Bitmap.Canvas.BeginScene ~ EndScene, Bitmap.BitmapChange : Canvas에 그리기고 화면에 표시하기 위한 절차입니다.3, Brush => Fill, Pen => Stroke 등으로 속성들이 약간씩 변했습니.. 더보기
[FMX] 컨트롤(TPanel)등에 Form 넣기. Delphi XE2의 FireMonkey에서는 TForm이 TControl을 상속 받지 않아 TPanel등에 Embed 할 수 없습니다. 위 방식으로 구현된 많은 샘플코드들을 Firemonkey에서 사용하지 못해 당황하다. 아래와 같은 방법으로 해결(?: 꼼수)하여 공유합니다.. // AForm을 AParent에 Embed procedure EmbedForm(AParent: TControl; AForm: TCustomForm); begin while AForm.ChildrenCount > 0 do AForm.Children[0].Parent := AParent; end; 정상적으로 말하면 Embed는 아니고 Form에 있는 컨트롤들을 Panel로 부모를 옮겨 버리는 방식입니다. 사용방법은 EmbedFor.. 더보기
[FMX] Firemonkey에서 ODS 사용하기 Firemonkey는 아무래도 Cross platform이다 보니 윈도우 API를 사용하는 OutputDebugString 등을 사용할 수 없습니다. 근데, 너무 불편해요 ODS가 없으면 그래서 찾아보니 Window API를 사용할 수 있네요... 그것도 간단하게 uses에 Winapi.Windows를 추가하면 됩니다. 그리고 아래와 같이 예외(IFDEF)하시고 사용하시면 혹시 다른 플랫폼에서 문제가 생길 염려는 없겠죠^^ {$IFDEF MSWINDOWS} OutputDebugString(PChar(Format('우왕 ODS가 된다.', []))); {$ENDIF} 끝~ 더보기