const WM_STARTEDITING=WM_USER+778;
...
procedure WMStartEditing(var Message: TMessage); message WM_STARTEDITING;
...
// при щелчке по ячейки вызывается редактор
procedure TFrame_Form1.WMStartEditing(var Message: TMessage);
var
Node: PVirtualNode;
begin
Node := Pointer(Message.LParam);
VD.EditNode(Node, 0);//нужно вторым параметром передавать индекс колонки
end;
procedure TFrame_Form1.VDChange(Sender: TBaseVirtualTree; Node: PVirtualNode);
begin
with Sender do
begin
if Assigned(Node) and not (tsIncrementalSearching in TreeStates) then
begin
PostMessage(Self.Handle, WM_STARTEDITING, Integer(Node), 0);
{было бы идеально индекс колонки передавать здесь вторым
параметром, но событие OnColumnClick вызывается после onChange}
end;
end;
end;
Virtual Treeview свой редактор отдельно для каждой ячейки
Как узнать по какой ячейке произошел щелчек мышью у компонента TVirtualDrawTree, то есть узнать её колонку?
Ситуация такая: нужно чтоб при нажатии на любую из ячеек сразу появлялся редактор, отдельный для каждой колонки. В сети нашел примеры, но они расчитаны только на одну колонку:
Код:
примеры как с ним работать брал отсюда:архив_статьи примеры
Код:
procedure TFrame_Form1.VDMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
VD.EditNode(VD.FocusedNode, VD.FocusedColumn);
end;
Shift: TShiftState; X, Y: Integer);
begin
VD.EditNode(VD.FocusedNode, VD.FocusedColumn);
end;