![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Всем привет!
Имеется часть кода: Код:
...
type
TForm2 = class(TForm)
Edit1: TEdit;
private
//
protected
procedure DefineProperties(Filer: TFiler); override;
procedure WriteZ(Writer: TWriter);
public
//
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.WriteZ(Writer: TWriter);
begin
Writer.WriteIdent('ValueTest');
end;
procedure TForm2.DefineProperties(Filer: TFiler);
begin
inherited;
Filer.DefineProperty('PropTest', nil, WriteZ, True);
end;
в ".dfm" : PropTest = ValueTest Результат: Код:
object Form2: TForm2
Left = 203
Top = 107
Width = 300
Height = 200
Caption = 'Form2'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Position = poDesktopCenter
PixelsPerInch = 96
TextHeight = 13
PropTest = ValueTest
object Edit1: TEdit
Left = 32
Top = 32
Width = 121
Height = 21
TabOrder = 0
Text = 'Edit1'
end
end
Новое свойство относится к объекту Form2, а как сделать, чтобы
свойство относилось к объекту Edit1 ?
Есть способ выбора компонента?Последний раз редактировалось Admin, 09.05.2022 в 17:12. |
|
#2
|
|||
|
|||
|
Ну так сабклась TEdit и добавляй св-во в него:
Код:
type
TEdit = class(Vcl.StdCtrls.TEdit)
protected
procedure DefineProperties(Filer: TFiler); override;
procedure WriteZ(Writer: TWriter);
end;
TForm2 = class(TForm)
Edit1: TEdit;
... |
|
#3
|
|||
|
|||
|
Это действительно сработало. Спасибо!
Но что если у меня на форме более одного Edita?,- тогда новое свойство будет записано в каждый из них. А есть ли возможность обратиться к конкретному компоненту по имени? И я так понимаю, что если у меня на форме компоненты разных типов, то миссия становится невыполнимой... |
|
#4
|
|||
|
|||
|
Да, будет для каждого.
Соответсвенно, тогда в коде надо проверять имя или таг. Т.е. запись будет вызываться для каждого, а вот будет ли записано - уже решаешь ты в коде. По поводу разных типов - ну не так уж их и много. Тут скорее проблема в том, что такое перекрытие придется писать в каждой форме, что не очень удобно. Если Delphi достаточно свежая, то можно попробовать как будет работать class helper (может можно просто создать соотв. class helper и методы из него будут нормально работать). В противном случае тогда придется либо пихать этот код каждый раз, либо создавать свой набор компонент и пользоваться ими. Последний раз редактировалось lmikle, 09.05.2022 в 21:12. |