Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.28;
Скачать: CL | DM;

Вниз

Подскажите как сделать редактор свойств для своего компанента?   Найти похожие ветки 

 
dimonf ©   (2003-04-15 18:06) [0]

Типа как TFont!
Я знаю, что надо создать свой класс от TPersistent.
Делаю:
type
TDrive = class(TPersistent)
private
FDisk: String;
published
property Disk: String read FDisk write FDisk;
end;

TdvDriveComboBox = class(TCustomComboBox)
private
FDrive: TDrive;
procedure SetMyFont(const Value: TDrive);
protected
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Drive: TDrive read FDrive write SetMyFont;
end;

{ TdvDriveComboBox }

constructor TdvDriveComboBox.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDrive.Create;
end;

destructor TdvDriveComboBox.Destroy;
begin
FDrive.Free;
inherited Destroy;
end;

{ TDrive }

procedure TdvDriveComboBox.SetMyFont(const Value: TDrive);
begin
FDrive.Assign(Value);
end;

Но желаемого результата не получилось, в чем я ошибаюсь???


 
Skier ©   (2003-04-15 18:13) [1]


> Но желаемого результата не получилось, в чем я ошибаюсь???

Что не получается ?
RegisterPropertyEditor надеюсь делаешь ?
Покажи класс редактора свойства...
Если нужнен диалог, то нужно перекрывать метод Edit у
класса-редактора свойства см. TFontProperty


 
Skier ©   (2003-04-15 18:15) [2]

Забыл...и в нужно ещё перекрывать метод GetAttributes
и там ставить
Result := [..., paDialog, ...];


 
dimonf ©   (2003-04-15 19:35) [3]

Вроде сделал все что ты сказал, но так и не могу добиться, что бы у меня по клику на плюсик расхлопывалися дополнительные свойства TDrive
Вот как я это реализовал:
Type
TDrive = class(TPropertyEditor)
private
FDisk: String;
function GetAttributes: TPropertyAttributes; override;
procedure GetValues(Proc: TGetStrProc); override;
published
property Disk: String read FDisk write FDisk;
end;

TDisk = class(TStringProperty)
function GetAttributes: TPropertyAttributes; override;
procedure GetValues(Proc: TGetStrProc); override;
end;

procedure Register;
begin
RegisterPropertyEditor(TypeInfo(string), TdvDriveComboBox, "Drive", TDrive);
RegisterPropertyEditor(TypeInfo(string), TdvDriveComboBox, "Disk", TDisk);
end;

{ TDisk }

function TDisk.GetAttributes: TPropertyAttributes;
begin
Result := inherited GetAttributes + [paValueList, paSortList];
end;

procedure TDisk.GetValues(Proc: TGetStrProc);
var drv: TList;
i: integer;
begin
drv:=TList.Create;
FullDriver(drv);
for i:=0 to drv.Count-1 do
Proc(PDriveObject(drv.Items[i]).ParsingName);
drv.Free;
end;

{ TDrive }

function TDrive.GetAttributes: TPropertyAttributes;
begin
Result := inherited GetAttributes + [paDialog];
end;

procedure TDrive.GetValues(Proc: TGetStrProc);
begin
Proc("ss");
end;


 
Skier ©   (2003-04-15 19:44) [4]

function TDrive.GetAttributes: TPropertyAttributes;
begin
Result := [paMultiSelect, paSubProperties, paDialog,paReadOnly];
end;

>что бы у меня по клику на плюсик расхлопывалися дополнительные >свойства TDrive
1)Нужно добавить paSubProperties

2)paMultiSelect на счёт paMultiSelect и paReadOnly тебе решать...



 
dimonf ©   (2003-04-15 19:53) [5]

С этим все понятно, а как мне добавить в класс TDrive дополнительные свойства чтобы я мог их в инспекторе объектов редактировать?
У меня получилось вывести Класс с плюсиком но внутри ничего нет 8(


 
Skier ©   (2003-04-15 20:12) [6]

Покажи-ка весь код...


 
Andryk ©   (2003-04-16 00:19) [7]

Все очень просто вы вы допутили грубую ошибку при инициализиализации вашего свойства в конструкторе вашего компонента, и поэтому делфи вам говорить что она не может раскрыть это свойство.

вы написали:
FDrive.Create,

а надо:
FDrive := TDrive.Create

И не надо регистровать никаких редакторов, Дельфи подцепит редактор, по умолчанию.



 
Skier ©   (2003-04-16 09:14) [8]

>Andryk

> FDrive := TDrive.Create

Во, точно ! А слона-то я и не заметил...Спасибо.



Страницы: 1 вся ветка

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-91324
VIB
2003-04-15 14:56
2003.04.28
Grid


1-91248
Igorek
2003-04-14 19:39
2003.04.28
Get Зарегистрированный редактор свойства


7-91567
DJ_Sedoy
2002-12-31 01:29
2003.04.28
Скрыть программу от Ctrl-Alt-Del в XP


1-91282
Дмитрий
2003-04-17 10:31
2003.04.28
Определить кол-во запущенных экземпляров другой программы...


14-91545
Comper
2003-04-11 15:30
2003.04.28
Диаграмма Гантта