Делая одну программу, понадобилось смоделировать переход по ячейкам VirtualTreeView с помощью кнопки Tab. Перехват Tab-а отдельный разговор =), а вот переход по ячейкам сейчас обсудим.
Дело в том, что при переходе по ячейкам VT сразу вызывает редактирование нода, в связи с чем у меня возникала ситуация, когда на редактирование вызывалась не правильная ячейка. Т.е., если реализуете перемещение по ячейкам сами, делайте примерно так:
with vtGrid do begin TreeOptions.MiscOptions := vtGrid.TreeOptions.MiscOptions - [toEditable]; Selected[lNode] := True; FocusedNode := lNode; FocusedColumn := lColumn; TreeOptions.MiscOptions := vtGrid.TreeOptions.MiscOptions + [toEditable]; EditNode(lNode, lColumn); end;
В таком варианте все работает так, как и ожидается.
P.S.: отметьте для себя еще один момент - очередность присваивания фокуса в дереве - сначала SelectedNode, потом FocusedNode и только после этого FocusedColumn! Только так и никак иначе! В ином случае вас ждут не приятные сюрпризы
На, уважаемом мною, сайте увидел ссылку на . Я и до этого с трудом переносил его книги и статьи, но эта статья просто возмутила!
Намного проще изменить стандартный компонент TButton и больше никаких изменений в проекте делать не надо.
Как так можно??? Вместо того, чтобы объяснить новичкам, что это ОЧЕНЬ не желательно, он призывает поступать именно так. Ну в конце-концов - есть хелперы в новых (и, относительно, не новых. например D2006) версиях Delphi.
Я понимаю, что иногда это будет полезно, но такие случаи очень-очень редки. А новички, прочтя подобную статью, будут именно так и поступать. Что-то мне не вериться, что в какой-либо компании, занимающейся разработкой программ и в которой больше одного программиста, будут поступать подобным образом.
Итог - НИКОГДА так не делайте и перестаньте читать Фленова!