Форум: "Базы";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
ВнизDragDrop в DBTreeList Найти похожие ветки
← →
RDA (2003-02-13 12:13) [0]Обычная таблица (ID,PARENT,KIND,NAZV) где KIND - smallint и определяет тип записи (подразделение-0, отдел-1, сотрудник-2). Свойство DBTreeList DragMode=dmAutomatic. При переносе все работает отлично но есть одно но - нижний уровень в иерархии сотрудник (KIND=2) - как недопустить переноса сотрудника так чтобы его родителем оказался тоже сотрудник. Думаю нужно обрабатывать событие DragOver - но не знаю как правильно это сделать.
← →
RDA (2003-02-14 12:16) [1]Неужели никто не знает ответа. Может неправильно сформулировал.
← →
Соловьев (2003-02-14 12:22) [2]А там разве нет события OnDragOver в Object Inspector???
← →
RDA (2003-02-14 13:46) [3]К данному вопросу - не пойму почему не работает данный код
procedure TfmStr.TreeListDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode, SourceNode : TdxTreeListNode;
begin
try
TargetNode := TreeList.GetNodeAt(X,Y);
SourceNode := TreeList.FocusedNode;
if TargetNode<>nil then
begin
if SourceNode.ImageIndex=0 then Accept:=False;
if (SourceNode.ImageIndex=1) and (TargetNode.ImageIndex=0) then Accept:=True
else Accept:=False;
if (SourceNode.ImageIndex in [2,3]) and (TargetNode.ImageIndex in [0,1]) then Accept:=True
else Accept:=False;
end;
except
end;
end;
← →
MBo (2003-02-14 15:07) [4]я не знаю, что кроется под разными ImageIndex, но такое впечатление, что логика неверна -
>if SourceNode.ImageIndex=0 then Accept:=False;
этот результат дальше игнорируется
>if (SourceNode.ImageIndex=1) and (TargetNode.ImageIndex=0) then Accept:=True
else Accept:=False;
и этот тоже
if (SourceNode.ImageIndex in [2,3]) and (TargetNode.ImageIndex in [0,1]) then Accept:=True
else Accept:=False
только этот учитывается.
объедини логические выражения в одно либо вставь выход после каждого False
← →
Sheriff (2003-02-14 16:06) [5]он пытается по картинкам определить сотрудник это или отдел.
← →
RDA (2003-02-14 18:40) [6]Переписал и снова глюк
procedure TfmStr.TreeListDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode, SourceNode : TdxTreeListNode;
begin
TargetNode:=TreeList.GetNodeAt(X,Y);
SourceNode:=TreeList.FocusedNode;
if TargetNode<>nil then
case TargetNode.ImageIndex of
0 : if SourceNode.ImageIndex in [1,2,3] then Accept:=True;
1 : if SourceNode.ImageIndex in [2,3] then Accept:=True;
2 : if SourceNode.ImageIndex in [2,3] then Accept:=False;
3 : if SourceNode.ImageIndex in [2,3] then Accept:=False;
else
Accept:=True;
end;
end;
Не пойму почему SourceNode.ImageIndex=0 спокойно переноситься в
TargetNode.ImageIndex=0
← →
RDA (2003-02-15 08:16) [7]Последний вариант
procedure TfmStr.TreeListDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode, SourceNode : TdxTreeListNode;
begin
TargetNode:=TreeList.GetNodeAt(X,Y);
SourceNode:=TreeList.FocusedNode;
if TargetNode<>nil then
case TargetNode.ImageIndex of
0 : if SourceNode.ImageIndex in [1,2,3] then Accept:=True;
1 : if SourceNode.ImageIndex in [2,3] then Accept:=True;
2 : Accept:=False;
3 : Accept:=False;
end;
end;
Тот же глюк TargetNode.ImageIndex=0 становиться родительским для SourceNode.ImageIndex=0.
← →
RDA (2003-02-15 13:28) [8]Переписал снова,
procedure TfmStr.TreeListDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
var
TargetNode, SourceNode : TdxTreeListNode;
begin
TargetNode:=TreeList.GetNodeAt(X,Y);
SourceNode:=TreeList.FocusedNode;
if (TargetNode<>nil) and (SourceNode.ImageIndex>0) then
case TargetNode.ImageIndex of
0 : if SourceNode.ImageIndex in [1,2,3] then Accept:=True;
1 : if SourceNode.ImageIndex in [2,3] then Accept:=True;
2 : Accept:=False;
3 : Accept:=False;
end
else Accept:=False;
end;
Теперь глюк при переносе SourceNode.ImageIndex=1 в TargetNode.ImageIndex=0;
Вообщем не знаю в чем проблема. Буду очень признателен за помощь.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c