void __fastcall TwinEditRel::trRelCreateEditor(TBaseVirtualTree *Sender, PVirtualNode Node, TColumnIndex Column, IVTEditLink *EditLink) { if (!Node) return; // only for safety the program ! Sender->ClearSelection(); //-- берем данные текущего узла TRels *obj=(TRels*)Sender->GetNodeData(Node); TRelEdit* PropertyLink = new TRelEdit((TVirtualStringTree*)Sender, Node, Column, obj); PropertyLink->QueryInterface(__uuidof(IVTEditLink), (void**)EditLink); } //-- это просто пересортировка! void __fastcall TwinEditRel::trRelEdited(TBaseVirtualTree *Sender, PVirtualNode Node, TColumnIndex Column) { Sender->SortTree(Column,trRel->Header->SortDirection,false); Sender->ScrollIntoView(Node,true,true); Sender->FocusedNode=Node; Sender->Selected[Node]=true; Sender->SetFocus(); } void __fastcall TwinEditRel::trRelEditing(TBaseVirtualTree *Sender, PVirtualNode Node, TColumnIndex Column, bool &Allowed) { Allowed = false; if (!Node) return; // only for safety the program ! //-- Редактируем только названия отношений if (Column!=0) return; Allowed = true; } |