Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > описание компонентов в отдельном файле, возможно?


Автор: casusnur 19.5.2017, 04:20
Всем добра. Пишу грандиозную программу, и поместил на форму более 250 компонент. При таком количестве навигация по листингу проблематичная. Возник вопрос, а можно ли описание компонентов класса формы поместить в отдельный файл, ибо жутко неудобно.
Код

  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    StatusBar1: TStatusBar;
    TabSheet4: TTabSheet;
    SpeedButton1: TSpeedButton;
    GroupBox2: TGroupBox;
    ListBox2: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    StringGrid1: TStringGrid;
    GroupBox5: TGroupBox;
    Edit11: TEdit;
    Label16: TLabel;
    Label17: TLabel;
    Edit12: TEdit;
    GroupBox6: TGroupBox;
    CheckBox1: TCheckBox;
    Label12: TLabel;
    Edit7: TEdit;
    Label13: TLabel;
    Edit8: TEdit;
    Label14: TLabel;
    Edit9: TEdit;
    Label15: TLabel;
    Edit10: TEdit;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Label20: TLabel;
    Label21: TLabel;
    Label22: TLabel;
    Label23: TLabel;
    Edit15: TEdit;
    Label24: TLabel;
    Panel4: TPanel;
    Panel5: TPanel;
    Label25: TLabel;
    Panel6: TPanel;
    Label26: TLabel;
    StringGrid2: TStringGrid;
    Label27: TLabel;
    GroupBox8: TGroupBox;
    Label28: TLabel;
    Label11: TLabel;
    TrackBar1: TTrackBar;
    Button3: TButton;
    Button4: TButton;
    Button6: TButton;
    Button7: TButton;
    Label29: TLabel;
    GroupBox7: TGroupBox;
    ComboBox1: TComboBox;
    Label30: TLabel;
    RadioButton25: TRadioButton;
    RadioButton26: TRadioButton;
    RadioButton27: TRadioButton;
    RadioButton28: TRadioButton;
    RadioButton29: TRadioButton;
    Label19: TLabel;
    Label31: TLabel;
    Label32: TLabel;
    Label33: TLabel;
    Button5: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    ComboBox6: TComboBox;
    ComboBox9: TComboBox;
    ComboBox10: TComboBox;
    ComboBox11: TComboBox;
    ComboBox12: TComboBox;
    ComboBox13: TComboBox;
    ComboBox14: TComboBox;
    ComboBox17: TComboBox;
    ComboBox18: TComboBox;
    ComboBox19: TComboBox;
    ComboBox20: TComboBox;
    ComboBox21: TComboBox;
    ComboBox22: TComboBox;
    ComboBox25: TComboBox;
    ComboBox26: TComboBox;
    ComboBox27: TComboBox;
    ComboBox28: TComboBox;
    ComboBox29: TComboBox;
    ComboBox30: TComboBox;
    ComboBox33: TComboBox;
    Label34: TLabel;
    Edit6: TEdit;
    Label38: TLabel;
    Label37: TLabel;
    Label36: TLabel;
    Label35: TLabel;
    RadioButton33: TRadioButton;
    RadioButton34: TRadioButton;
    RadioButton35: TRadioButton;
    ComboBox7: TComboBox;
    ComboBox8: TComboBox;
    ComboBox15: TComboBox;
    ComboBox16: TComboBox;
    ComboBox23: TComboBox;
    ComboBox24: TComboBox;
    ComboBox31: TComboBox;
    ComboBox32: TComboBox;
    ComboBox34: TComboBox;
    ComboBox35: TComboBox;
    ComboBox36: TComboBox;
    ComboBox37: TComboBox;
    RadioButton36: TRadioButton;
    RadioButton37: TRadioButton;
    RadioButton38: TRadioButton;
    ComboBox38: TComboBox;
    ComboBox39: TComboBox;
    ComboBox40: TComboBox;
    ComboBox41: TComboBox;
    ComboBox42: TComboBox;
    ComboBox43: TComboBox;
    ComboBox44: TComboBox;
    ComboBox45: TComboBox;
    ComboBox46: TComboBox;
    ComboBox47: TComboBox;
    ComboBox48: TComboBox;
    ComboBox49: TComboBox;
    Label39: TLabel;
    Label40: TLabel;
    Label41: TLabel;
    Label42: TLabel;
    GroupBox9: TGroupBox;
    RadioButton30: TRadioButton;
    Button12: TButton;
    Button13: TButton;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    Label43: TLabel;
    Label44: TLabel;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    TrackBar2: TTrackBar;
    TrackBar3: TTrackBar;
    Label45: TLabel;
    Label46: TLabel;
    Label47: TLabel;
    Edit14: TEdit;
    Edit16: TEdit;
    GroupBox10: TGroupBox;
    StringGrid3: TStringGrid;
    RadioButton31: TRadioButton;
    Label48: TLabel;
    Label49: TLabel;
    Edit17: TEdit;
    Label50: TLabel;
    CheckBox7: TCheckBox;
    Edit18: TEdit;
    Edit19: TEdit;
    Label51: TLabel;
    Label52: TLabel;
    GroupBox11: TGroupBox;
    RadioButton32: TRadioButton;
    Edit20: TEdit;
    Edit21: TEdit;
    Label53: TLabel;
    Label54: TLabel;
    CheckBox8: TCheckBox;
    Edit22: TEdit;
    Edit23: TEdit;
    Label55: TLabel;
    Edit24: TEdit;
    Edit25: TEdit;
    Label56: TLabel;
    Label57: TLabel;
    Edit26: TEdit;
    Edit27: TEdit;
    Label58: TLabel;
    Label59: TLabel;
    Label60: TLabel;
    Edit13: TEdit;
    Label18: TLabel;
    CheckBox9: TCheckBox;
    CheckBox10: TCheckBox;
    CheckBox11: TCheckBox;
    CheckBox12: TCheckBox;
    CheckBox13: TCheckBox;
    CheckBox14: TCheckBox;
    CheckBox15: TCheckBox;
    CheckBox16: TCheckBox;
    CheckBox17: TCheckBox;
    CheckBox18: TCheckBox;
    CheckBox19: TCheckBox;
    CheckBox20: TCheckBox;
    CheckBox21: TCheckBox;
    CheckBox22: TCheckBox;
    CheckBox23: TCheckBox;
    CheckBox24: TCheckBox;
    CheckBox25: TCheckBox;
    CheckBox26: TCheckBox;
    CheckBox27: TCheckBox;
    CheckBox28: TCheckBox;
    CheckBox29: TCheckBox;
    CheckBox30: TCheckBox;
    CheckBox31: TCheckBox;
    CheckBox32: TCheckBox;
    Edit28: TEdit;
    Edit29: TEdit;
    Edit30: TEdit;
    Edit31: TEdit;
    Edit32: TEdit;
    Edit33: TEdit;
    Edit34: TEdit;
    Edit35: TEdit;
    ProgressBar1: TProgressBar;
    ProgressBar2: TProgressBar;
    ProgressBar3: TProgressBar;
    ProgressBar4: TProgressBar;
    ProgressBar5: TProgressBar;
    ProgressBar6: TProgressBar;
    ProgressBar7: TProgressBar;
    ProgressBar8: TProgressBar;
    ProgressBar9: TProgressBar;
    ProgressBar10: TProgressBar;
    ComboBox50: TComboBox;
    StringGrid4: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button14: TButton;
    Edit36: TEdit;
    Button15: TButton;
    StringGrid5: TStringGrid;
    Edit37: TEdit;

Автор: drkot 20.5.2017, 21:38
Используй TFrame.
На отдельных фрэймах делаешь части твоей формы, а потом в Run-Time собираешь форму воедино.

PS: такое количество компонентов будет тормозить при работе

Автор: casusnur 21.5.2017, 01:03
да оно уже во время пополнения кода тормозит, но надо. лишнего ничего нет, это минимум.
пишу твикер для одной железяки на микроконтроллере.

Автор: drkot 21.5.2017, 02:11
Рационально было бы пересмотреть концепцию построения формы:
- динамические константы лучше отрисовывать "ручками" на TPaintBox
- элементы управления вынести на отдельные формы типа ToolWindow
- Формы создавать в Run-Time и по необходимости
- включить DoubleBuffered
- для декорирования использовать TBevel, а не TPanel


Автор: Beltar 18.8.2017, 15:05
А не проще сделать один красивый ListView, например, и в него выводить все параметры, а через кнопочку "редактировать" показывать окошечко ввода? И не страдать ерундой. Любой крупный программный пакет, в том числе и сама Delphi с бесчисленным количество настроек, делает примерно так.

А еще есть компонент для редактирования списков "параметр"="значение".

Автор: Gwire 30.1.2018, 16:21
Можно.
Код

TForm1 = class(TForm)
{$INCLUDE TForm1_comps.inc}
// все объявления компонентов засунуть в TForm1_comps.inc
Но лучше так не делать.

Или если среда поддерживает директиву {$REGION}, то
Код

TForm1 = class(TForm)
{$REGION 'Компоненты'}
// объявления компонентов
{$ENDREGION}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)