ruzik писал(а):
Для этого нужен языковой пакет, которого в Хиазме нет (я прям Пушкин)LainX писал(а):
А словарик в TXT формате уже не в моде?Зачем? Есть же ЗАПОЛНЕННЫЙ СПИСОК у ComboBox'а - по нему и проводим поиск значений.
Идея miver'а - то, что надо! ...только к ComboBox'у надо doSelectLength прикрутить - во в это собственно, и загвоздка. Поиск нужного значения сделать не сложно и стандартными средствами HiAsm'а.
P.S. В Win32 SDK в разделе ComboBox Messages есть сообщение CB_SETEDITSEL - оно и выделяет текст в Edit'е. Надо помедитировать...
------------ Дoбавленo в 22.38:
...помедитировал
Вот готовый вариант :
Add(ComboBox,11468122,266,203)
{
Left=20
Top=10
Width=160
Height=21
Strings=#1:А|3:Абв|4:Абвг|3:123|3:А12|9:Челябинск|5:Челси|8:Златоуст|4:Злат|4:Миас|9:Миоглобин|11:Миогемотома|7:чел;гма|
Point(Handle)
Point(EditText)
Point(doEditText)
Point(onKeyUp)
link(onKeyUp,13912476:doValue,[(310,223)(310,184)(91,184)(91,377)])
}
Add(InlineCode,1150256,413,301)
{
@Hint=#31:Выделяем текс в Edit ComboBox'а|
WorkPoints=#8:doSelect|
DataPoints=#8:CBHandle|8:StartPos|6:EndPos|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug, Windows, Messages;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|9: public|43: CBHandle, StartPos, EndPos : THI_Event;|52: procedure doSelect(var _Data:TData; Index:WORD);|5: end;|0:|14:implementation|0:|60:procedure THiAsmClass.doSelect(var _Data:TData; Index:WORD);|3:var|10: h:HWND;|14: l:cardinal;|5:begin|39: h:= ReadInteger(_Data,CBHandle,0);|77: l:= MakeLong(ReadInteger(_Data,StartPos,0),ReadInteger(_Data,EndPos,3));|38: SendMessage(h,CB_SETEDITSEL,0,l);|4:end;|0:|4:end.|
link(CBHandle,11468122:Handle,[(419,283)(286,283)])
link(StartPos,11533372:Result,[(426,273)(564,273)(564,345)(580,345)])
link(EndPos,4770968:Result,[(433,289)(475,289)(475,345)(517,345)])
}
Add(ArrayFind,6918248,266,371)
{
Partial=0
PColor(Array,16776960)
link(onFind,3223072:doCompare,[])
link(Array,3808130:Var2,[])
link(Index,5718283:Value,[(279,351)(286,351)])
link(Value,4073192:Var2,[(286,355)(293,355)])
}
Add(Memory,5718283,280,303)
{
Default=Integer(0)
}
Add(ArrayRW,6882889,371,371)
{
PColor(Array,16776960)
link(onRead,9288030:doValue,[])
link(Array,3808130:Var3,[(377,341)])
}
Add(GetDataEx,3808130,266,336)
{
PColor(Data,16776960)
link(Data,11468122:Array,[])
}
Add(Memory,9288030,427,371)
{
link(onData,6472888:doEvent1,[])
}
Add(Length,4770968,511,301)
{
@Hint=#21:Длинна большей строки|
link(Str,9288030:Value,[(517,289)(488,289)(488,411)(433,411)])
}
Add(Length,11533372,574,301)
{
@Hint=#21:Длинна меньшей строки|
link(Str,4073192:Var3,[(580,264)])
}
Add(GetDataEx,4073192,287,259)
{
link(Data,11468122:EditText,[])
}
Add(Hub,6472888,469,371)
{
OutCount=4
link(onEvent1,4770968:doLength,[(499,377)(499,307)])
link(onEvent2,11533372:doLength,[(516,384)(552,345)(552,307)])
link(onEvent3,11468122:doEditText,[(494,391)(494,364)(245,364)(245,251)])
link(onEvent4,1150256:doSelect,[(506,398)(506,353)(400,353)(400,307)])
}
Add(If_else,3223072,315,371)
{
Type=5
Op2=Integer(-1)
link(onTrue,6882889:doRead,[])
link(Op1,6918248:ItemIdx,[(321,359)(307,359)(307,415)(272,415)])
}
Add(If_else,13903520,161,371)
{
Type=2
Op2=Integer(48)
link(onTrue,7577364:doCompare,[])
link(Op1,9125783:Var2,[])
}
Add(If_else,7577364,210,371)
{
Type=1
Op2=Integer(90)
link(onTrue,6918248:doFind,[])
link(Op1,9125783:Var3,[(216,359)])
}
Add(Memory,13912476,105,371)
{
link(onData,13903520:doCompare,[])
}
Add(GetDataEx,9125783,161,354)
{
Angle=3
link(Data,13912476:Value,[(150,359)(150,409)(111,409)])
}
Всегда я так - сначала задам вопрос, а потом сам на него отвечу
Если кому не лень - потестите схемку.
-= Всем респект =-
P.S. Как-бы теперь это все в один компонент запихнуть и все ComboBox'ы своего проэкта заменить?