Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
ВнизVirtualTree + editors Найти похожие ветки
← →
MadDig (2004-10-28 11:59) [0]Подскажите может кто сталкивался с такой проблемой, у меня после редактировании первой ноды высскакивает Access violation при чем если есть больше одной ноды все OK ошибка выскакивает только тогда когда завершаешь редактирование энтером.
привожу участок кода добавления ноды:
var
data:NodeData;
Node:PVirtualNode;
Pdata:PGridData;
s:String;
begin
with vt do begin
node:=AddChild(nil,Data);
node.CheckType:=LevelToCheckType[RadioGroup1.ItemIndex];
data:=GetNodeData(Node);
Data.ImageIndex:=0;
data.Text2:="Äàòà";
Pdata:=GetNodeData(Node);
Pdata.Value[0]:="";//inttostr(node.Index)+" "+inttostr(VT.GetNodeLevel(node));
Pdata.ValueType[0]:=vtString;
Pdata.ValueType[1]:=LevelToValueType[RadioGroup2.ItemIndex];
Pdata.Value[1]:=DefEdit.text;
if Pdata.ValueType[1] = vtPickString then begin
Pdata.cItems:=DefMemo.Lines;
end;
FocusedNode:=node;
Selected[node]:=true;
Focused;
EditNode(FocusedNode,0);
end;
end;
← →
MetalFan © (2004-10-28 12:08) [1]
> node.CheckType:=LevelToCheckType[RadioGroup1.ItemIndex];
> data:=GetNodeData(Node);> Data.ImageIndex:=0;
> data.Text2:="Äàòà";
> Pdata:=GetNodeData(Node);
> Pdata.Value[0]:="";//inttostr(node.Index)+" "+inttostr(VT.GetNodeLevel(node));
меня интересует выделенный жирным код...
что то ооочень оно странно...
← →
MadDig (2004-10-28 12:19) [2]Data это мой дополнительный тип
Pdata взято с Editors.pas
Ошибка явно не из-за этого визде все работает нормально кроме если нода одна, даже если она одна и завершаешь редактирование не энтером а мышкой например (потеря фокуса эдитора для ноды) все тоже нормально
← →
MadDig (2004-10-28 12:24) [3]только что убрал вобще Data теже проблемы
← →
MetalFan © (2004-10-28 12:43) [4]слишком мало информации...
мне вот чего не ясно:GetNodeData
возвращает указатель на "связанную" с нодом память.
а ты сначала с ней работаешь, как с NodeData, а потом, как с PGridData...
← →
MadDig (2004-10-28 12:52) [5]выкинул Data, таже проблема
var
Node:PVirtualNode;
Pdata:PGridData;
begin
with vt do begin
node:=AddChild(nil,nil);
node.CheckType:=LevelToCheckType[RadioGroup1.ItemIndex];
Pdata:=GetNodeData(Node);
Pdata.Value[0]:="";//inttostr(node.Index)+" "+inttostr(VT.GetNodeLevel(node));
Pdata.ValueType[0]:=vtString;
Pdata.ValueType[1]:=LevelToValueType[RadioGroup2.ItemIndex];
Pdata.Value[1]:=DefEdit.text;
if Pdata.ValueType[1] = vtPickString then begin
Pdata.cItems:=DefMemo.Lines;
end;
EditNode(node,0);
end;
← →
MadDig (2004-10-28 12:58) [6]полмоему понял
забыл еще о
VT.NodeDataSize := SizeOf(PGridData);
было
VT.NodeDataSize := SizeOf(NodeData)
хотя проблема решилась зато новые глюки пошли
← →
MadDig (2004-10-28 13:18) [7]to MetalFan
у тебя есть аська?
← →
MetalFan © (2004-10-28 13:49) [8]да
117783910
кстати... а почему
> VT.NodeDataSize := SizeOf(PGridData);
SizeOf(указатель на ...) = 4 !!!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c