powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как все же изменить значение свойства в редакторе
9 сообщений из 9, страница 1 из 1
Как все же изменить значение свойства в редакторе
    #32311530
new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такая есть проблема:

Я создаю свой новый компанент, и необходимо создать редактор...
я прочитал не мало литературы и создал все же его.
все как бы работает, вызывается написанный мной диалог, но вот
как в нем назначить значение свойству (полю от свойства)
ибо в данный момент у меня есть просто два класса
компонент и редактор, и как организовать между ними взаимодействиеъ
не совсем понятно
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311539
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RegisterPropertyEditor ???
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311543
new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, именно, все сделал, все перекрыл

к примеру в методе EDIT
я хочу назначить какое нить значение для этой переменной

как это сделать
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311582
olga1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то, для этого всегда использовались функции RTTI. Привожу пример
описания TPropertyEditor

TPropertyEditor = class(TBasePropertyEditor, IProperty)
private
FDesigner: IDesigner;
FPropList: PInstPropList;
FPropCount: Integer;
function GetPrivateDirectory: string;
protected
procedure SetPropEntry(Index: Integer; AInstance: TPersistent;
APropInfo: PPropInfo); override;
protected
function GetFloatValue: Extended;
function GetFloatValueAt(Index: Integer): Extended;
function GetInt64Value: Int64;
function GetInt64ValueAt(Index: Integer): Int64;
function GetMethodValue: TMethod;
function GetMethodValueAt(Index: Integer): TMethod;
function GetOrdValue: Longint;
function GetOrdValueAt(Index: Integer): Longint;
function GetStrValue: string;
function GetStrValueAt(Index: Integer): string;
function GetVarValue: Variant;
function GetVarValueAt(Index: Integer): Variant;
function GetIntfValue: IInterface;
function GetIntfValueAt(Index: Integer): IInterface;
procedure Modified;
procedure SetFloatValue(Value: Extended);
procedure SetMethodValue(const Value: TMethod);
procedure SetInt64Value(Value: Int64);
procedure SetOrdValue(Value: Longint);
procedure SetStrValue(const Value: string);
procedure SetVarValue(const Value: Variant);
procedure SetIntfValue(const Value: IInterface);
protected
{ IProperty }
function GetEditValue(out Value: string): Boolean;
function HasInstance(Instance: TPersistent): Boolean;
public
constructor Create(const ADesigner: IDesigner; APropCount: Integer); override;
destructor Destroy; override;
procedure Activate; virtual;
function AllEqual: Boolean; virtual;
function AutoFill: Boolean; virtual;
procedure Edit; virtual;
function GetAttributes: TPropertyAttributes; virtual;
function GetComponent(Index: Integer): TPersistent;
function GetEditLimit: Integer; virtual;
function GetName: string; virtual;
procedure GetProperties(Proc: TGetPropProc); virtual;
function GetPropInfo: PPropInfo; virtual;
function GetPropType: PTypeInfo;
function GetValue: string; virtual;
function GetVisualValue: string;
procedure GetValues(Proc: TGetStrProc); virtual;
procedure Initialize; override;
procedure Revert;
procedure SetValue(const Value: string); virtual;
function ValueAvailable: Boolean;
property Designer: IDesigner read FDesigner;
property PrivateDirectory: string read GetPrivateDirectory;
property PropCount: Integer read FPropCount;
property Value: string read GetValue write SetValue;
end;


Твои функции:
procedure SetFloatValue(Value: Extended);
procedure SetMethodValue(const Value: TMethod);
procedure SetInt64Value(Value: Int64);
procedure SetOrdValue(Value: Longint);
procedure SetStrValue(const Value: string);
procedure SetVarValue(const Value: Variant);
procedure SetIntfValue(const Value: IInterface);
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311616
new one
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это то все понятно, но вот как мне в редакторе свойств вообще иметь доступ к полям компонента
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311667
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это то все понятно, но вот как мне в редакторе свойств вообще иметь доступ к полям компонента

Ну так а методы Set|Get с чем по твоему работают? Как раз с редактируемым свойством.
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311683
Lana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для того чтобы получить доспуп к компоненту из которого вызван редактор свойств можно воспользоваться функцией GetComponent

Returns the specified object from the set of all objects currently being edited by the property editor.
Delphi syntax:
function GetComponent(Index: Integer): TPersistent;
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311691
oracle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
совершенно согласен с ЛАНА

сам только что попробывал, все работает
...
Рейтинг: 0 / 0
Как все же изменить значение свойства в редакторе
    #32311732
olga1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но ты же регистрируешь редактор свойств, а не компонентов. Это редактор (как заметил pkarklin) и устанавливает значение редактируемого свойства(тебе надо знать только его тип, который в принципе можно вычислить).
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как все же изменить значение свойства в редакторе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]