5

200のビジュアルコンポーネントが割り当てられた約200のフォームがあり、多くのイベントが割り当てられているので、今すぐフレームに変更する必要があります。すべてのコンポーネントをコピーして、すべてのビジュアルを再配置するのに十分な時間がありません。コンポーネントを再割り当てし、すべてのイベントを再割り当てし、整列します。そこで、pasとdfmをコピーし、開いてテキストエディタで編集を開始しました(TFormをTframeに変更するなど)が、これはそうではないようです。期待される結果を得る。

これを解決する方法について誰かアイデアがありますか?

4

3 に答える 3

9

プロジェクトのフォームとフレームの違いを観察します。

最初にproject.dprソース:

program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit3 in 'Unit3.pas' {Frame3: TFrame};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

違い:

  1. IDEにどのデザイナーを使用すべきかを伝えるためのより詳細なコメントとしてのフレーム
  2. フォームは自動作成できます

Dfmファイル:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 348
  ClientWidth = 643
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
end

object Frame3: TFrame3
  Left = 0
  Top = 0
  Width = 320
  Height = 240
  TabOrder = 0
end

フレームには次のプロパティはありません。

  • キャプション
  • ClientHeight
  • ClientWidth
  • Font.Charset
  • Font.Color
  • Font.Height
  • Font.Name
  • Font.Style
  • OldCreateOrder
  • PixelsPerInch
  • TextHeight

補足:フレームには次のイベントはありません。

  • OnCreate
  • OnDestroy

フレームには、次のようなグローバル変数はありません。

var
  Form1: TForm1;

また、フレームは。から派生しますTFrameが、フォームは。から派生しTFormます。

注:フレーム/フォームの継承を使用すると、ステップが少し長くなります。

--jeroen

于 2011-01-27T11:08:20.330 に答える
2

TForm には、TFrame にはない追加のプロパティとイベントがあります。フォームからフレームに変更するには、これらのプロパティとイベントを手動で削除する必要があります。

必ず次の手順に従ってください。

  1. 基本クラス タイプを TFrame に変更します。つまり、 に変更TForm1 = class(TForm)TForm1 = class(TFrame)ます。
  2. フォームで、右クリックしてView as Textオプションを選択します。
  3. TFrame にないプロパティとイベントを削除してから、View as Formオプションを選択します。
  4. これで、フォームをフレームとして表示できるはずです。
于 2011-01-27T10:02:44.363 に答える
0

箱から出してすぐに使用できるもの (プロプライエタリ/オープンソース) がなく、完了している場合は、時間をかけて一度だけ開発しIDE expert、一括操作を行ってください。

于 2012-01-13T13:16:59.243 に答える