2016-11-12 3 views
2

私はデザイナで設定されたTPanelでassignを使用しようとしていますが、動作しません。Firemonkey TPanelをTPanelに割り当てる作業はXE10.1 Berlin

var 
    LPanel : TPanel; 
begin 
    LPanel := TPanel.Create(nil); 
    LPanel.Assign(Panel1); // Panel1 is a panel made in the form designer 
end; 

「TPanelをTPanelに割り当てることができません」というエラーメッセージが表示されます。 (私はドイツ語版のRAD Studioを持っています...ドイツ語の正確なエラーメッセージは "TPanel kann nicht zu TPanel zugewiesen werden"です。)

私は、フォームデザイナーを使ってTPanelを他のコンポーネントと共に設計しました。今度は、すべての子コントロールを含めて、割り当てたいTPanelと同じにする必要があるTLayoutに新しいTPanelインスタンスを追加します。

+0

1)** _エラーメッセージ(ドイツイスト大丈夫、wenn ES noetigシンド)_ **フル**と正確な**を入力してください。メッセージには重要な手掛かりがあります。 2)それで、私はデルファイにアクセスすることはできませんが、TPanelの場合は意図的に無効になっているようです。ですから、達成しようとしていること/あなたの目的が何であるかを説明するには、[あなたの質問を編集してください](http://stackoverflow.com/posts/40558827/edit)してください。根本的な問題を解決するより適切な方法があるかもしれません。 –

+0

速い返信ありがとう!私は私の答えを編集:) Basiclly私は私の設計されたTPanelのようなすべてのchildernsと同じであるTPanelを追加したい。 ^^ – MaxMadman

答えて

3
TPanel含む

ほとんどのVCLとFMXコンポーネント、は全くAssign()を実装していません。通常、コンポーネントプロパティに使用されるユーティリティクラスのみがプロパティセットで使用するためにAssign()を実装します。

何をしようとしている場合は、TPanelの代わりにフレームを使用する必要があります。 FormまたはDataModuleのように、デザイン時にフレームをデザインし、必要に応じて実行時にインスタンスを作成することができます。

詳細についてを参照してくださいエンバカデロのドキュメント:

Frames in FireMonkey

2

残念ながら、私は現在Delphiに確認するためのアクセス権を持っていません。しかし、Assign ing TPanelは意図的にフレームワークによってブロックされているようです。あなたは、フレームを作成したら、あなたは実行時に新しいインスタンスを作成するために、次のコードを使用することができるはず何を達成しようとしているが、より適切TFrame

で扱うようだ、と述べた

uses 
    ... 
    frMyFrame; 
... 
var 
    LNewFrame : TFrame; 
begin 
    LNewFrame := TMyFrame.Create(nil); //Are you sure you don't want to assign an owner? 
    LNewFrame.Parent := Self; //Assuming you want to position the frame directly on the form 
          //Otherwise you could place it on a simple panel. 
    //Set attributes for positioning 
    //Don't forget resource management (see ownership comment) 
    ... 
end; 
関連する問題