Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.06;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
3-16932
Сергей
2003-02-16 01:39
2003.03.06
clientdataset


7-17421
ded
2003-01-09 22:41
2003.03.06
Содержимое произвольной ячейки памяти


1-17010
Rina
2003-02-24 23:50
2003.03.06
Круглая кнопка


7-17415
Alexsandr (GEG)
2003-01-09 10:01
2003.03.06
Как узнать и изменить настройки виндов


1-17189
Vadim840
2003-02-24 12:46
2003.03.06
Поиск файла