Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Знатокам TVirtualStringTree


Ega23 ©   (2012-03-21 11:47:00) 

Есть Node. Его текст - редактируемый. Вот мы вошли по F2 в редактор, что-то набрали. Enter.
Вопрос: как мне в событии OnNewText если этот NewText невалиден по каким-то моим критериям запретить выход из редактора?
Либо принудительно ввести данную ячейку в режим редактирования?
Либо какое-то событие, типа OnBeforeNewText?
OnChanging не хочется задействовать, ибо проверка валидности может занимать десятые доли секунды, пока оно до базы продолбится.
Можно даже потомка написать с каким-нибудь перекрытым виртуальным методом, не вопрос.

Чую, что всё как-то очень просто должно быть, но потерялся в многообразии свойств TVST.


DVM   (2012-03-22 23:06:00) [1]


> han_malign   (22.03.12 14:03) [5]
> а - фиг... - думал нормальная обвязка стандартного контрола,
>  посмотрел - все с нуля рисуют...
> то есть там все ректальное...

ничего там не ректальное, ректальное - это в SysListView32, что даже в виртуальном режиме ему до VitrualListView как до луны пешком.


Ega23   (2012-03-22 19:17:00) [2]


> тогда можно посмотреть в сторону    
> TBaseVirtualTree
>      function DoEndEdit: Boolean; virtual;


Ага, спасибо, посмотрю.


>  были нюансы при использовании скролбаров во время редактирования.


ОК, спасибо, завтра гляну обязательно.


CRLF   (2012-03-22 14:17:00) [3]

Кстати, из своего опыта общения с данным компонентом помню, что были нюансы при использовании скролбаров во время редактирования. Проверь сразу, так ли он себя ведёт, как тебе нужно.

P.S. А ещё это чудо все редакторы создаёт как многострочный edit, даже если у TVST многострочность отключена.


han_malign   (2012-03-22 14:03:00) [4]

а - фиг... - думал нормальная обвязка стандартного контрола, посмотрел - все с нуля рисуют...
то есть там все ректальное...

тогда можно посмотреть в сторону    
TBaseVirtualTree
     function DoEndEdit: Boolean; virtual;
- но осторожно...
(у меня на руках древняя Version 4.0.17)


Ega23   (2012-03-22 13:04:00) [5]


> т.к. засада с потерей фокуса только усугубится...


Да вроде нормально всё.
А где в MSDN VST описано? Они же Code Gear продались, не?


CRLF   (2012-03-22 12:52:00) [6]


> han_malign   (22.03.12 12:40) [2]
VirtualStringTree -- это слегка из другой оперы.


han_malign   (2012-03-22 12:40:00) [7]


> потерялся в многообразии свойств TVST.

- дык, надо сначал в MSDN смотреть, что TreeView позволяет...
А TVN_ENDLABELEDIT позволяет только отменить редактирование - edit один фиг прибивается...
Обвязка edit-а - еще ректальнее, т.к. засада с потерей фокусатолько усугубится...


Ega23   (2012-03-21 12:25:00) [8]

Нашёл.

Проверяем в OnEdited:


procedure TUpdateCreateMasterForm.vstGroupsEdited(
 Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex);
begin
 if Column = 1 then
   if vstGroups.Text[Node, Column] = 'aaa' then
     vstGroups.EditNode(Node, Column);
end;


Если решение ректальное - поправьте.


Наверх

Титульная страница Поиск, карта сайта Написать письмо