Alex47
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Alex1978 Цитата: Но это не то, смена текущего узла к этому моменту произошла и я лишь возвращаю фокус, а нужно запретить выбор неугодного узла. Как решить проблему? | 1. Когда MultiSelect = False, понятия Selected и Focused становятся равнозначными. Только один node может быть selected (он становится focused), и, наоборот, focused node автоматически становится selected. Поэтому, когда кодом: procedure TMainForm.trlMainFocusedNodeChanged(Sender: TObject; APrevFocusedNode, AFocusedNode: TcxTreeListNode); begin if APrevFocusedNode<> nil then if (AFocusedNode <> nil) and (AFocusedNode.Level = 0) then APrevFocusedNode.Focused := True; end; фокус возвращается на APrevFocusedNode, он (APrevFocusedNode) автоматически становится selected и других selected больше нет. 2. В самом факте того, что мы даем возможность кратковременно перевести фокус на "нежелательный" node и сразу же убираем его, ничего плохого нет. Для обработчика FocusedNodeChanged это штатная ситуация, то есть он предназначен, в том числе, и для этого. На производительности "нормальной" программы это не сказывается. | Всего записей: 366 | Зарегистр. 20-03-2003 | Отправлено: 12:29 06-08-2005 | Исправлено: Alex47, 22:41 07-08-2005 |
|