Konst, а у тебя проц Intel Duo
Этот топик читают: Гость
Разработчик
Ответов: 26072
Рейтинг: 2122
|
|||
карма: 22 |
|
Ответов: 1328
Рейтинг: 69
|
|||
нет aмd 1,9 Ггц, а что это влияет как то?
|
|||
карма: 2 |
|
Администрация
Ответов: 15294
Рейтинг: 1518
|
|||
под Linux-ом примеры работают криво - иконок нет и курсор при перетаскивании исчезает
|
|||
карма: 26 |
|
Разработчик
Ответов: 26072
Рейтинг: 2122
|
|||
Konst писал(а): нет aмd 1,9 Ггц, а что это влияет как то?Похоже, что влияет. На работе у меня другой проц, и совсем по-другому вел себя пример. Dilma писал(а): примеры работают криво - иконок нет и курсор при перетаскивании исчезаетЧто совсем не радует |
|||
карма: 22 |
|
Ответов: 1328
Рейтинг: 69
|
|||
nesco, при работе твоего примера, вообще нагрузки на процессор нет, сейчас гляну на Intel Duo
|
|||
карма: 2 |
|
Разработчик
Ответов: 26072
Рейтинг: 2122
|
|||
Konst писал(а): при работе твоего примера, вообще нагрузки на процессор нетИ не будет, курсоры меняются в другой очереди событий и только одним событием управления, а вызывающий процесс сразу же освобождается |
|||
карма: 22 |
|
Ответов: 1328
Рейтинг: 69
|
|||
Intel Duo т2300 1,6 Ггц оба примера работают нормально, нагрузки на проц нет. Может в винде дело, у меня ХР sp2 на обоих
|
|||
карма: 2 |
|
Разработчик
Ответов: 26072
Рейтинг: 2122
|
|||
Konst писал(а): меня ХР sp2Может быть, на работе у меня XP SP2, дома -- XP SP3 |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
Intel C2D E6750, Win7x64 - полёт нормальный (акромя курсоров )
|
|||
карма: 1 |
|
Разработчик
Ответов: 26072
Рейтинг: 2122
|
|||
Еще раз прогнал -- не хочет схема без таймера у меня работать с курсорами ни из-под какого компилятора. Вот так вот.
Проц у меня -- Intel C2D E8400. Винда -- WinXP SP3 |
|||
карма: 22 |
|
Ответов: 2203
Рейтинг: 675
|
|||
Честное слово у меня и этот пример работает нормально code_16930.txt
Отоброжается курсор No и HandPoint при перетаскивании как положенно. AMD Athlon XPSP3 (оба компилятора) |
|||
карма: 11 |
| ||
файлы: 1 | code_16930.txt [3.5KB] [263] |
Разработчик
Ответов: 26072
Рейтинг: 2122
|
|||
sla8a писал(а): Отоброжается курсор No и HandPointГы. А я про что писал. И у меня No и HandPoint по-умолчанию работают без всяких телодвижений по их установке. А ты попробуй, замени курсоры на 0 и 25 и посмотри. |
|||
карма: 22 |
|
Ответов: 2203
Рейтинг: 675
|
|||
nesco, при попытке поменять курсоры на 0 и 25 получил кукишь. Но есть выход удаляем из hiTreeViewTrain.pas все упоминания о курсоре после DRAG DROP и 0 и 25 устанавливаются.
|
|||
карма: 11 |
|
Разработчик
Ответов: 26072
Рейтинг: 2122
|
|||
sla8a писал(а): при попытке поменять курсоры на 0 и 25 получил кукишьА я тебе про что тут талдонил страницу назад, млин... туго доходит. А то -- версия не та, стянуть забыл, ага. sla8a писал(а): удаляем из hiTreeViewTrain.pas все упоминания о курсоре после DRAG DROP и 0 и 25 устанавливаютсяТы не умничай, ты пальцем покажи |
|||
карма: 22 |
|
Ответов: 2203
Рейтинг: 675
|
|||
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 |
|