開発ブログ - 最新エントリー
その日は、なんだか変な感じだったのです。
ノートンでファイルをスキャンしようとしても、うんともすんとも言わなかったので...
でもまぁいいか、と作業を続けていました。
帰りにゲストをサスペンドしてVMWareワークステーションを終了しようとすると、なんだかエラーが表示されました。
でもそのままVMWare が終了したし、疲れていたので気にせずに帰りました。
翌日VMWareを起動してみると、エラーが...
ロックフォルダを削除したり、サスペンドファイルも削除してみましたが、「内部エラー」になってしまいました。
いやぁ、焦りましたね。
その後 Windows を再起動するも、状況は変わらず。
ノートンでクイックスキャンをしようとしますが、やはり動きません。
なんだかデスクトップのアイコンが黒くなっています。
コマンドラインからクイックスキャンを起動したら動きました。
ついでにやけになって、適用せずに残っていた2個の Windows Update をして再起動
アイコンが戻っている。
VMWare を起動してみると...
わーーーー治ったぁ
原因はなんだったんだろう?
ノートンでファイルをスキャンしようとしても、うんともすんとも言わなかったので...
でもまぁいいか、と作業を続けていました。
帰りにゲストをサスペンドしてVMWareワークステーションを終了しようとすると、なんだかエラーが表示されました。
でもそのままVMWare が終了したし、疲れていたので気にせずに帰りました。
翌日VMWareを起動してみると、エラーが...
ロックフォルダを削除したり、サスペンドファイルも削除してみましたが、「内部エラー」になってしまいました。
いやぁ、焦りましたね。
その後 Windows を再起動するも、状況は変わらず。
ノートンでクイックスキャンをしようとしますが、やはり動きません。
なんだかデスクトップのアイコンが黒くなっています。
コマンドラインからクイックスキャンを起動したら動きました。
ついでにやけになって、適用せずに残っていた2個の Windows Update をして再起動
アイコンが戻っている。
VMWare を起動してみると...
わーーーー治ったぁ
原因はなんだったんだろう?
良くありますよね、%表示したい時って。
だから LiveBindings の CustomFormat に
って書いたのですが、「書式文字列 'Format(... は正しくないか引数の型と一致しません.」というエラーが出てしまいます。
だから LiveBindings の CustomFormat に
Format('%.0f', Self.Value*100) + "%"
って書いたのですが、「書式文字列 'Format(... は正しくないか引数の型と一致しません.」というエラーが出てしまいます。
Delphi から MacOS や iOS の文字列定数を使いたい時にどうすればいいのかわからなかったので、調べてみました。
こんな風にするみたい...
from iOSapi.CoreVideo
こんな風にするみたい...
interface
const
libCoreVideo = '/System/Library/Frameworks/CoreVideo.framework/CoreVideo';
function kCVPixelBufferPixelFormatTypeKey: CFStringRef;
implementation
function kCVPixelBufferPixelFormatTypeKey: CFStringRef;
begin
Result := CFStringRef(CocoaPointerConst(libCoreVideo, 'kCVPixelBufferPixelFormatTypeKey')^);
end;
from iOSapi.CoreVideo
教訓!
Win32API に文字列バッファを渡す時には AllocMem ではなく SetLength すること
久々に WMDropFiles を使ったプログラムを書いていました。
日本語名のファイルをドロップすると、なんだか変なことに...
Win32API に文字列バッファを渡す時には AllocMem ではなく SetLength すること
久々に WMDropFiles を使ったプログラムを書いていました。
日本語名のファイルをドロップすると、なんだか変なことに...
変数定義をするときに、下のようなコードを書いたらエラーが発生しました。
var
hWnd: HWND;
[dcc32 エラー] xxxx.pas(26): E2007 定数または型が必要です
HWND は定義されているのになんでだよ!
みたいに怒っていました。
しまいにはこのコンパイラ壊れている!!!なんて...
FireMonkey にも VCL にも TBitmap というクラスがあり、
それぞれ VCL.Graphics, FMX.Graphics に入っています。
同じ名前なので同じようなものと思ってしまうのですが、だいぶ違うんです。
↓にも同様の質問がありますが、正しい回答は得られていないようですね。
http://stackoverflow.com/questions/23712406/how-do-i-get-the-selectedvalue-of-a-combobox-from-code
いろいろ試行している限りでは、このようなアプローチでは値を取得できていません。
やっぱり LiveBindings で解決するべきなのでしょう。
でも Object をバインドすることもできるんでしょうか?
試してみなければ...
http://stackoverflow.com/questions/23712406/how-do-i-get-the-selectedvalue-of-a-combobox-from-code
いろいろ試行している限りでは、このようなアプローチでは値を取得できていません。
やっぱり LiveBindings で解決するべきなのでしょう。
でも Object をバインドすることもできるんでしょうか?
試してみなければ...
LiveBindings で ListBox に複数のフィールドをつないで表示したい時などがあります。
こんな時には ListBox の Item.Text に * を設定し、FillDisplayCustomFormat に 書式設定を以下のように行います
ToStr(Self.Field1.Value) + '~' + ToStr(Self.Field2.Value)
Item.Text に * をつなごうとしてもうまくできないかもしれません。(XE5ではできなかった)
そんな時はいったん適当なフィールドと Item.Text をつなぎ、
その LinkFillControlToField の FillDisplayFieldName を * に打ちかえます
ちなみに、次のようにもできるかも?
Item.Text に Field1 を設定し
Self.Owner.FieldByName('Field1').Value, Self.Owner.FieldByName('Field2').Value ?
Owner って何?
たとえば PrototypeBindSource に紐づけれらたTObjectBindSourceAdapter の場合は PrototypeBindSourceだった。
ふーん
Self.Options
ってやったら TListAdapterOptions 型といわれたので
Self は TListBindSourceAdapter だとみなされているみたい
Self.FindField('Field1').Value
って書いたらかけたので、やはりそうだと思います
LiveBinding でのカスタム書式設定式およびカスタム解析式の使用
こんな時には ListBox の Item.Text に * を設定し、FillDisplayCustomFormat に 書式設定を以下のように行います
ToStr(Self.Field1.Value) + '~' + ToStr(Self.Field2.Value)
Item.Text に * をつなごうとしてもうまくできないかもしれません。(XE5ではできなかった)
そんな時はいったん適当なフィールドと Item.Text をつなぎ、
その LinkFillControlToField の FillDisplayFieldName を * に打ちかえます
ちなみに、次のようにもできるかも?
Item.Text に Field1 を設定し
Self.Owner.FieldByName('Field1').Value, Self.Owner.FieldByName('Field2').Value ?
Owner って何?
たとえば PrototypeBindSource に紐づけれらたTObjectBindSourceAdapter の場合は PrototypeBindSourceだった。
ふーん
Self.Options
ってやったら TListAdapterOptions 型といわれたので
Self は TListBindSourceAdapter だとみなされているみたい
Self.FindField('Field1').Value
って書いたらかけたので、やはりそうだと思います
LiveBinding でのカスタム書式設定式およびカスタム解析式の使用
列挙型のプロパティのあるクラスを TCustomAdapterBindSource などでバインドソースにしたのですが、列挙型のプロパティは LiveBindingデザイナに出てきませんでした。
仕方がないので、Integer にキャストしたプロパティを作って、そこから値をマップしました。
もしかしたら * と Owner を使った技で回避できるかも?
と思ってやってみましたが、うまくいきませんでした。
そもそも FindField で見つけることができませんね。
Object ならアクセスできるのですが...
LiveBindings CustomFormat で * と Self を使う
仕方がないので、Integer にキャストしたプロパティを作って、そこから値をマップしました。
もしかしたら * と Owner を使った技で回避できるかも?
と思ってやってみましたが、うまくいきませんでした。
そもそも FindField で見つけることができませんね。
Object ならアクセスできるのですが...
LiveBindings CustomFormat で * と Self を使う
Delphi XE5
なぜか FireMonkey on Windows では poOwnerFormCenter が効かないんですよね?
必ず poScreenCenter になってしまうのです。
ネットで情報を検索してみたら、とりあえずこんなのが見つかりました。
http://stackoverflow.com/questions/8195106/firemonkey-and-showing-modal-dialog-center-of-the-owner-form
と書いてあります!!
それはないでしょう?と思ったのですが、poOwnerFormCenter が機能しないのは事実なので、これを使ってみました。
なぜか 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 が機能しないのは事実なので、これを使ってみました。