問題タブ [tcomponent]

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.

0 投票する
3 に答える
1094 参照

delphi - 非ビジュアル Delphi コンポーネントの設計位置にアクセスするには?

IDE でフォームを設計する場合、非ビジュアル コンポーネント(TMainMenus、TDatamodules など)を自由に配置および配置できます。位置は保持されるため、フォームをリロードすると、これらのコンポーネントが正しい場所に表示されます。

しかし、TComponent には Top または Left プロパティがありません。

では、私のコードは、非ビジュアル コンポーネントの「設計された位置」にどのようにアクセスできますか?

0 投票する
2 に答える
1935 参照

delphi - .Create(Application) の代わりに .Create(Nil) を使用できますか

TComponent の変数を持つユニットがあり、次のようにユニットの初期化でこのコンポーネントを作成します。

ユニットをインストールした後、Delphi を閉じたときに Access Violation エラー メッセージ (EAccessViolation) が表示される

しかし、作成者を次のように変更したとき

すべてうまくいきました...違いを知りたいですか?そして何が良いですか?

注:エラーは、デルファイを閉じるときにのみ表示されます(設計時を意味します)。

ありがとう。

0 投票する
1 に答える
2472 参照

delphi - デフォルトのWriteComponentアクションを使用して、Delphi TPersistentをTComponentのフィールドとしてシリアル化できますか?

TPersistentフィールドを持つTComponentからプロパティを書き出す方法について非常に混乱しています。たとえば、私は持っています:

次のライターコードを使用する場合:

私は次のものだけを取得します:

つまり、TPersistentTChildObjがありません。

コンポーネントのシリアル化に関するこの記事では、「コンポーネントはデフォルトで、TComponentではないタイプTPersistentのプロパティをストリーミングします。TPersistentプロパティはコンポーネントと同じようにストリーミングされ、ストリーミングされる他のTPersistentプロパティがある場合があります。」ただし、System.Classesにステップインすると、12950行目(XE3)付近にテストがあります。

これは、コンポーネントとサブコンポーネントのみがシリアル化されていることを示しているようです。TChildObjをTComponentから派生させる(そしてそれに名前を付ける)と、書き込まれたファイルにその名前が表示されます(ただし、プロパティは表示されません)。

私が本当に理解していないのは、TControl(コンポーネント)にはFontプロパティ(TPersistent)があり、たとえばTLabelを作成すると、これが正常にストリーミングされることです。

それとも、これはデフォルトのプロパティと関係がありますか?

助けていただければ幸いです。

0 投票する
1 に答える
286 参照

android - Delphi XE5 ComponentCount セグメンテーション違反 (親の tcomponent を検索)

このコードは、指定されたルート コンポーネント内のすべての TFMXControl を収集します。親とコンポーネント名の先頭を調べます。このコードは、Win32 32.bit Windows ターゲットでは正常に動作しますが、Nexus (Android プラットフォーム) では動作せず、LANC soubrutine の最初の行でページ フォールトが発生します。何も思いつきません.. :(


これも機能しませんが、非常に簡単です。(Win32 は正常に動作) (Tform1 シンプル モバイル フォーム)

0 投票する
2 に答える
2264 参照

delphi - Delphi: TComponent を Clientdataset blob フィールドに保存

以下のような TComponent クラスの派生物があり、clientdataset blob フィールドに保存しようとしています: (インターネットからコピー、クレジットによる)

ファイヤーバードテーブルは…

データベースに書き込み中...

(Globalsetting は TSaveComponent です。)

データベースから読み取り中...

問題: Stream.ReadComponent(self) 行の「ストリーム読み取りエラー」が常に発生します。これを解決する方法を教えてください。

コンポーネントの保存が機能することを確認できます。テーブルを調べて、GlobalSetting で公開されたフィールドを確認しましたが、それが正しい形式であるかどうかはわかりません。(必要に応じて 16 進表現を表示できます)

編集: ソリューション全体が IBX コンポーネントで動作します。DBExpress/Clientdataset コンポーネントでは、blob フィールドからストリームを読み取ると、常に次の結果になります。'Stream read error.'