Установка обработчиков событий неизвестному типу объекта
От: delphinchik Россия  
Дата: 23.04.05 13:59
Оценка:
............
TBaseEditorClass = class of TWinControl;
TEditorControl = class(TWinControl)
  private
    FOnExit: TNotifyEvent;
  public
    property OnExit: TNotifyEvent read FOnExit write FOnExit;
end;
............
procedure EditorExit(Sender:TObject);
............
procedure TPreview.DefineComponent(QuestionType:String);
var
  EditorClass:TBaseEditorClass;
begin
  if (QuestionType = CN_LOGIC) then EditorClass:=TCombobox;
  if (QuestionType = CN_DATE) then EditorClass:=TDateTimePicker;
  if (QuestionType = CN_FIXEDFORM) then EditorClass:=TMaskEdit;
  if (QuestionType = CN_FREEFORM) then EditorClass:=TMemo;
  if (QuestionType = CN_NUMERIC) then EditorClass:=TMaskEdit;
  if (QuestionType = CN_PICKLIST) then EditorClass:=TMemo;

  FEditor:=EditorClass.Create(Self);
  FEditor.Parent:=DBGridEh_Answers;
  TEditorControl(FEditor).OnExit:=EditorExit;
end;

Не получается, вылетает AV, причем не в строке присваивания обработчика, а видимо уже при его вызове, то есть приведенный код выполняется без ошибок.Спасибо за ответы.
Re: Установка обработчиков событий неизвестному типу объекта
От: delphinchik Россия  
Дата: 23.04.05 14:00
Оценка:
Ошибочка с названием темы
Лучше будет так:
Установка обработчиков событий объекту неизвестного класса
Re: Установка обработчиков событий неизвестному типу объекта
От: Dimonka Верблюд  
Дата: 23.04.05 14:16
Оценка:
Наверное вот так:
............
TEditorControl = class(TWinControl)
  public
    property OnExit;
end;
Re[2]: Установка обработчиков событий неизвестному типу объе
От: delphinchik Россия  
Дата: 23.04.05 14:26
Оценка:
Да, спасибо. Я наверное понял в чем была проблема.
Этим кодом:
TEditorControl = class(TWinControl)
  private
    FOnExit: TNotifyEvent;
  public
    property OnExit: TNotifyEvent read FOnExit write FOnExit;
end;

я объявил у класса TEditorControl собственное свойство OnExit.
а вот этот код:
TEditorControl = class(TWinControl)
  public
    property OnExit;
end;

просто переопределяет область видимости свойства OnExit унаследованного от родителя. Я прав?
Re[3]: Установка обработчиков событий неизвестному типу объе
От: Dimonka Верблюд  
Дата: 23.04.05 15:27
Оценка:
D>просто переопределяет область видимости свойства OnExit унаследованного от родителя. Я прав?


Да, я прав
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.