![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Мгновенное изменение [D7, WinXP]
capkoh © (2005-08-30 14:20:00)Как можно сделать реальное изменение текстового свойства, как Text в TEdit? Т.е. текст на компоненте изменяется сразу же при введении очередного символа в поле свойства.
Посмотрел как сделано в TControl:
property Caption: TCaption read GetText write SetText stored IsCaptionStored;
procedure TControl.SetText(const Value: TCaption);
begin
if GetText <> Value then SetTextBuf(PChar(Value));
end;
procedure TControl.SetTextBuf(Buffer: PChar);
begin
Perform(WM_SETTEXT, 0, Longint(Buffer));
Perform(CM_TEXTCHANGED, 0, 0);
end;
Но, ведь, SetText будет выполняться не сразу при вводе текста...
Юрий Зотов (2005-08-30 15:03:00) [1]Это делается не самим компонентом, а редактором свойства (что и естественно, потому что этот механизм относится исключительно к design-time). Если метод GetAttributes редактора свойства включает флаг paAutoUpdate, то при каждом изменении свойства сразу же и автоматически вызывается его метод SetValue.
Для строкового свойства можно и не писать свой редактор, а просто объявить свойство с типом TCaption (а не просто string). Тогда автоматически подключится уже готовый редактор TCaptionProperty (что и использовано в TControl для свойства Caption).