-
Какой сакральный смысл имеет строка в dfm-файле например inherited OKBtn: TButton
Очевидно я никогда раньше не сталкивался с наследованием форм, кроме праматери TForm.
-
Удалено модератором
-
Это для всех так кнопок (и в чистом проекте), или с этой кнопкой вы что-то особенное делали?
-
Что-то менялось у кнопки по сравнению с родительской формой.
-
Вот весь файл inherited fSaveVarDlg: TfSaveVarDlg
Caption = #1042#1082#1083#1102#1095#1080#1090#1100' '#1101#1090#1086#1090' '#1074#1072#1088#1080#1072#1085#1090' '#1074' '#1089#1087#1080#1089#1086#1082' '#1080#1079#1074#1077#1089#1090#1085#1099#1093'?'
ClientWidth = 476
PixelsPerInch = 96
TextHeight = 13
inherited Bevel1: TBevel
Width = 457
end
inherited OKBtn: TButton
Left = 62
Top = 181
Caption = #1044#1072
ModalResult = 6
end
inherited CancelBtn: TButton
Left = 342
Top = 181
Caption = #1053#1077#1090
ModalResult = 0
end
object LabeledEdit1: TLabeledEdit
Left = 16
Top = 32
Width = 121
Height = 21
EditLabel.Width = 61
EditLabel.Height = 13
EditLabel.Caption = 'LabeledEdit1'
TabOrder = 2
end
object LabeledEdit2: TLabeledEdit
Left = 174
Top = 32
Width = 121
Height = 21
EditLabel.Width = 61
EditLabel.Height = 13
EditLabel.Caption = 'LabeledEdit2'
TabOrder = 3
end
end
-
Сомневаюсь что даже Юрий Сергеевич не сможет ответить для чего это когда-то, кем-то было придумано. Разве что на всякий случай. Типа - "хуже не будет, а если что, то придумаем как использовать". :)
-
Наследуешься тыканьем мышкой от собственной же базовой формы в проекте, у чего-то из имеющегося изменил, например, ширину
inherited Bevel1: TBevel
Width = 457
end
Добавил ещё что-то
object LabeledEdit1: TLabeledEdit
-
Или о чём речь?
-
Inherited - это указание загрузчику формы что объект не нужно создавать, он уже создан в родительской форме, и надо только поменять некоторые свойства.
-
> для чего это когда-то, кем-то было придумано
Кем - разработчиками Delphi. Еще в Borland'е.
Когда - вместе с репозиторием. То есть, в первой же версии Delphi, насколько помню (впрочем, могу и ошибаться, ведь с тех пор 20 лет прошло).
Для чего - уже ответили. Для поддержки наследования не только кода, но и ресурсов (ведь DFM - это ресурс).
-
> Юрий Зотов © (12.01.17 12:51) [9]
Судя по отсутствию примеров из собственной твоей практики, это было придумано как возможность, но не придумано как получить пользу из такого наследования. Может я и ошибаюсь, но в моем случае такой код получился, когда я решил добавить в программу некий диалог. Для чего решил воспользоваться стандартным шаблоном из репозитория Standard Dialog (Horizontal). Menu - File - New - Other Изменил в нем заголовок, добавил несколько LabeledEdit. И каким-то образом получил такой dfm. Что тут, отчего, как и для чего наследуется не понимаю.
P.S. Побочным следствием такого глюка явилось исчезновение из репозитория того самого Standard Dialog (Horizontal). Хотя файл "c:\Program Files (x86)\CodeGear\RAD Studio\5.0\ObjRepos\DelphiWin32\OKCANCL1.PAS" никуда не делся и ничуть не испортился.
-
> Судя по отсутствию примеров из собственной твоей практики, > это было придумано как возможность, но не придумано как > получить пользу из такого наследования.Примеры я просто не стал приводить, и без них все ясно. А польза - несомненная. Один раз делаем форму-предок (и выносим в нее все общее), затем плодим от нее кучу потомков (добавляя или меняя в каждом из них все индивидуальное). Причем даже не обязательно в одном проекте, можно и в разных. > Что тут, отчего, как и для чего наследуется не понимаю.1. Все, что с inherited - наследуется. При этом некоторые свойства могут быть изменены:
inherited CancelBtn: TButton Left = 342 end
2. Все, что с object - добавлено. 3. Как наследуется. Сначала загружается DFM самой первой (старшей) формы-предка и при этом создается все, что на ней лежит. Потом последовательно читаются DFM всех потомков, от старшего к младшему. При чтении каждого потомка все, что с object - создается, а все, что с inherited - модифицируется. 4. Зачем наследуется. Повторное использование DFM предков в потомках снижает трудоемкость разработки и уменьшает объем EXE. Кроме того, удобно вносить общие изменения (вносим их в DFM только предка, а действуют они во всех потомках).
-
Спасибо за разъяснения.
-
Уже примерно ясно для чего нужен репозиторий, кроме банального использования.
|