2020-01-01から1年間の記事一覧
VCLでフォームを表示させ終了時にフラグで処理を変更したいときにフォームのModalResultを参照するケースがある。 ただし、ModalResultの設定については注意しなければいけない点があるのでメモ。 また、フォームの閉じ方についてもメモ。 ShowModalで表示さ…
TImageViewerなどでZoomジェスチャーの処理について探せる範囲で情報が無いのでメモ。処理は幾つかの状態保存変数とOnGestureイベントの記述で済む。 まず、TImageViewerのTouchプロパティのInteractiveGesuturesを開いてZoomをTrueにする。 OnGestureコード…
この情報についてはC++ Builder 10.4.1(Sydney)で確認した情報なので、将来変わる可能性がある。 と言うか、昔と変わった部分についてEmbarcaderoがドキュメントの更新をしていないための備忘だ。まず、ジェスチャーのIDの定義だが、現時点でSystem.UITypes.…
Firemonkeyを用いてAndoroidアプリを開発し、アプリにカメラ機能を追加するには2つの方法がある。 TCameraComponentを使って、アプリ内で撮影できるようにする。 TTakePhotoFromCameraアクションかIFMXCameraServiceを用いて、他のカメラアプリで撮影する。 …
TScrollBox,TVertScrollBox,THorzScrollBoxといったTCustomScrollBoxの派生クラスをレイアウトベースとして使う場合、スクロールの位置を知りたい場合がある。 名称にScrollが付いていないのでわかりにくい(ヘルプもわかりにくい)がViewportPositionプロパテ…
VCLフレームワークであれば、以下のコードでタブで移動する先のコントロールを得ることができる。 TWinControl* pNext = FindNextControl( Edit1, true, true, false ); しかしFiremonkeyフレームワークにはFindNextControlに相当する機能はない。 いろいろ…
FiremonkeyでAndroidアプリケーションのテキストの入力を行うときに、仮想キーボードが出現して入力するコントロールを覆い隠す場合は、フォーム全体を上方向にずらしてコントロールを表示させたい。 Firemonkey以外で開発しているのであれば詳細は割愛する…
FiremonkeyでAndroidアプリを開発するときに、アプリで使用するファイルを配置する方法についてメモ。 IDEのメニューで「プロジェクト」→「配置」をクリックして配置画面を表示させる(の配置ではない)。 上のバーの用紙に+がついたアイコンがファイルの追加…
FiremonkeyでもTZipFileを使って、ZIPファイルの操作ができる。 マルチプラットフォームなので、Windows以外のプラットフォームでも利用できるのだが、日時の操作に関して注意が必要だ。Zipファイル中のファイルの日時は、TZipHeader構造体のModifiedDateTim…
先日powのint版を作成して、通常のpowを用いた場合と比較した。 今回はint版と同じアルゴリズムを用いたdouble版powと通常のpowを比較してみる。 ただし乗数は整数に限るとする。 double pow( double x, int exp ); かけ算のルーチンは以下の通り double pow…
C言語、あるいはC++言語において累乗を計算する場合powを使う。幾つか亜種があるが標準で用意されているのは実数版のみだ。 最も一般的なpowの定義は以下の通り double pow( double x, double expr ); 整数版は用意されていないので、累乗が欲しいときには実…
このところVCLで作成した共用コードをFiremonkey(FMX)でも用いることができるように手直しをするようになった。 WindowsオンリーであればVCLを使う方が楽だ。一方3DやAndroidではFiremonkeyを使う。 ランタイムだけを使うコードであれば問題は大きくないが、…
C++ Builderでプラットフォーム毎に条件コンパイルをする場合のマクロは、いつも探すのが大変なのでメモ。ドキュメントではメインヘルプ(Web版であればトピック)で"定義済みマクロ"を検索すれば見つかる。 一部を掲載。 マクロ 説明 __ANDROID__ Android環境…
C++ Builderで静的ライブラリをリンクするには幾つかの方法がある。 手軽な方法として自分はいつも#pragma linkを使っていた。 1.#pragmaでリンクする方法 VCLでaaa.libをリンクしようと思ったときには、次のように記述する。 #pragma link "aaa.lib" ところ…
どのバージョンから変わったかもう覚えていないが、C++ BuilderでVCLベース(Delphiクラスオブジェクト)のポインターを扱う場合、場合によっては通常のC++のポインターではだめな場合がでるようになった。 例えばTXMLDocumentでノードの取り扱いがそうで、TXM…
DelphiあるいはC++ BuilderでVCLのフォームを含むDLLを作る際に必要なこととして、最初にメインフォームのハンドルを渡す必要がある。 プログラム本体側のApplicationと、DLL側のApplicationは別のインスタンスで、同期しない。 このため、DLLで何も考えず以…