Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26072
Рейтинг: 2122
#16: 2010-02-15 22:20:32 ЛС | профиль | цитата
Konst, а у тебя проц Intel Duo
карма: 22

0
Ответов: 1328
Рейтинг: 69
#17: 2010-02-15 22:36:20 ЛС | профиль | цитата
нет aмd 1,9 Ггц, а что это влияет как то?
карма: 2

0
Администрация
Ответов: 15294
Рейтинг: 1518
#18: 2010-02-15 22:39:32 ЛС | профиль | цитата
под Linux-ом примеры работают криво - иконок нет и курсор при перетаскивании исчезает
карма: 26
0
Разработчик
Ответов: 26072
Рейтинг: 2122
#19: 2010-02-15 22:44:52 ЛС | профиль | цитата
Konst писал(а):
нет aмd 1,9 Ггц, а что это влияет как то?

Похоже, что влияет. На работе у меня другой проц, и совсем по-другому вел себя пример.
Dilma писал(а):
примеры работают криво - иконок нет и курсор при перетаскивании исчезает

Что совсем не радует
карма: 22

0
Ответов: 1328
Рейтинг: 69
#20: 2010-02-15 22:48:30 ЛС | профиль | цитата
nesco, при работе твоего примера, вообще нагрузки на процессор нет, сейчас гляну на Intel Duo
карма: 2

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#21: 2010-02-15 22:51:27 ЛС | профиль | цитата
Konst писал(а):
при работе твоего примера, вообще нагрузки на процессор нет

И не будет, курсоры меняются в другой очереди событий и только одним событием управления, а вызывающий процесс сразу же освобождается
карма: 22

0
Ответов: 1328
Рейтинг: 69
#22: 2010-02-15 23:34:26 ЛС | профиль | цитата
Intel Duo т2300 1,6 Ггц оба примера работают нормально, нагрузки на проц нет. Может в винде дело, у меня ХР sp2 на обоих
карма: 2

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#23: 2010-02-15 23:45:17 ЛС | профиль | цитата
Konst писал(а):
меня ХР sp2

Может быть, на работе у меня XP SP2, дома -- XP SP3
карма: 22

0
Ответов: 5446
Рейтинг: 323
#24: 2010-02-16 00:10:15 ЛС | профиль | цитата
Intel C2D E6750, Win7x64 - полёт нормальный (акромя курсоров )
карма: 1

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#25: 2010-02-16 00:23:35 ЛС | профиль | цитата
Еще раз прогнал -- не хочет схема без таймера у меня работать с курсорами ни из-под какого компилятора. Вот так вот.
Проц у меня -- Intel C2D E8400. Винда -- WinXP SP3
карма: 22

0
Ответов: 2203
Рейтинг: 675
#26: 2010-02-16 01:56:57 ЛС | профиль | цитата
Честное слово у меня и этот пример работает нормально code_16930.txt
Отоброжается курсор No и HandPoint при перетаскивании как положенно.
AMD Athlon XPSP3 (оба компилятора)

карма: 11

0
файлы: 1code_16930.txt [3.5KB] [263]
Разработчик
Ответов: 26072
Рейтинг: 2122
#27: 2010-02-16 02:07:10 ЛС | профиль | цитата
sla8a писал(а):
Отоброжается курсор No и HandPoint

Гы. А я про что писал. И у меня No и HandPoint по-умолчанию работают без всяких телодвижений по их установке. А ты попробуй, замени курсоры на 0 и 25 и посмотри.
карма: 22

0
Ответов: 2203
Рейтинг: 675
#28: 2010-02-16 02:25:14 ЛС | профиль | цитата
nesco, при попытке поменять курсоры на 0 и 25 получил кукишь. Но есть выход удаляем из hiTreeViewTrain.pas все упоминания о курсоре после DRAG DROP и 0 и 25 устанавливаются.
карма: 11

0
Разработчик
Ответов: 26072
Рейтинг: 2122
#29: 2010-02-16 02:36:30 ЛС | профиль | цитата
sla8a писал(а):
при попытке поменять курсоры на 0 и 25 получил кукишь

А я тебе про что тут талдонил страницу назад, млин... туго доходит. А то -- версия не та, стянуть забыл, ага.
sla8a писал(а):
удаляем из hiTreeViewTrain.pas все упоминания о курсоре после DRAG DROP и 0 и 25 устанавливаются

Ты не умничай, ты пальцем покажи
карма: 22

0
Ответов: 2203
Рейтинг: 675
#30: 2010-02-16 03:03:56 ЛС | профиль | цитата
nesco писал(а):
А я тебе про что тут талдонил страницу назад

Да работала у меня моя схема. Файл hiTreeViewTrain.pas менялся с того времени сколько раз одному Dilma известно.
nesco писал(а):
А то -- версия не та, стянуть забыл

Это исключено: Dilma правил я сразу тестил.
Старый hiTreeViewTrain.pas (13592b)
//---------------------------- DRAG DROP ---------------------------------------

procedure THITreeViewTrain._OnBeginDrag( Sender: PControl; Item: THandle );
begin
FDrag := true;
Control.Cursor := crUpArrow;
Control.TVSelected := Item;
FLastSelect := 0;
end;

procedure THITreeViewTrain._onMouseMove;
var c,where:cardinal;
dt:TData;
begin
inherited;
c := Control.TVItemAtPos(Mouse.X, Mouse.Y, where);
if not FDrag or(FLastSelect = c) or (c = 0) then exit;
Control.TVItemDropHighlighted[FLastSelect] := false;
dt := PData(Control.TVItemData[c])^;
_ReadData(dt, _data_DropAccept);
if ToInteger(dt) <> 0 then
begin
Control.TVItemDropHighlighted[c] := true;
Control.Cursor := crUpArrow;
FLastSelect := c;
end
else
begin
Control.Cursor := 39;
FLastSelect := 0;
end;
end;

procedure THITreeViewTrain._onMouseUp;
var c,where,sel:cardinal;
d,fdData;
pd:TData;
i:integer;
begin
inherited;
if not FDrag then exit;

c := FLastSelect;
if c <> 0 then
begin
sel := Control.TVSelected;
d := Control.TVItemData[sel];
pd := PData(Control.TVItemData[c])^;
getItem(pd, _prop_IDIndex);

fd := d;
i := 0;
while fd <> nil do
begin
if i = _prop_ParentIDIndex then
begin
fd.data_type := pd.data_type;
fd.idata := pd.idata;
fd.sdata := pd.sdata;
fd.rdata := pd.rdata;
break;
end;
inc(i);
fd := fd.ldata;
end;
AddNode(d^);
_hi_onEvent_(_event_onDrop, d^);
FClear := true;
Control.TVDelete(sel);
FClear := false;
end;
Control.TVItemDropHighlighted[FLastSelect] := false;
FLastSelect := 0;
FDrag := false;
Control.Cursor := crDefault;
end;

end.
Поновее hiTreeViewTrain.pas (16293b)
//---------------------------- DRAG DROP ---------------------------------------

procedure THITreeViewTrain._OnBeginDrag( Sender: PControl; Item: THandle );
begin
FDrag := true;
Control.Cursor := crHandPoint;
Control.TVSelected := Item;
FLastSelect := 0;
end;

procedure THITreeViewTrain._onMouseMove;
var c,where:cardinal;
dt:TData;
begin
inherited;
c := Control.TVItemAtPos(Mouse.X, Mouse.Y, where);
if not FDrag or(FLastSelect = c) or (c = 0) then exit;
Control.TVItemDropHighlighted[FLastSelect] := false;
dt := PData(Control.TVItemData[c])^;
_ReadData(dt, _data_DropAccept);
if ToInteger(dt) <> 0 then
begin
Control.TVItemDropHighlighted[c] := true;
Control.Cursor := crHandPoint;
FLastSelect := c;
end
else
begin
Control.Cursor := crNo;
FLastSelect := 0;
end;
end;

procedure THITreeViewTrain._onMouseUp;
var c,where,sel,lastNode:cardinal;
d,fdData;
pd:TData;
i:integer;
procedure moveNodes(fromNode, toNode:cardinal);
var n:cardinal;
p:cardinal;
begin
p := Control.TVItemChild[fromNode];
while p > 0 do
begin
n := Control.TVInsert(toNode, 0, Control.TVItemText[p]);
Control.TVItemData[n] := Control.TVItemData[p];
Control.TVItemData[p] := 0;
Control.TVItemImage[n] := Control.TVItemImage[p];
Control.TVItemSelImg[n] := Control.TVItemImage[p];
moveNodes(p, n);
p := Control.TVItemNext[p];
end;
end;
function isNodeCross(fromNode, toNode:cardinal):boolean;
var p:cardinal;
begin
Result := True;
if fromNode = toNode then exit;

p := Control.TVItemChild[fromNode];
while p > 0 do
begin
if isNodeCross(p, toNode) then exit;
p := Control.TVItemNext[p];
end;

Result := false;
end;
begin
inherited;
if not FDrag then exit;

c := FLastSelect;
if(c <> 0)and not isNodeCross(Control.TVSelected, c) then
begin
sel := Control.TVSelected;
d := Control.TVItemData[sel];
pd := PData(Control.TVItemData[c])^;
getItem(pd, _prop_IDIndex);

fd := d;
i := 0;
while fd <> nil do
begin
if i = _prop_ParentIDIndex then
begin
fd.data_type := pd.data_type;
fd.idata := pd.idata;
fd.sdata := pd.sdata;
fd.rdata := pd.rdata;
break;
end;
inc(i);
fd := fd.ldata;
end;
AddNodeAt(c, d^, @lastNode);
moveNodes(sel, lastNode);
_hi_onEvent_(_event_onDrop, d^);
FClear := true;
Control.TVDelete(sel);
FClear := false;
end;
Control.TVItemDropHighlighted[FLastSelect] := false;
FLastSelect := 0;
FDrag := false;
Control.Cursor := crDefault;
end;

end.
карма: 11

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)