Доброго здоровья и благоденствия вам!
Пришлось столкнуться с написанием компонент. И появилось две проблемы:
1. Как сделать свой редактор свойств? Точнее я догадываюсь как, даже попытался это сделать (хочу рядом со стринговым полем три кнопки с вызовом своего диалога) делаю так :
type
TMyStrClass = string;
TMyProp = class(TStringProperty)
protected
public
function GetAttributes: TPropertyAttributes; override;
procedure Edit; override;
end;
TComboBox1 = class(TComboBox)
private
{ Private declarations }
protected
m_val : TMyStrClass;
{ Protected declarations }
public
procedure SetMP(Value : TMyStrClass);
{ Public declarations }
published
property MP : TMyStrClass read m_val write SetMP;
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterPropertyEditor(TypeInfo(TMyStrClass),TComboBox1,'',TMyProp);
RegisterComponents('Test', [TComboBox1]);
end;
procedure TComboBox1.SetMP(Value :TMyStrClass);
Begin
m_val:=Value;
End;
procedure TMyProp.Edit;
var Dlg:TStringsEditDlg;
begin
Dlg:=TStringsEditDlg.Create(nil);
try
Dlg.Lines.Text:=Value;
if Dlg.ShowModal=mrOk then
Value:=Copy(Dlg.Lines.Text,1,Length(Dlg.Lines.Text)-2);
finally
Dlg.Free;
end;
end;
function TMyProp.GetAttributes: TPropertyAttributes;
begin
Result:=[paDialog];
end;
Свойство есть, кнопок нет
... весь извелся, не знаю в чем трабл.
и второй вопрос:
Каким образом можно в качестве свойства использовать свой клас, ессесно со своим редактором.
Здравствуйте, FilosOFF, Вы писали:
FOF>Доброго здоровья и благоденствия вам!
FOF>Пришлось столкнуться с написанием компонент. И появилось две проблемы:
FOF>1. Как сделать свой редактор свойств? Точнее я догадываюсь как, даже попытался это сделать (хочу рядом со стринговым полем три кнопки с вызовом своего диалога) делаю так :
Думаю получится только одна кнопка
FOF>
Skip..
FOF>
FOF>Свойство есть, кнопок нет ... весь извелся, не знаю в чем трабл.
Попробуй так:
RegisterPropertyEditor(TypeInfo(TMyStrClass), TComboBox1, 'MP',TMyProp);
Да и выложи что такое TMyStrClass.
FOF>и второй вопрос:
FOF>Каким образом можно в качестве свойства использовать свой клас, ессесно со своим редактором.
Нужно его порождать от TPersistent. Свойство сделать published и обязательно не ReadOnly, а то не будет записываться в поток.
Советую посмотреть как это сделано с TFont.
Здравствуйте, Danchik, Вы писали:
D>Здравствуйте, FilosOFF, Вы писали:
FOF>>Доброго здоровья и благоденствия вам!
FOF>>Пришлось столкнуться с написанием компонент. И появилось две проблемы:
FOF>>1. Как сделать свой редактор свойств? Точнее я догадываюсь как, даже попытался это сделать (хочу рядом со стринговым полем три кнопки с вызовом своего диалога) делаю так :
D>Думаю получится только одна кнопка
D>FOF>>
D>Skip..
FOF>>
FOF>>Свойство есть, кнопок нет ... весь извелся, не знаю в чем трабл.
D>Попробуй так:
D>D>RegisterPropertyEditor(TypeInfo(TMyStrClass), TComboBox1, 'MP',TMyProp);
D>
Пробовал, не работает
D>Да и выложи что такое TMyStrClass.
TMyStrClass = string;
FOF>>и второй вопрос:
FOF>>Каким образом можно в качестве свойства использовать свой клас, ессесно со своим редактором.
D>Нужно его порождать от TPersistent. Свойство сделать published и обязательно не ReadOnly, а то не будет записываться в поток.
D>Советую посмотреть как это сделано с TFont.
Ок. попробую.
... << RSDN@Home 1.1.3 stable >>