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

Вниз

Мгновенное изменение   Найти похожие ветки 

 
capkoh ©   (2005-08-30 14:20) [0]

Как можно сделать реальное изменение текстового свойства, как 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) [1]

Это делается не самим компонентом, а редактором свойства (что и естественно, потому что этот механизм относится исключительно к design-time). Если метод GetAttributes редактора свойства включает флаг paAutoUpdate, то при каждом изменении свойства сразу же и автоматически вызывается его метод SetValue.

Для строкового свойства можно и не писать свой редактор, а просто объявить свойство с типом TCaption (а не просто string). Тогда автоматически подключится уже готовый редактор TCaptionProperty (что и использовано в TControl для свойства Caption).



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

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

Наверх




Память: 0.46 MB
Время: 0.051 c
3-1135456112
Fed
2005-12-24 23:28
2006.02.19
Вычисляемое поле


4-1133428554
Verg
2005-12-01 12:15
2006.02.19
Прерывания в многопроцессорной архитектуре


3-1135069265
ANB
2005-12-20 12:01
2006.02.19
Как лучше сделать ссылку на 2 сущности ? (Oracle и MS SQL)


15-1138359877
unknowing
2006-01-27 14:04
2006.02.19
Работа с таблицами в текстовом формате


4-1133714790
Volf_555
2005-12-04 19:46
2006.02.19
Как определить количество файлов, помещённых на значок программы?