問題タブ [delphi-xe2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Firemonkey と Delphi XE2 を使用した DB ルックアップ フィールド
Firemonkey で TCombobox をルックアップ フィールドにバインドする方法が見つかりません。VCL には、TDatasource コンポーネントとルックアップ フィールド名だけが必要な TDBLookupComboBox があり、コンボボックス リストに入力されます。このようにして、実行時に FK フィールドを簡単に編集できます。
Firemonkey には Livebindings しかありません。同じ動作を設定する方法がわかりません。これまでに行った最善の方法は、コンボボックス リストに TBindList を入力し、ルックアップ フィールドに接続された TBindDBListLink を使用することです。このように動作しているように見えますが、コンボボックスでは選択したアイテムを変更できません。
これは、データベース アプリケーションが持つべき最も基本的なものの 1 つですが、なぜ誰もそれについて話していないのか、私にはわかりません。
delphi - Firemonkeyと大量のデータ
Firemonkeyのグリッド実装を調べたところ、非常に単純な実装であることがわかりました(グリッド実装にはあまりないように見える1800行のみ)。カスタムペイントはほとんど行いませんが、代わりに他の多くのコントロールを集約します。これは、Firemonkeyスタイルの操作のようです。
たとえば、各列には、セルごとに1つずつ、コントロールの配列が保持されます。1,000,000行の通常のテキスト列の場合、グリッドは1,000,000の編集コントロールをメモリに保持します。これは私には少しおかしなことに思えます。(編集:その仮定が正しいかどうかは今のところよくわかりません。セルの可視性が考慮されているようです。つまり、仮想モードのようなものを提供している可能性がありますが、よくわかりません...)
私の質問:間違いなく、Firemonkeyのこのコンポーネント集約設計はシンプルでエレガントに見えますが、グリッドに表示する必要のあるデータの量に応じて実際に適切に拡張できますか?多数の行でうまく機能することは想像できません。大量のデータを処理するFiremonkeyの方法は何ですか?
ご入力いただきありがとうございます。
delphi - コントロールとオブジェクトの間に双方向の LiveBinding が必要です
Delphi XE2 LiveBinding では、任意のタイプの VCL コントロールを任意の(非コンポーネント)オブジェクトの任意のタイプのプロパティにバインドする必要があります。私はこれを一方向に行うことができます。しかし、双方向で行う必要があります。
TPerson.PersonName: 文字列を TEdit.Text にバインドするとします。
私が今持っているものはシンプルです。
- 新しい VCL アプリケーションを作成し、TBindScope、TBindingsList、TEdit を追加します。
- person1 という名前の TPerson のインスタンスを作成します。
- BindingList を使用して、TBindExpression プロパティを追加します。
- BindExpression を使用
- ControlComponent を Edit1 に設定します
- ControlExpression を「テキスト」に設定します
- SourceComponent を BindScope1 に設定します
- SourceExpression を PersonName に設定します
- ボタンを追加します。追加する Click イベントに: BindScope1.DataObject := person1;
- ボタンを追加します。追加する Click イベントに追加します (必要なのは 1 つだけですが、動作するまで両方を試します)。
- TBindings.Notify(送信者, '');
- BindingsList1.Notify(送信者, '');
最初のボタンは最初の方向にバインドします。2 番目のボタンは、値を person1.PersonName プロパティに書き戻すことはないようです。
通知コード、バインディングの方向、バインディングの種類、式、SourceMember などを試してみました。bindexpression の構成で実行時エラーが発生することがありますが、それ以外の場合はバインディングが単方向です。
2 番目のボタンをクリックすると、Edit1.Text の内容が person1.PersonName に書き込まれることを期待しています。
これ全部コードでやるなら検討しますし、そういう例は大歓迎ですが、できればデザイナでやりたいです。
2 つのコントロール間のバインディングには関心がないことに注意してください。
私はすでに LiveBinding サンプル プロジェクトをダウンロードして調査しましたが、これを行うものは見つかりませんでした。これが間違っている場合は、具体的に指摘してください。DocWiki も読みました。DB LiveBinding コントロールを使用する場合を除いて、双方向バインディングは対象外です。DB LiveBinding コントロールも DataSet も使用していません。したがって、なぜそれらを使用する必要があるかを説明していただけない限り、それらのコントロールに関する情報は必要ありません。
delphi - Delphi XE2 と Char/Byte 型
私はこの問題を抱えています、この例のコードを見てください:
ここで、src は文字列型で、iindex は整数型であり、出力として次のようなものが必要です。
そして、delphi xe までのすべての最後のバージョンの delphi でも同様でした。今デルファイxe2で、私はこの出力を持っています:
今、私は尋ねます、異なるタイプの文字列を使用する必要がありますか? もちろん、バイト(src [iindex])をバイト(src [succ(iindex)])に更新して解決するための回避策を見つけましたが、iIndex = 255の場合、例外を発生させるバイト(src [256])がありますしたがって、バイト単位で変更する必要があります。もちろん、それが最善の解決策だとは思わないので、もっと良い解決策があればお願いします。どうもありがとう。
delphi - Firemonkey ScrollBox のバグ
Firemonkey の ScrollBox コンポーネントで奇妙なバグと思われる現象が発生しています (それからのTGrid
継承TScrollBox
はすべてのグリッドにも影響するため)。一部の開発マシンではすべて正常に動作しますが、他のマシンではバグが発生します。システム間のパターンを検出できませんでした (OS、グラフィックス ハードウェア、DirectX のバージョンを確認しました)。
再生:
- 新しい FireMonkey アプリケーションを作成します。をフォームに配置し
TScrollBox
ます。 - scrollBox にボタンを追加し、垂直位置を 500000 に設定します。
- アプリケーションを起動し、スクロールボックスの端までスクロールしたときにボタンが表示されるかどうかを確認します。
バグが発生した場合、ボタンは表示されません。
グリッドを使用すると、1 ~ 19047 行が正しく表示され、19047 以降のすべての行が表示されなくなります。
何がこれを引き起こしているのか誰にも分かりますか? または、問題をより詳細に特定する方法はありますか?
delphi - DelphiXE2にTMSComponentPack 6.0をインストールするにはどうすればよいですか?
DelphiXE2に正常にインストールするには、何を変更する必要がありますか
xml - Delphi クロスプラットフォーム アプリケーションの XML ファイル用のライブラリはどれですか?
私は、Windows でも OSX でも実行する必要がある FireMonkey アプリケーションを作成しています。これまで Windows アプリに MSXML を使用してきましたが、もちろんこのライブラリは OSX と互換性がありません。問題は、Delphi XE2 に OSX と互換性のある XML ライブラリが含まれているか、または OSX と互換性のあるサードパーティの XML ライブラリがあるかということです。
delphi - FiremonkeyとTDownloadUrl
いくつかのWebページをチェックするためのオブジェクトTDownloadUrl(VCL.ExtActns)を含む(Delphi XE2)VCLアプリがあるので、FireMonkeyに同等のオブジェクトがあるかどうか疑問に思います。なぜなら、この新しいプラットフォームの豊富な機能を利用したいからです。
スレッドを使用したFiremonkeyアプリのデモをいただければ幸いです。前もって感謝します。
delphi - TDownloadUrl (Delphi) でセッション/Cookie を使用して Web ページをダウンロードする
TDownloadUrl を使用して Web ページを保存するためのサンプルをいくつかテストしてきましたが、これは本当に素晴らしかったのですが、特定の Web ページでいくつかの問題が見つかりました。これらのページは、セッションを開始して前に Cookie を設定する必要があるため、実際のコンテンツにアクセスできません。TDownloadUrl が行う2 つの状況があります。
- おそらくダウンロードされたWebページからのコンテンツを含むファイルを作成/保存しないでください(ステータスコード:5 --> dsEndDownloadData)。これは、Cookieがないためです(ステータスコード:41 --> dsCookieStateDowngrade)
- 希望するコンテンツにアクセスするためのリンクを押すことを要求する Web ページを保存する代わりに、コンテンツを正しく保存しない
Delphi のネイティブ コンポーネントを使用してこれらの問題を回避する方法はありますか。つまり、サードパーティ コンポーネント(TEmbeddedWB など)を使用しないでください。
前もって感謝します。
注: Firefox 6.0 および IE 9.0 を搭載した WinXP で Delphi XE2 を使用しています。
delphi - OSXで期待どおりに機能するメニュー項目セパレーターを追加するには?
Windowsプラットフォームでは、VCLを使用して、メニューにセパレーターを追加する場合、 を;TMenuItem
とともに追加します。Caption := '-'
FireMonkeyでは、aTMenuItem
とText := '-'
;を追加します。
Windows プラットフォームでは期待どおりに動作し、Text='-' の項目はセパレーターとして表示されます。
しかし、同じアプリケーションをOSXで実行すると、マイナス記号が表示されます...
セパレーターTMenuItem
であることを指定するプロパティが見つかりませんでした...
TMainMenu
とTMenuBar
( )を試してみましたが、UseOSMenu := True|False;
まだこの問題があります。
実際のセパレーターを作成するアイデアはありますか? (それ以外の場合は、OS を確認し、OSX の場合は削除します...)