tig-rrr писал(а):
Хотелось-бы более правильный вариантКак вариант
Add(InlineCode,3684175,532,273)
{
WorkPoints=#16:doSetValueByName|20:doSetFocusByName |17:doSetFocusByValue|13:doClickByName|14:doClickByValue|16:doSelectByValue |
EventPoints=#10:onSetValue|10:onSetFocus|7:onClick|8:onSelect|
DataPoints=#2:ph|4:name|5:value|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|18: ph: THI_Event;|20: name: THI_Event;|21: value: THI_Event;|26: onSetValue: THI_Event;|26: onSetFocus: THI_Event;|27: onClick: THI_Event; |28: onSelect: THI_Event; |0:|57: procedure doSetValueByName(var dt:TData; index:word);|61: procedure doSetFocusByName(var dt:TData; index:word); |58: procedure doSetFocusByValue(var dt:TData; index:word);|58: procedure doClickByName(var dt:TData; index:word); |64: procedure doClickByValue(var dt:TData; index:word); |56: procedure doSelectByValue(var dt:TData; index:word);|5: end;|0:|14:implementation|0:|4:type|31: TKOLWebBrowser = PWebBrowser;|31: PKOLWebBrowser = PWebBrowser;|0:|74:function FindIdx(pc: PControl; val: string; FindByName: boolean): Integer;|3:var|13: i: integer;|5:begin|15: Result := -1;|85: for i := 0 to PKOLWebBrowser(pc).OleObject.Document.all.tags('input').length - 1 do|22: if FindByName then|13: begin |88: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).name = val then|11: begin|20: Result := i;|15: break; |10: end;|7: end|12: else |9: begin|89: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).value = val then|11: begin|20: Result := i;|15: break; |10: end;|8: end;|6:end; |0:|39:procedure THiAsmClass.doSetValueByName;|3:var|15: pc: PControl;|19: txt, val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|33: val := ReadString(dt, value); |32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |81: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).value := val;|26: _hi_onEvent(onSetValue);|4:end;|0:|39:procedure THiAsmClass.doSetFocusByName;|3:var|15: pc: PControl;|14: txt: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).focus;|26: _hi_onEvent(onSetFocus);|4:end;|0:|40:procedure THiAsmClass.doSetFocusByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|33: val := ReadString(dt, value); |33: idx := FindIdx(pc, val, false);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).focus;|26: _hi_onEvent(onSetFocus);|4:end;|0:|36:procedure THiAsmClass.doClickByName;|3:var|15: pc: PControl;|14: txt: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, name);|32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|0:|37:procedure THiAsmClass.doClickByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|33: val := ReadString(dt, value); |33: idx := FindIdx(pc, val, false);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|0:|38:procedure THiAsmClass.doSelectByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|33: val := ReadString(dt, value); |80: PKOLWebBrowser(pc).OleObject.Document.all.tags('select').Item(0).value := val;|24: _hi_onEvent(onSelect);|4:end;|0:|4:end.|
link(ph,15563951:PHandle,[])
}
Add(MainForm,5793487,616,161)
{
Width=866
Height=772
Caption="Показания воды"
}
Add(MT_AddData,3134972,266,273)
{
link(onAdd,3095249:doWork2,[])
link(Data1,2346352:Value,[(272,264)(237,264)])
link(Data2,11851964:Value,[])
}
Add(MT_AddData,1475487,378,308)
{
link(onAdd,3095249:doWork3,[(445,314)])
link(Data1,2469868:Value,[])
link(Data2,14208353:Value,[(391,295)(426,295)])
}
Add(HubEx,3095249,441,273)
{
link(onEvent,3684175:doSetValueByName,[])
}
Add(DoData,5921312,378,406)
{
Data=String(Продолжить)
link(onEventData,3684175:doClickByValue,[(493,412)(493,307)])
AddHint(-30,38,88,13,Data)
}
Add(DoData,5764955,266,343)
{
Data=String(uao)
link(onEventData,3684175:doSelectByValue ,[(503,349)(503,314)])
AddHint(-9,40,43,13,Data)
}
Add(Memory,2346352,231,203)
{
Default=String(user)
AddHint(-11,-34,45,13,Default)
}
Add(Memory,11851964,273,203)
{
Default=String(1111111111)
AddHint(5,-34,85,13,Default)
}
Add(Memory,2469868,378,238)
{
Default=String(j_password)
AddHint(-54,-40,78,13,Default)
}
Add(Memory,14208353,420,238)
{
Default=String(2222222222)
AddHint(-6,-38,85,13,Default)
}
Add(Hub,5416268,217,273)
{
OutCount=4
link(onEvent1,3134972:doAdd,[])
link(onEvent2,1475487:doAdd,[(256,286)(256,314)])
link(onEvent3,5764955:doData,[(249,293)(249,349)])
link(onEvent4,5921312:doData,[(242,300)(242,412)])
}
Add(If_else,5053611,567,203)
{
Op2=String(Готово)
link(onTrue,144373:doData,[])
}
Add(WebBrowser,15563951,518,189)
{
Width=850
Height=734
Align=5
URL="http://epd.asueirc.ru/epdinfo/"
Silent=0
Point(PHandle)
link(onNavigate,5793487:doCaption,[(557,195)(557,167)])
link(onStatus,5053611:doCompare,[])
}
Add(ChangeMon,144373,616,203)
{
link(onData,5416268:doEvent1,[(655,209)(655,153)(207,153)(207,279)])
}
tig-rrr писал(а):
хоть что-то полезное получилось...Тю! Было бы чего. Ну, понятно почему -- лапками лень набивать поля, да ошибиться можно
------------ Дoбавленo в 20.23:
Более интересный вариант, с улучшенным select, это на случай, если их будет больше одного (клик по дефолту отключен)
Add(InlineCode,3684175,441,245)
{
WorkPoints=#73:doSetValueByName=Установить значение по названию элемнта ARG(name, value)|94:doSelectByIdAndValue=Выбрать пункт по идентификатору элемнта и значению пункта ARG(id, value) |64:doClickByName=Кликнуть на элементе по названию элемнта ARG(name)|66:doClickByValue=Кликнуть на элементе по значению элемнта ARG(value)|0:|
EventPoints=#10:onSetValue|8:onSelect|7:onClick|
DataPoints=#2:ph|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|18: ph: THI_Event;|26: onSetValue: THI_Event;|27: onClick: THI_Event; |28: onSelect: THI_Event; |0:|57: procedure doSetValueByName(var dt:TData; index:word);|58: procedure doClickByName(var dt:TData; index:word); |64: procedure doClickByValue(var dt:TData; index:word); |61: procedure doSelectByIdAndValue(var dt:TData; index:word);|5: end;|0:|14:implementation|0:|4:type|31: TKOLWebBrowser = PWebBrowser;|31: PKOLWebBrowser = PWebBrowser;|0:|74:function FindIdx(pc: PControl; val: string; FindByName: boolean): Integer;|3:var|13: i: integer;|5:begin|15: Result := -1;|85: for i := 0 to PKOLWebBrowser(pc).OleObject.Document.all.tags('input').length - 1 do|22: if FindByName then|13: begin |88: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).name = val then|11: begin|20: Result := i;|15: break; |10: end;|7: end|12: else |9: begin|89: if PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(i).value = val then|11: begin|20: Result := i;|15: break; |10: end;|8: end;|6:end; |0:|39:procedure THiAsmClass.doSetValueByName;|3:var|15: pc: PControl;|19: txt, val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, NULL);|32: val := ReadString(dt, NULL); |32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |81: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).value := val;|26: _hi_onEvent(onSetValue);|4:end;|0:|36:procedure THiAsmClass.doClickByName;|3:var|15: pc: PControl;|14: txt: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, NULL);|32: idx := FindIdx(pc, txt, true);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|0:|37:procedure THiAsmClass.doClickByValue;|3:var|15: pc: PControl;|14: val: string;|15: idx: integer;|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|32: val := ReadString(dt, NULL); |33: idx := FindIdx(pc, val, false);|24: if idx < 0 then exit; |74: PKOLWebBrowser(pc).OleObject.Document.all.tags('input').Item(idx).click;|23: _hi_onEvent(onClick);|4:end;|0:|43:procedure THiAsmClass.doSelectByIdAndValue;|3:var|15: pc: PControl;|19: txt, val: string;|15: idx: integer;|2: |59: function FindIdxById(pc: PControl; val: string): Integer;|5: var|15: i: integer;|7: begin|17: Result := -1;|88: for i := 0 to PKOLWebBrowser(pc).OleObject.Document.all.tags('select').length - 1 do|9: begin|87: if PKOLWebBrowser(pc).OleObject.Document.all.tags('select').Item(i).id = val then|11: begin|20: Result := i;|15: break; |10: end;|8: end;|10: end; |0:|5:begin|37: pc := PControl(ToIntegerEvent(ph));|32: if not Assigned(pc) then exit;|30: txt := ReadString(dt, NULL);|30: val := ReadString(dt, NULL);|32: idx := FindIdxById(pc, txt); |82: PKOLWebBrowser(pc).OleObject.Document.all.tags('select').Item(idx).value := val;|24: _hi_onEvent(onSelect);|4:end;|0:|4:end.|
link(onSelect,5921312:doData,[])
link(ph,15563951:PHandle,[])
}
Add(MainForm,5793487,490,161)
{
Width=866
Height=772
Caption="Показания воды"
}
Add(DoData,5921312,490,252)
{
Data=String(Продолжить)
link(onEventData,8872161:doWork,[])
AddHint(-30,38,88,13,Data)
}
Add(If_else,5053611,490,203)
{
Op2=String(Готово)
link(onTrue,144373:doData,[])
}
Add(WebBrowser,15563951,427,189)
{
Width=850
Height=734
Align=5
URL="http://epd.asueirc.ru/epdinfo/"
Silent=0
Point(PHandle)
link(onNavigate,5793487:doCaption,[(466,195)(466,167)])
link(onStatus,5053611:doCompare,[])
}
Add(ChangeMon,144373,539,203)
{
link(onData,8776979:doEnum,[(585,209)(585,153)(256,153)(256,265)])
}
Add(Check,8872161,536,252)
{
Check=1
link(onEvent,3684175:doClickByValue,[(592,258)(592,293)(431,293)(431,272)])
}
Add(MT_AddData,6307689,364,357)
{
link(onAdd,3684175:doSelectByIdAndValue,[(417,363)(417,258)])
link(Data1,15093973:Value,[(370,348)(335,348)])
link(Data2,139137:Value,[])
}
Add(Memory,15093973,329,287)
{
Default=String(district)
AddHint(100,49,55,13,Default)
}
Add(Memory,139137,371,287)
{
Default=String(uao)
AddHint(57,29,43,13,Default)
}
Add(StrList,16512663,266,196)
{
Strings=#15:user;1111111111|21:j_password;2222222222|
}
Add(ArrayEnum,8776979,280,259)
{
link(onItem,3720835:doMTString,[])
link(onEndEnum,6307689:doAdd,[(319,272)(319,363)])
link(Array,16512663:Array,[])
}
Add(MT_String,3720835,329,245)
{
link(onResult,3684175:doSetValueByName,[])
}



Поиск
Друзья
Администрация