Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.57 MB
Время: 0.038 c
1-17100
UDS
2003-02-25 18:34
2003.03.06
Как задать массив, если первоначально его длина неизвестна?


14-17391
iusup
2003-02-19 01:33
2003.03.06
Нужна прога руссификации InstallShield Express


8-17206
trotski
2002-11-26 06:03
2003.03.06
DirectX


9-16843
Ach_Den
2002-09-13 10:14
2003.03.06
Алгоритм движения воды?


8-17201
_toltec
2002-11-24 02:17
2003.03.06
GIF





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский