私は Delphi を学び始めています。そこで、MS Excel のようなアプリケーションをゼロから作成することにしました。新しい Form1 に、1 ページのみを含む TPageControl コンポーネントを配置しました。そのページでは、TAdvStringGrid と、いくつかのボタン (button1、button2) を含む TPanel と、セルのコピー、行のコピー、行の削除など、グリッドでいくつかのアクションを定義するための Popup1 メニューを配置しました。その StringGrid についても、色、フォントなど、いくつかのプロパティを定義しました。PageControl にページを追加するために、ボタン付きのツールバーをメイン フォームに追加しました。そのボタンの OnClick メソッドは 2 つのアクションを定義します:
1) 新しい Page2 を PageControl に追加するため、および 2) 新しい StringGrid を新しく作成された Page2 に追加するため。
Tpagecontrol の新しい Page で作成された新しい (実行時に定義された) StringGrid は、設計時に最初のページで既に定義されている StringGrid 親のプロパティとメソッドを継承 (取得、コピー、複製、複製) し、呼び出すことができる必要があります。 StringGrid の親と同じように、PopUp1 メニュー。これをどのように行うのですか?
最初は、assing() を使用して StringGrid プロパティをコピーするだけでよいと考えていましたが、このアプローチを使用すると、新しい StringGrid を右クリックしてもポップアップ メニューが表示されず、ボタン (button1 と button2) が表示されません。 of Form1 は最初の StringGrid でのみ機能しますが、新しく追加されたものでは機能しません。この問題を解決するために、書き込みと読み取りの TMemoryStream を使用して StringGrid コンポーネントを複製できることをどこかで読みました (親 stringgrid をメモリストリームに保存し、新しい stringgrid を作成してから、そのメモリストリームを新しく作成された stringgrid に読み込みます)。そうしましたが、プログラムがこのコンポーネントのクローン作成メソッドを実行すると、ランタイム エラーが発生します。:-(
ヘルプを注意深くチェックしました。そのトピックには何も見つかりませんでした。この種のタスクに対処する Delphi コンポーネント ライブラリまたはサードパーティ コンポーネントはないようです。誰か助けてくれませんか?:o)