開発ブログ - 技術メモカテゴリのエントリ
クラスからバインドして表示する
TAdapterBindSource と TDataGeneratorAdapter
(1) まずは二つを配置
(2) AdapterBindSource の Adapter プロパティに DataGeneratorAdapter をセット
(3) AdapterBindSource の OnCreateAdapter イベントで
TObjectBindSourceAdapter
または
TListBindSourceAdapter
を生成する
または
クラスにバインドできるってうれしい
http://docwiki.embarcadero.com/RADStudio/XE3/ja/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%EF%BC%9ATAdapterBindSource_%E3%81%A8%EF%BC%BBLiveBinding_%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8A%EF%BC%BD%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B
TAdapterBindSource と TDataGeneratorAdapter
(1) まずは二つを配置
(2) AdapterBindSource の Adapter プロパティに DataGeneratorAdapter をセット
(3) AdapterBindSource の OnCreateAdapter イベントで
TObjectBindSourceAdapter
または
TListBindSourceAdapter
を生成する
procedure TMain.AdapterBindSource1CreateAdapter(Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter);
var
LEmployee: TEmployee;
begin
LEmployee := TEmployee.Create('John', 'Anders', 26, StrToDate('10/10/2011'), 'Developer', 'Adrian Hermann');
ABindSourceAdapter := TObjectBindSourceAdapter<TEmployee>.Create(Self, LEmployee);
end;
または
procedure TMain.AdapterBindSource1CreateAdapter(Sender: TObject; var ABindSourceAdapter: TBindSourceAdapter);
var
LList: TObjectList<TEmployee>;
begin
LList := TObjectList<TEmployee>.Create;
LList.Add(TEmployee.Create('John', 'Anders', 26, StrToDate('10/10/2011'), 'Developer', 'Adrian Hermann'));
ABindSourceAdapter := TListBindSourceAdapter<TEmployee>.Create(Self, LList, True);
end;
クラスにバインドできるってうれしい
http://docwiki.embarcadero.com/RADStudio/XE3/ja/%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%EF%BC%9ATAdapterBindSource_%E3%81%A8%EF%BC%BBLiveBinding_%E3%83%87%E3%82%B6%E3%82%A4%E3%83%8A%EF%BC%BD%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B
Delphi XE5 で OS X の接続プロファイルを作成しようとして、接続テストをしたところ
と表示されてしまいました。
何が起こっているのかよく分からずいろいろと調べてみました。
ホスト名などが正しくないときには正常に通常のエラーが表示されるので、どうも接続が成功した後にこれが表示されているようです。
と、ここで気が付きました。
Mac 側で起動していた PAServer が XE6 のものだったのです!
XE5 の PAServer を起動して接続プロファイルを作成し直したところ、正常に接続することができました。
気を付けなければ...
TDBXTypes.INT32 値型は TDBXTypes.WideString値型としてアクセスできません
と表示されてしまいました。
何が起こっているのかよく分からずいろいろと調べてみました。
ホスト名などが正しくないときには正常に通常のエラーが表示されるので、どうも接続が成功した後にこれが表示されているようです。
と、ここで気が付きました。
Mac 側で起動していた PAServer が XE6 のものだったのです!
XE5 の PAServer を起動して接続プロファイルを作成し直したところ、正常に接続することができました。
気を付けなければ...
XE5 で作った FireDAC を使ったプロジェクトを XE6 でコンパイルしようとしたところ、いくつかエラーになってしまったので、メモ
■TFDWideMemoField
FireDac を使ったデータモジュールで、TFDWideMemoField がないと言われてしまいました。
http://www.da-soft.com/anydac/embarcadero-firedac-xe6-released.html
どうやら TFDWideMemoField は TWideMemoField に変わったようです。
置き換えたいが、データモジュールを読み込むとエラーになって、対象の部分が消されてしまうのです。
仕方がないので、テキストエディタで DataModule の .dfm を直接開き、TFDWideMemoField をすべて TWideMemoField に置換しました。
同様に .pas も
これで一応OK
■TPolygon
TPolygon もない!
uses に System.Math.Vectors を追加したらOK
■TFDWideMemoField
FireDac を使ったデータモジュールで、TFDWideMemoField がないと言われてしまいました。
http://www.da-soft.com/anydac/embarcadero-firedac-xe6-released.html
どうやら TFDWideMemoField は TWideMemoField に変わったようです。
置き換えたいが、データモジュールを読み込むとエラーになって、対象の部分が消されてしまうのです。
仕方がないので、テキストエディタで DataModule の .dfm を直接開き、TFDWideMemoField をすべて TWideMemoField に置換しました。
同様に .pas も
これで一応OK
■TPolygon
TPolygon もない!
uses に System.Math.Vectors を追加したらOK
XE6 のバージョン番号は 13 ではなく 14 なんですね...
という状態からインストールを開始したのですが
「ディスクの空き領域が不足しています」
35,675MB用意しろと...
相変わらず謎なインストーラーです
結局
「ディスク領域が足りません」
必要な領域 16MB
利用可能な領域 10MB
と言われ...
どうすればいいんだ?!
仕方がないので一時ファイルの展開をするドライブを追加して、環境変数TEMP,TMPにそのドライブを指定してみましたが、やはり領域は足りない...orz
セットアップに使用する言語でjapaneseを選んでいるのに French と German の zip も展開されているのね...
これらは必要ないかと思って消してみたら、インストール時にエラーになってしまった(涙)やり直し...
結局システムドライブの領域を空けられなかったので、圧縮して対応。(あーあ)
再インストールして完了しました。
毎度インストールでは苦労します。
[関連記事]
Delphi XE5 update2 のインストールについて
必要な領域 18,282MB
使用可能なディスク領域 28,556MB
残りのディスク領域 10,273MB
という状態からインストールを開始したのですが
「ディスクの空き領域が不足しています」
35,675MB用意しろと...
相変わらず謎なインストーラーです
結局
「ディスク領域が足りません」
必要な領域 16MB
利用可能な領域 10MB
と言われ...
どうすればいいんだ?!
仕方がないので一時ファイルの展開をするドライブを追加して、環境変数TEMP,TMPにそのドライブを指定してみましたが、やはり領域は足りない...orz
セットアップに使用する言語でjapaneseを選んでいるのに French と German の zip も展開されているのね...
これらは必要ないかと思って消してみたら、インストール時にエラーになってしまった(涙)やり直し...
結局システムドライブの領域を空けられなかったので、圧縮して対応。(あーあ)
再インストールして完了しました。
毎度インストールでは苦労します。
[関連記事]
Delphi XE5 update2 のインストールについて
VCL ではアプリケーションのパスは Application.ExeName で取得していました。
FM では代わりに ParamStr(0) を使っていたのですが…
[dcc32 警告] xxxx.pas(n): W1000 シンボル 'FileAge' を使用することは推奨されていません
FileAge の代わりに何を使えば良いのでしょうか?
よく忘れるので自分のために書いておきます。
TImage.Picture.LoadFromFile で PNG 画像を読み込みたいときには
Vcl.Imaging.PngImage
を uses します。
ソースコードをモバイルコンパイラに対応しようとして s[1] を s.Chars[0] という具合に書き換えていたときのことです。
下記のようなコンパイルエラーが発生しました。
これは何でしょう?
[dcc32 エラー] xxxxx.pas(56): E2018 レコード,オブジェクトまたはクラスのいずれかが必要です
過去のプログラムから、モバイルアプリケーションへポーティングをする際の文字列処理の問題。 文字列へのインデックスアクセスはどのように変えましょうか。
過去のプログラムから、モバイルアプリケーションへポーティングをする際に問題になることは色々ありますが、ありがちなのは文字列のインデックスの問題でしょうか。
Delphi モバイル コンパイラの場合、文字列は 0 から始まるインデックス方式を
採用しています。さらに、今後、文字列は不変(一定)になる見込みです。