Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#1: 2011-10-24 10:41:05 ЛС | профиль | цитата
Нужен мозговой штурм !

В ListBox выделить строку и кнопками двигать её вверх и вниз.
Add(MainForm,2953706,84,91)
{
Width=152
Height=183
Position=1
}
Add(ListBox,16467245,133,84)
{
Left=2
Top=15
Width=96
Height=120
Strings=#8:Строка 0|8:Строка 1|8:Строка 2|8:Строка 3|8:Строка 4|8:Строка 5|
Point(String)
Point(Index)
}
Add(Button,8235946,203,77)
{
Left=105
Top=35
Width=20
Height=30
Font=[Webdings,10,1,0,2]
Caption="5"
}
Add(Button,3120776,203,113)
{
Left=105
Top=65
Width=20
Height=30
Font=[Webdings,10,1,0,2]
Caption="6"
}


Стыдно, но у самого никаких идей

------------ Дoбавленo в 10.41:
За самое оригинальное решение награда 50h
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 3889
Рейтинг: 362
#2: 2011-10-24 10:49:36 ЛС | профиль | цитата
code_25536.txt
карма: 1

1
файлы: 1code_25536.txt [4.3KB] [157]
Голосовали:Tad
Ответов: 758
Рейтинг: 112
#3: 2011-10-24 11:15:14 ЛС | профиль | цитата
code_25537.txt
карма: 1

1
файлы: 1code_25537.txt [2KB] [206]
Голосовали:Tad
Ответов: 3889
Рейтинг: 362
#4: 2011-10-24 13:22:22 ЛС | профиль | цитата
[offtop]nesco, да, ещё больше помог бы doSwap в ListBox, и doMove.[/offtop]
карма: 1

0
Ответов: 3889
Рейтинг: 362
#5: 2011-10-24 13:38:54 ЛС | профиль | цитата
nesco писал(а):
кто-нибудь что-то проще придумает

Сейчас сам Tad на одном IC как выложит...
карма: 1

0
Ответов: 8926
Рейтинг: 823
#6: 2011-10-24 13:59:37 ЛС | профиль | цитата
Tad, ой, блин, поздно увидел code_25540.txt
карма: 19

1
файлы: 1code_25540.txt [4.2KB] [183]
Голосовали:Tad
Разработчик
Ответов: 26155
Рейтинг: 2127
#7: 2011-10-24 14:10:00 ЛС | профиль | цитата
Вот вам IC



Add(MainForm,4720280,231,203)
{
Width=424
}
Add(ListBox,6857207,294,182)
{
Left=10
Top=5
Width=320
Height=205
Strings=#7:1111111|7:2222222|7:3333333|7:4444444|7:5555555|7:6666666|
Point(Index)
Point(String)
Point(doSelect)
}
Add(Button,4006544,231,259)
{
Left=340
Top=5
TabOrder=-1
Caption="Up"
link(onClick,6836872:doUp,[])
}
Add(Button,6590722,231,294)
{
Left=340
Top=30
TabOrder=-1
Caption="Down"
link(onClick,6836872:doDown,[(279,300)(279,272)])
}
Add(InlineCode,6836872,294,259)
{
WorkPoints=#4:doUp|6:doDown|
EventPoints=#6:onText|8:onSelect|
DataPoints=#4:Text|3:Idx|0:|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|23: StrList: PStrList;|9: public|10: Text,|9: Idx,|12: onText,|25: onSelect: THI_Event;|24: constructor Create;|34: destructor Destroy; override;|49: procedure doUp(var _Data:TData; Index:word);|56: procedure doDown(var _Data:TData; Index:word); |5: end;|0:|14:implementation|0:|31:constructor THiAsmClass.Create;|5:begin|12: inherited;|24: StrList := NewStrList;|4:end;|0:|31:destructor THiAsmClass.Destroy;|5:begin|15: StrList.free;|12: inherited;|4:end;|0:|27:procedure THiAsmClass.doUp;|3:var|16: idx1: integer;|5:begin|30: idx1 := ToIntegerEvent(Idx);|25: if idx1 <= 0 then exit;|42: StrList.text := ReadString(_Data, Text);|31: StrList.Swap(idx1, idx1 - 1);|36: _hi_onEvent(onText, StrList.text);|37: _hi_onEvent(onSelect, idx1 - 1); |4:end;|0:|34:procedure THiAsmClass.doDown; |3:var|16: idx1: integer;|5:begin|30: idx1 := ToIntegerEvent(Idx);|42: StrList.text := ReadString(_Data, Text);|56: if (idx1 > StrList.Count - 2) or (idx1 < 0) then exit;|31: StrList.Swap(idx1, idx1 + 1);|36: _hi_onEvent(onText, StrList.text);|35: _hi_onEvent(onSelect, idx1 + 1); |4:end;|0:|4:end.|
link(Text,6857207:Text,[])
link(onText,6857207:doText,[(341,265)(341,170)(281,170)(281,209)])
link(onSelect,6857207:doSelect,[(352,272)(352,163)(272,163)(272,230)])
link(Idx,6857207:Index,[(307,247)(321,247)])
}

карма: 22

1
Голосовали:Tad
Ответов: 8926
Рейтинг: 823
#8: 2011-10-24 14:10:50 ЛС | профиль | цитата
Проще выдумывать? (на +одном компоненте (не IC) )
карма: 19

0
Разработчик
Ответов: 26155
Рейтинг: 2127
#9: 2011-10-24 14:11:50 ЛС | профиль | цитата
Леонид писал(а):
ой, блин, поздно увидел

Ой, блин, вот это писец, так писец. Индусы отдыхают и нервно курят в сторонке

карма: 22

0
Ответов: 8926
Рейтинг: 823
#10: 2011-10-24 14:24:16 ЛС | профиль | цитата
nesco, зато нет картинки:
error123.jpg
карма: 19

0
файлы: 1error123.jpg [27.4KB] [274]
Ответов: 758
Рейтинг: 112
#11: 2011-10-24 14:42:20 ЛС | профиль | цитата
Мой оптимизированый вариант
code_25543.txt
карма: 1

1
файлы: 1code_25543.txt [2KB] [211]
Голосовали:Tad
Разработчик
Ответов: 26155
Рейтинг: 2127
#12: 2011-10-24 15:29:09 ЛС | профиль | цитата
miver писал(а):
Мой оптимизированый вариант

Ага, используем кнопки для ввода значения, понятно. Хорошо, пойду по такому принципу свой оптимизировать
------------ Дoбавленo в 15.29:
Вот, нате вам еще проще вариант



Add(MainForm,4720280,133,252)
{
Width=424
}
Add(StrList,14304313,343,343)
{
Point(doSwap)
Point(Idx2)
link(Str,6857207:Text,[(349,277)(195,277)])
link(Idx2,5270513:Var3,[(363,265)])
}
Add(ListBox,6857207,189,182)
{
Left=10
Top=5
Width=320
Height=205
Strings=#7:1111111|7:2222222|7:3333333|7:4444444|7:5555555|7:6666666|
Point(Index)
Point(String)
Point(doSetFocus)
Point(doSelect)
}
Add(Button,4006544,126,308)
{
Left=340
Top=5
TabOrder=-1
Caption="Up"
Data=Integer(-1)
link(onClick,7081640:doWork1,[(172,314)])
}
Add(Button,6590722,126,364)
{
Left=340
Top=30
TabOrder=-1
Caption="Down"
Data=Integer(1)
link(onClick,7081640:doWork2,[])
}
Add(Hub,10141084,238,364)
{
OutCount=4
link(onEvent1,14304313:doText,[])
link(onEvent2,14304313:doSwap,[(298,377)(298,391)])
link(onEvent3,9938884:doData,[(285,384)(285,419)])
link(onEvent4,6857207:doSelect,[(273,391)(273,453)(398,453)(398,165)(169,165)(169,237)])
}
Add(DoData,9938884,343,413)
{
link(onEventData,6857207:doText,[(389,419)(389,172)(175,172)(175,209)])
link(Data,14304313:Text,[])
}
Add(GetDataEx,5270513,210,260)
{
link(Data,6857207:Index,[])
}
Add(MathParse,233075,189,364)
{
DataCount=3
MathStr="((%3 + %1) >= 0) * ((%3 + %1) < %2) * (%3 + %1) + ((%3 + %1) >= %2) * (%2 - 1) "
ResultType=0
link(onResult,10141084:doEvent1,[])
link(X2,6857207:Count,[])
link(X3,5270513:Var2,[(209,316)(216,316)])
}
Add(HubEx,7081640,168,364)
{
link(onEvent,233075:doCalc,[])
}


карма: 22

0
Ответов: 8926
Рейтинг: 823
#13: 2011-10-24 16:33:58 ЛС | профиль | цитата
nesco, а так не пытали code_25544.txt
карма: 19

1
файлы: 1code_25544.txt [1.8KB] [174]
Голосовали:Tad
Ответов: 758
Рейтинг: 112
#14: 2011-10-24 16:40:31 ЛС | профиль | цитата
code_25545.txt

Если неучитывать, что такое количество элементов для практики не имеет никакого смысла, то мой вариант справляется на ура
карма: 1

1
файлы: 1code_25545.txt [2.3KB] [210]
Голосовали:foksov
Разработчик
Ответов: 26155
Рейтинг: 2127
#15: 2011-10-24 16:47:48 ЛС | профиль | цитата
Ладно, к черту -- мои схемы простенкие, но неэффективные. Схема miver-a лучше, он заработал честно свои 50 хисмов
карма: 22

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