私は過去3年間、趣味/職業レベルでDelphiを学習してきました。私は恐怖と恥ずかしさで私の初期のコードを振り返ることができるようになりました。だから私は今、私の初期のアプリをいくつか見直し、それらをリファクタリングしています。GUI情報隠蔽のためのDelphiでのフレームの使用
私が逃げようとしている悪い習慣の1つは、別のユニットから1つのフォームのコンポーネントにアクセスすることです。これを実行するために、私は情報隠蔽の方法としてフレームを使用することを実験してきました。だからではなく、その上のコンポーネントでフォームを持つ、私はその後、登録
、type
TMyForm = class(TForm)
private
MyFrame: TMyFrame;
procedure SetTimeDate(const Value: TMyItem);
function ReadTimeDate:TMyItem ;
を、すべてのフォーム要素を保持するためのフレームを作成し、フォームにフレームを配置し、プライベートな宣言の中にフレームの宣言を移動していますフォームの初期化部
initialization
begin
RegisterClasses([TMyFrame])
でフレームがIは、次いで、Iフレーム及びその構成要素へのアクセスを有する形部のパブリックセクションで必要なプロパティを宣言しています。
public
property TimeDate: TOverlayItem read ReadTimeDate write SetTimeDate;
私はフレームを使用して、頻繁に繰り返されるコンポーネントグループを統合しています。
これは私が望む目的(Myframeとそのコンポーネントを隠している)で動作するようですが、他の誰かがこのメソッドの経験がありますか?
フレームを使用する際に欠点はありますか? 私は実際にこれを行うことからどんな利益を得ていますか? フレーム内でネストされたフレームを使用する際に問題はありますか? Delphiでフレームを使用するための練習ガイドはありますか? DelphiでGUI情報が隠れているのと同じ効果を得る方法が改善されていますか?
HMcG
RegisterClasses([TMyFrame])は何のために必要ですか? –
私は移動しているので、 MyFrame:TMyFrame; をプライベートセクションに追加すると、TMyframeを登録しないと 'TMyFrame not found'が発生するという例外が発生します。 – HMcG
デザインではカップリングを減らす方法に焦点を合わせる必要があります。そのため、最終的にフレームを使用しているかどうかは関係ありません。私は次の記事を非常に参考にしていることが分かりました:http://www.objectmentor.com/resources/articles/TheHumbleDialogBox.pdf – mghie