欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 框架vba编程指定窗口显示合约?

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有3950人关注过本帖树形打印复制链接

主题:框架vba编程指定窗口显示合约?

帅哥哟,离线,有人找我吗?
raidsan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:60 积分:40 威望:0 精华:0 注册:2013/1/1 1:23:33
框架vba编程指定窗口显示合约?  发帖心情 Post By:2014/5/8 17:15:53 [只看该作者]

对于包含多个周期窗口的框架, 点击表格中期货主力合约, 希望在日线以下级别窗口中仍然显示该主力合约的K线图, 但是在周线和月线窗口则自动显示对应的期货连续合约的K线图,  下面的代码为什么无法实现切换?

框架名: MyChart, 周线窗口名: WinWeek, 
在三个事件中都写了代码, 测试在表格中点击合约 JM09, 结果 TableChangeStock, TableClickStock 两个事件被触发了, 但是周线窗口并没有被切换成 JMLX 合约,
周线窗口不论是设成与表格是同一分组, 还是设成没有分组, 结果都一样

Sub MyChart_TableChangeStock(Grid, Code, Market, Result)
Application.MsgOut "TableChangeStock: Grid.Name=" &  Grid.Name &", Code=" & Code & ", Market=" & Market
if Code="JM09" THEN
Application.MsgOut "TableChangeStock JM09"
call MyChart.GetGridByName("WinWeek").ChangeStock("JMLX","DQ")
MyChart.GetGridByName("WinWeek").reInitData
MyChart.Refresh
'MyChart.InitAllGrid
END IF

End Sub


Sub MyChart_TableClickStock(Grid, Code, Market, Result)
Application.MsgOut "TableClickStock: Grid.Name=" &  Grid.Name &", Code=" & Code & ", Market=" & Market
if Code="JM09" THEN
Application.MsgOut "TableClickStock JM09"
call MyChart.GetGridByName("WinWeek").ChangeStock("JMLX","DQ")
MyChart.GetGridByName("WinWeek").reInitData
MyChart.Refresh
'MyChart.InitAllGrid
END IF
End Sub


Sub MyChart_ChangeStock(Grid, Code, Market, Result)
Application.MsgOut "ChangeStock: Grid.Name=" &  Grid.Name &", Code=" & Code & ", Market=" & Market
if Code="JM09" THEN
Application.MsgOut "ChangeStock JM09"
call MyChart.GetGridByName("WinWeek").ChangeStock("JMLX","DQ")
MyChart.GetGridByName("WinWeek").reInitData
MyChart.Refresh
'MyChart.InitAllGrid
END IF
End Sub

 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/5/8 17:18:36 [只看该作者]

把你做的框架导出来,我们看看


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
raidsan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:60 积分:40 威望:0 精华:0 注册:2013/1/1 1:23:33
  发帖心情 Post By:2014/5/8 20:12:51 [只看该作者]

直接在这里上传吧

另外存在问题, 每次打开框架时都会跳出4次错误提示窗口: "操作文档数据时遇到了一个错误。"
不知道是我的表格指定的表头问题, 还是表头对应的指标问题?


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:issue.rar



 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/5/10 11:32:28 [只看该作者]

你的合约代码写错了

 

焦煤连续的合约金字塔代码是JM00

call MyChart.GetGridByName("WinWeek").ChangeStock("JM00","DQ")

 

其他的代码也都有类似的问题.

还有你的资料给的不全,有几个TAB表没给,我这里没法完整运行你的东西,你试试改完后再看看



金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
raidsan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:60 积分:40 威望:0 精华:0 注册:2013/1/1 1:23:33
  发帖心情 Post By:2014/5/10 23:12:51 [只看该作者]

谢谢提醒, 经过重新编写测试, 自动切换功能已经实现, 发布在这里供其他有需要的人参考一下:
以下内容为程序代码:

1 '调用子过程, 可存放于全局 Global模块中
2 Sub FrameSwitchStock(Frame, Grid, Code, Market, IndexWinName)
3 dim indexCode, indexMarket
4 indexCode = Code
5 indexMarket = Market
6
7 '期货品种的周线显示对应的连续合约
8 if Market="DQ" OR Market="ZJ" OR Market="SQ" or Market="SY" or Market="ZQ" then '有什么方法可以方便地判断指定市场的种类是期货市场 ?
9     indexCode = Left(Code,Len(Code)-2) & "00"
10     indexMarket = Market
11 end if
12
13 Set IndexGrid = Frame.GetGridByName(IndexWinName)
14 if IndexGrid is Nothing then
15     Application.MsgOut "目标窗口不存在: " & IndexWinName
16 else
17     if IndexGrid.StockLabel<> indexCode THEN
18     call IndexGrid.ChangeStock(indexCode, indexMarket)
19     IndexGrid.reInitData
20     Frame.Refresh
21     Frame.InitAllGrid
22     END IF
23 end if
24 end Sub
25
26 '从列表切换合约时触发
27 Sub MyChart_TableChangeStock(Grid, Code, Market, Result)
28 'Application.MsgOut "TableChangeStock: Grid.Name=" & Grid.Name &", Code=" & Code & ", Market=" & Market
29     call FrameSwitchStock(MyChart, Grid, Code, Market, "WeekWin")
30     call FrameSwitchStock(MyChart, Grid, Code, Market, "MonthWin")
31 End Sub
32
33 '子窗口直接输入代码切换合约时触发
34 Sub MyChart_ChangeStock(Grid, Code, Market, Result)
35 'Application.MsgOut "ChangeStock: Grid.Name=" & Grid.Name &", Code=" & Code & ", Market=" & Market
36 if Grid.Name <> "WeekWin" then
37         call FrameSwitchStock(MyChart, Grid, Code, Market, "WeekWin")
38     end if
39     if Grid.Name <> "MonthWin" then
40         call FrameSwitchStock(MyChart, Grid, Code, Market, "MonthWin")
41     end if
42 End Sub
43


版主评定:好评,获得5个金币奖励好评,获得5个金币奖励
(理由:奖励)
 回到顶部
帅哥哟,离线,有人找我吗?
raidsan
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:60 积分:40 威望:0 精华:0 注册:2013/1/1 1:23:33
  发帖心情 Post By:2014/5/10 23:20:37 [只看该作者]

只是弹出4次错误提示窗口: "操作文档数据时遇到了一个错误。"的问题没有解决

附件里应该包含用到的 .tab了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:issue.rar


 回到顶部
帅哥哟,离线,有人找我吗?
王锋
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/5/14 10:59:40 [只看该作者]

我们这里无法线重现你所描述的报错问题,请加Qq 442902994,我们研发人员远程看看你那边的现象


金字塔—专业程序化软件提供商

金字塔-技术部

-----------------------------------------------------------------------------------------------------

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部