![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Знатокам 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;
Если решение ректальное - поправьте.