flint2 писал(а):
По мне, так проще и красивее!Но IC выполнен не технично. Зачем столько телодвижений, да еще и с перебором списка, когда есть специальное для этого сообщение, которое само ищет нужный индекс?
--- Добавлено в 2020-07-27 13:32:48
Вот моя схема на IC
Схема
Add(MainForm,2953706,161,105)
{
Position=1
}
Add(ListBox,4984454,231,105)
{
Left=40
Top=15
Width=190
Height=145
Strings=#5:xdgxf|5:dfdfg|7:dfgdgdg|6:dgfdgd|8:dffdfgdf|10:dfgdfgdfgd|12:dgfdfgfdfgfd|8:gdfgdfgd|10:gdfgdfgdfg|10:dfgdgdgfdg|9:fgdfgfdgd|11:dfgdgdffgfd|9:dfgdfgdfg|10:dfgdfgdfgd|10:dfgdfgdfgd|7:dfgdddd|
Point(onMouseMove)
Point(doSelect)
Point(PHandle)
Point(MouseX)
Point(MouseY)
link(onMouseMove,7309271:doGetItemString,[(284,125)(284,83)(214,83)(214,167)])
}
Add(InlineCode,7309271,252,161)
{
WorkPoints=#15:doGetItemString|
EventPoints=#15:onGetItemString|
DataPoints=#14:ListBoxPHandle|1:X|1:Y|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|38:uses kol,Share,Debug,WIndows,Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|18: X,Y: THI_Event;|29: ListBoxPHandle: THI_Event;|30: onGetItemString: THI_Event;|57: procedure doGetItemString(var Data:TData; Index:word);|3: |5: end;|0:|14:implementation|0:|38:procedure THiAsmClass.doGetItemString;|4:var |19: LBCtrl: PControl;|5:begin|52: LBCtrl:= PControl(ToIntegerEvent(ListBoxPHandle));|120: _hi_OnEvent(onGetItemString, LBCtrl.Perform(LB_ITEMFROMPOINT, 0 , ToIntegerEvent(Y) shl 16 + ToIntegerEvent(X))); |4:end;|0:|4:end.|
link(onGetItemString,4984454:doSelect,[(291,167)(291,90)(221,90)(221,139)])
link(ListBoxPHandle,4984454:PHandle,[])
link(X,4984454:MouseX,[])
link(Y,4984454:MouseY,[])
}