powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Переопределить event
10 сообщений из 10, страница 1 из 1
Переопределить event
    #40071835
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В TComboEdit нет подбора значений из списка при вводе текста, как у ComboBox в VCL, поэтому необходимо переопределить ввод

Наследуюсь от FMX.ComboEdit.TComboEdit

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
TComboEdit = class(FMX.ComboEdit.TComboEdit)
  private
    LastTimeKeydown:TDatetime;
    Keys:string;
  protected
  //  procedure KeyDown(var Key: Word; var KeyChar: System.WideChar; Shift: TShiftState);override;
    procedure Change();
  end;



Соответственно в

Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TComboEdit.Change();
var
begin
    //Обработчик

  inherited;
end;



KeyDown наступает, но мне надо именно на OnChange, а оно почему-то не наступает. Видимо неверное название. У TComboEdit есть и OnKeyDown, и OnChange. Где порыться?
...
Рейтинг: 0 / 0
Переопределить event
    #40071836
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может override не хватает?
...
Рейтинг: 0 / 0
Переопределить event
    #40071840
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Не хватает, но в базовом классе нет метода Change :)

дело в том, что в FMX.ComboEdit.TComboEdit нет и метода KeyDown, но почему работает?

И всё-таки, как мне переопределить OnChange, чтобы стандартный OnChange, который повешен на контрол тоже срабатывал?
...
Рейтинг: 0 / 0
Переопределить event
    #40071841
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
дело в том, что в FMX.ComboEdit.TComboEdit нет и метода KeyDown, но почему работает?

Значит где-то выше есть.
antox
И всё-таки, как мне переопределить OnChange, чтобы стандартный OnChange, который повешен на контрол тоже срабатывал?

Каша какая-то... On Change это обработчик события, Change/DoChange и т.п. методы обычно его вызывают.

Ищи в исходниках, если они имеются.
...
Рейтинг: 0 / 0
Переопределить event
    #40071847
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

Код: pascal
1.
TComboEdit = class(TCustomComboEdit)



Код: pascal
1.
TCustomComboEdit = class(TComboEditBase)



Код: pascal
1.
TComboEditBase = class(TCustomEdit)



у TComboEditBase есть с-во и процедура

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
property OnChange: TNotifyEvent read GetOnChange write SetOnChange;
function GetOnChange: TNotifyEvent;


function TCustomEdit.GetOnChange: TNotifyEvent;
begin
  Result := Model.OnChange;
end;



и у
TCustomComboEdit
есть св-во

Код: pascal
1.
property Model: TComboEditModel read GetModel;



Код: pascal
1.
TComboEditModel = class(TCustomEditModel)



Код: pascal
1.
TCustomEditModel = class(TDataModel)



и уже у TDataModel есть
Код: pascal
1.
 procedure Change;



Не знаю, как добраться, если это вообще оно
...
Рейтинг: 0 / 0
Переопределить event
    #40071850
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox,
Код: pascal
1.
procedure Change;


в какой секции прописан?
...
Рейтинг: 0 / 0
Переопределить event
    #40071854
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual Student,

немного перепутал, уже у TCustomEditModel есть

Код: pascal
1.
2.
protected
 procedure DoChange; virtual;



и

Код: pascal
1.
2.
public 
 procedure Change;



но TCustomEditModel же не является базовым классом, как я понимаю
...
Рейтинг: 0 / 0
Переопределить event
    #40071862
Фотография Virtual Student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
Virtual Student,

немного перепутал, уже у TCustomEditModel есть

Код: pascal
1.
2.
protected
 procedure DoChange; virtual;



и

Код: pascal
1.
2.
public 
 procedure Change;



но TCustomEditModel же не является базовым классом, как я понимаю

Я бы попробовал унаследоваться от TCustomEditModel . Т.е. создал бы дополнительный класс модели данных для твоего TComboEdit , и подсунул бы его через GetModel твоего компонента TComboEdit .
Ну, а в твоей условной TMyEditModel переопределил бы метод Change .
...
Рейтинг: 0 / 0
Переопределить event
    #40071874
antox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Virtual Student,

Буду пробовать. Пока ч-з keydown сделал
...
Рейтинг: 0 / 0
Переопределить event
    #40071879
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
antox
Код: pascal
1.
2.
protected
 procedure DoChange; virtual;


antox
Код: pascal
1.
2.
public 
 procedure Change;


Первый можно перекрыть, второй - нет.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Переопределить event
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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