開発ブログ - FireMonkeyカテゴリのエントリ
TListBox に AddObject するときに
TListBoxItem を
ListBoxItem := TListBoxItem.Create(nil);
...
ListBox.AddObject(ListBoxItem);
のようにして作成すると
RemoveObject したときにメモリリークを起こしてしまった。
作成時に
ListBoxItem := TListBoxItem.Create(ListBox);
とすれば、メモリリークは発生しなかった
FMX.Controls.TControl.DesignVisible がなくなっているようで
エラーが...
ちょっと便利に使っていたりしたので、困ってしまいました...
結構色々変わりますねー
Windows = bmp, gif, jpg, hdp, ico, png, .tif
MacOS = bmp, icns, jpg, gif, png, tif, tga
iOS = jpg, png
Android = gif, jpg, png
iOS のことを考えると jpg, png の2択
写真系なら jpg 通常の画像なら png ということ
FMX.Graphics.TBitmapCodecManager
なぜか FireMonkey on Windows では poOwnerFormCenter が効かないんですよね?
必ず poScreenCenter になってしまうのです。
ネットで情報を検索してみたら、とりあえずこんなのが見つかりました。
http://stackoverflow.com/questions/8195106/firemonkey-and-showing-modal-dialog-center-of-the-owner-form
Position is not implemented in FireMonkey by ShowModal.
と書いてあります!!
それはないでしょう?と思ったのですが、poOwnerFormCenter が機能しないのは事実なので、これを使ってみました。
VCL ではアプリケーションのパスは Application.ExeName で取得していました。
FM では代わりに ParamStr(0) を使っていたのですが…
ソースコードをモバイルコンパイラに対応しようとして s[1] を s.Chars[0] という具合に書き換えていたときのことです。
下記のようなコンパイルエラーが発生しました。
これは何でしょう?
[dcc32 エラー] xxxxx.pas(56): E2018 レコード,オブジェクトまたはクラスのいずれかが必要です
過去のプログラムから、モバイルアプリケーションへポーティングをする際の文字列処理の問題。 文字列へのインデックスアクセスはどのように変えましょうか。
過去のプログラムから、モバイルアプリケーションへポーティングをする際に問題になることは色々ありますが、ありがちなのは文字列のインデックスの問題でしょうか。
Delphi モバイル コンパイラの場合、文字列は 0 から始まるインデックス方式を
採用しています。さらに、今後、文字列は不変(一定)になる見込みです。
以前 Delphi ML に FireMonkey + MacOSX で TWebBrowser を使いたいという投稿が流れていました。
stackoverflow にあるコードで WebView を使ってみたが、画面に表示されなかったということでした。
そのときに提示されたURLが↓
webview-not-displaying-in-macos-using-delphi-xe2(stackoverflow)
ようやく少し余裕ができたので、自分でも試してみることにしました。
OS X で URLをデフォルトブラウザで開く
アプリケーションを作るときに必ず作る About ダイアログ
About ダイアログに、ホームページのURL を記載することも多いですよね。
そして URL をクリックしたらホームページを開きたいものです。
Windows の場合は、URL を開くのに Shell API を使います。
uses
Winapi.Windows, Winapi.ShellApi;
procedure ShowURL(const URL: String);
begin
ShellExecute(0, 'open', PChar(URL), nil, nil, SW_SHOW);
end;
では OS X ではどのようにするのでしょうか?