Как сделать массовое преобразование формы в каркас в Delphi? - PullRequest
5 голосов
/ 27 января 2011

У меня есть форма с aprox с 200 визуальными компонентами, с множеством назначенных событий, и мне нужно изменить ее сейчас на фрейм. У меня нет достаточно времени, чтобы скопировать все компоненты, переупорядочить все визуальные компоненты и переназначить все события, выровнять и т. д. Итак, я скопировал pas и dfm, открыл и начал редактировать их в текстовом редакторе (измените TForm на Tframe и т. д.), но кажется, что это не дает ожидаемых результатов.

Кто-нибудь знает, как решить эту проблему?

Ответы [ 3 ]

9 голосов
/ 27 января 2011

Соблюдайте различия формы и фрейма в вашем проекте.

Сначала источник 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
  • Цвет
  • Шрифт.Charset
  • Font.Color
  • Font.Height
  • Font.Name
  • Font.Style
  • OldCreateOrder
  • PixelsPerInch
  • TextHeight

Sidenote: кадр не имеет этих событий:

  • OnCreate
  • OnDestroy

Фрейм не имеет глобальной переменной, например:

var
  Form1: TForm1;

И фрейм начинается с TFrame, а форма - с TForm.

Примечание: с фреймом /Форма наследства, ваши шаги сталинемного дольше.

- jeroen

2 голосов
/ 27 января 2011

TForm будет иметь дополнительные свойства и события, которые не будут иметь TFrame.Вам необходимо удалить эти свойства и события вручную, чтобы перейти от формы к кадру.

Обязательно выполните следующие действия;

  1. Измените тип базового класса на TFrame, т. Е. Измените TForm1 = class(TForm)в TForm1 = class(TFrame).
  2. В форме щелкните правой кнопкой мыши и выберите параметр View as Text.
  3. Удалите свойства и события, которых нет в TFrame, а затем выберите параметр View as Form.
  4. Теперь вы сможете просматривать форму в виде рамки.
0 голосов
/ 13 января 2012

Потратьте время на то, чтобы раз и навсегда разработать IDE expert, выполнив массовую операцию, если не было никакой работы «из коробки» (проприетарного / с открытым исходным кодом), и все готово.

...