Компоненты редакторы и все, все, все....
От: FilosOFF Россия  
Дата: 03.05.05 13:09
Оценка:
Доброго здоровья и благоденствия вам!
Пришлось столкнуться с написанием компонент. И появилось две проблемы:
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;

Свойство есть, кнопок нет ... весь извелся, не знаю в чем трабл.


и второй вопрос:
Каким образом можно в качестве свойства использовать свой клас, ессесно со своим редактором.
Re: Компоненты редакторы и все, все, все....
От: Danchik Украина  
Дата: 03.05.05 15:02
Оценка:
Здравствуйте, FilosOFF, Вы писали:

FOF>Доброго здоровья и благоденствия вам!

FOF>Пришлось столкнуться с написанием компонент. И появилось две проблемы:
FOF>1. Как сделать свой редактор свойств? Точнее я догадываюсь как, даже попытался это сделать (хочу рядом со стринговым полем три кнопки с вызовом своего диалога) делаю так :
Думаю получится только одна кнопка

FOF>
Skip.. 

FOF>

FOF>Свойство есть, кнопок нет ... весь извелся, не знаю в чем трабл.

Попробуй так:

RegisterPropertyEditor(TypeInfo(TMyStrClass), TComboBox1, 'MP',TMyProp);


Да и выложи что такое TMyStrClass.

FOF>и второй вопрос:

FOF>Каким образом можно в качестве свойства использовать свой клас, ессесно со своим редактором.

Нужно его порождать от TPersistent. Свойство сделать published и обязательно не ReadOnly, а то не будет записываться в поток.
Советую посмотреть как это сделано с TFont.
Re[2]: Компоненты редакторы и все, все, все....
От: FilosOFF Россия  
Дата: 04.05.05 04:58
Оценка:
Здравствуйте, 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 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.