Каскадные CheckBox в деревьях TdxTreeList и TdxDBTreeList (ExpressDeveloper)
С CheckBox'ами отдельных ноде я разобрался, хуже обстоит с наследниками. Я предпологал использовать событие OnMouseDown. При простом кликаньи на элементе дерева све происходит нормально, потомки выделяются. Если в момент клика нажата <Ctrl>, то в обработчик OnMouseDown мы просто не заходим.
Кроме того, для того, чтобы пользователь работал с программой, как с обычным Win-приложением, необходимо, чтобы он не нажимал <Ctrl> при работе мышкой. Правильно ли я понимаю, что я сам должен отлавливать посылаемые моему приложения сообщения Windows и перед вызовом обработчика OnMouseDown сам добавлять нажатие <Ctrl>.
//================================================
//TdxTreeList
свойства
Images=ImageList1
aoMultiSelect=true
aoExtMultiSelect=true
enum {mNonSel, mHalfSel, mSel} gEnumSelected;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
GenTree(DSMaster, DSSlave, TLGroups); //формируем дерево на основе БД
for(int i = 0; i < TLGroups->Count; i++){
TdxTreeListNode* node = TLGroups->Items;
for(int j = 0; j < node->Count; j++){
node->Items[j]->ImageIndex = mNonSel;
node->Items[j]->SelectedIndex = mSel;
}
node->ImageIndex = mNonSel;
node->SelectedIndex = mSel;
}
}
//TdxDBTreeList
свойства
ImageIndexFieldName=Selected
Images=ImageList1
KeyField=Id
etoMultiSelect=true
etoUseImageIndexForSelected=false
ParentField=Id_group
SelectedIndex=2