この質問の最初のバージョンは具体的なものになっている可能性がありますので、より一般的な方法で質問してみます:子コンポーネントのプロパティに基づいてフレームのプロパティを設定するにはどうすればよいですか?
私はコンポーネントがあるフレームを持っています。
constructor TMyFrame.Create(AOwner: TComponent);
begin
inherited;
if Button1.Tag = 100
then DoSomething
else DoSomethingElse;
end;
:私はコンポーネントのプロパティを変更し、フォームにフレームを配置した後、私はこのような何かをしたいのは、私がフレームコンストラクタで100
にボタン上のタグを設定しましょう
この時点(作成中)にボタンのタグがまだ0であることがわかりました。誰かがこれを行う別の方法をお勧めしますか?
このアプリケーションでは、ユーザーがSQL文を入力できる場所がいくつかあります。これを容易にするために、SynEditコンポーネントを使用します。この目的のために、いくつかの拡張機能を備えたフレームを作成しました。
時にはデータ認識バージョン(TDBSYnEdit)が必要な場合もあり、それ以外の場合は通常のバージョン(TSynEdit)が必要になることがあります。これを解決するためにフレーム上にページコントロールを配置し、デザイン時に正しいページに切り替えます。タブは隠れているので、ユーザーはこれが起こるかどうかわかりません。
問題は、開発者がページコントロールに正しいページを設定することを忘れたり、誤って間違ったページを選択することがあることです。私は、フレーム
if DBSQLMemo.DataField > ''
then pcMemos.ActivePage := tsDataAware
else pcMemos.ActivePage := tsNonDataAware;
でイベントを作成して私の理論に次のコードを追加することで、この問題を解決したかった
により、開発者は、エディタのデータソース/データフィールドのプロパティを設定した場合、フレームはで使用されるべきであるということでした"データ認識モード"、およびデータ認識エディタが表示されている必要があります。判明したように、作成の瞬間にこれらの特性は設定されません。
この問題をどのように解決すればよいですか?
私は、フレームにロードされたプロシージャがないと言うことができます。私はあなたが誤解しているかもしれないと思うか、あるいは私はあまり明確ではなかったかもしれません。コードはフォーム単位ではなく、フレーム単位で指定する必要があります。 –
@Svein:それを試してみてください。あなたのフォームとフレーム内で 'Loaded'プロシージャをオーバーライドしてください(はい、それもあります)。そして、両方にブレークポイントを設定し、あなたのアプリケーションを実行してください。 – mghie
さて、私はおとなしいでしょう。出来た。私の以前のコメントを無視し、私の無知を許してください。どうもありがとうございました :-) –