Вверх ↑
Ответов: 5227
Рейтинг: 585
#1: 2020-07-08 05:50:39 ЛС | профиль | цитата
Gunta, Вот от таких (так скажем извращений не в обиду сказано, извиняюсь по другому не могу подобрать слова) я ушёл в своё время. Был создан UseActiveXEx (где то на форуме болтается неприкаянный) который:
1) не требует регистрации ActiveX
2) обрабатывает Tab
3) пытается отрабатывать стандартные для контролов события
4) Содержит указатель (точку Dispatch) для подключения VBJSctript через который в свою очередь удобно
устанавливать свойства, вызывать методы, отрабатывать события

вот кстати первые пробы с этой библиотекой


Add(MainForm,2953706,21,105)
{
Width=668
Height=468
}
Add(UseActiveXEx,4894110,140,56)
{
Left=95
Top=20
Width=530
Height=375
akRight=1
akBottom=1
CLASS="{B0475003-7740-11D1-BDC3-0020AF9F8E6E}"
IID="{B0475001-7740-11D1-BDC3-0020AF9F8E6E}"
FileName="TTF16.ocx"
link(onCreate,9469688:doData,[(182,62)(182,96)(128,96)(128,111)])
}
Add(VBJScript,7665014,189,133)
{
WorkPoints=#4:Init|9:doSetText|
EventPoints=#8:OnRClick|
DataPoints=#5:objF1|4:Text|
Script=#19:Dim objAX, Row, Col|21:'On Error Resume Next|80:' ---------------------- Инициализация и подключение ---------------------------|16:Sub Init(dt,idx)|22: ' подключаем ActiveX|23: Set objAX = sys.objF1|21: ' разрешаем события|24: objAX.DoClick = vbTrue|25: objAX.DoRClick = vbTrue|25: ' подключаем события |42: sys.ConnectActiveX sys.objF1, "Event_" |23: ' настраивем свойства|15: 'objAX.XXX???|30: objAX.ShowGridLines = vbTrue|23: 'MsgBox objAX.DoClick|24: 'objAX.ViewScale = 150|30: objAX.SheetName(1) = "Test1"|24: objAX.EditInsertSheets|30: objAX.SheetName(2) = "Test2"|29: objAX.ShowEditBar = vbTrue |28: objAX.BackColor = 15138303|42: objAX.SetDefaultFont "MS Sans Serif", 10|7:End Sub|0:|22:Sub doSetText(dt, idx)|32: objAX.TextRC( 1, 1) = sys.Text|7:End Sub|0:|0:|80:' ------------------- События --------------------------------------------------|27:Sub Event_Click(nRow, nCol)|20: 'MsgBox("OnClick")|12: Row = nRow|12: Col = nCol|50: 'objAX.SetBorder 2, 1, 1, 1, 1, 1, 3, 4, 4, 4, 4|29: 'objAX.SetPattern 2, 128, 0|25: 'objAX.FormatBorderDlg |0:|0:|7:End Sub|0:|28:Sub Event_RClick(nRow, nCol)|22: 'MsgBox("R_OnClick")|22: sys.OnRClick vbNULL|7:End Sub|
link(objF1,9023022:Var,[])
}
Add(PopupMenu,3788364,301,91)
{
Menu=#5:Test1|5:Test2|5:Test3|
Icons=[]
}
Add(StyleXP,15341251,21,63)
{
}
Add(Button,9889449,28,455)
{
Left=10
Top=20
Caption="Save"
link(onClick,4078209:doExecute,[])
}
Add(StrList,2114058,364,91)
{
Strings=#42:A single cell can contain as many as nine |33:lines or 256 characters of data. |13:When entering|
}
Add(GlobalVar,9023022,189,105)
{
Name="tab"
link(onValue,7665014:Init,[(236,111)(236,125)(177,125)(177,139)])
}
Add(DoData,9469688,140,105)
{
link(onEventData,9023022:doValue,[])
link(Data,4894110:Dispatch,[])
}
Add(VBJScript,3361710,182,413)
{
WorkPoints=#10:doLoadFile|10:doSaveFile|12:doProperties|
EventPoints=#6:OnLoad|
DataPoints=#5:objF1|8:FileName|
Script=#35: Dim objAX, objTimer, iType|21:'On Error Resume Next|0:|22:Sub doSaveFile(dt,idx)|13: Dim t,fname|26: 'objAX.Write CStr(dt), 2|24: objAX.SaveWindowInfo()|32: 'objAX.Write "TestTab.vts", 12|8: t = 12|20: fname = "Test.vst"|44: objAX.SaveFileDlg "Сохранить файл",fname,t|7:End Sub|0:|24:Sub doProperties(dt,idx)|25: 'objAX.LaunchDesigner()|28: 'objAX.OptionsDlg(CInt(1))|26: 'MsgBox objAX.ExtraColor|35: 'objAX.SheetSelected(1) = vbFalse|17: objAX.Sheet = 2|34: 'objAX.SheetSelected(2) = vbTrue|29: 'objAX.BackColor = 15138303|30: objAX.BackColor = 15790320 |7:End Sub|0:|25:Function SetType(ByRef t)|13: SetType = t|12:End Function|0:|22:'Sub LoadFile(ByRef t)|30:' MsgBox(Typename(GetRef(t)))|37:' Call objAX.Read("TestTab.vst", t)|8:'End Sub|0:|22:Sub doLoadFile(dt,idx)|10: Dim file|38: 'MsgBox(Typename(GetRef("SetType")))|14: 't = CInt(2)|23: 'On Error Resume Next|38: 'objAX.Read "TestTab1.xls", CByte(2)|46: 'objAX.Read "TestTab.xls", GetRef("SetType")|43: 'objAX.Read "TestTab.xls", SetType(iType)|29: 'objAX.ReadEx "TestTab.vts"|18: 'LoadFile(iType)|48: 'file = objAX.OpenFileDlgEx("Открыть файл", 0)|26: 'call objAX.ReadEx(file)|7:End Sub|0:|80:' ---------------------- Инициализация и подключение ---------------------------|10:Sub Init()|22: ' подключаем ActiveX|23: Set objAX = sys.objF1|25: ' подключаем события |41: 'sys.ConnectActiveX sys.objF1, "Event_"|17: objTimer.Stop()|17: iType = CInt(2)|7:End Sub|0:|32:Set objTimer = sys.CreateTimer()|23:objTimer.Interval = 200|21:objTimer.AutoStop = 1|25:objTimer.onTimer = "Init"|16:objTimer.Start()|
link(objF1,4847378:Var,[])
}
Add(GlobalVar,4847378,182,385)
{
Name="tab"
}
Add(Button,8387368,28,413)
{
Left=10
Top=50
Caption="Load"
Data=Integer(2)
link(onClick,3361710:doLoadFile,[])
}
Add(ODialog,12842828,84,371)
{
Filter="Excel|*.xls"
Title="Открыть файл"
}
Add(SDialog,4078209,84,455)
{
Filter="Excel|*.vts"
Title="Сохранить файл"
link(onExecute,3361710:doSaveFile,[(135,461)(135,426)])
}
Add(Button,4165857,84,497)
{
Left=10
Top=85
link(onClick,3361710:doProperties,[(149,503)(149,433)])
}

карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0