HQChart使用教程47-如何自定义右键菜单,已停用

本文详细介绍了HQChart中如何自定义右键菜单,包括注册事件、回调函数、关闭默认菜单及自定义菜单项的步骤。通过修改菜单项、二级菜单、周期菜单和指标列表,用户可以完全定制自己的右键菜单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此功能已停用

新的菜单详见

HQChart使用教程98-右键菜单2.0使用介绍

HQChart h5版本提供一个简陋的右键菜单, 主要是用来测试用的。 如果需要替换成自己的菜单,可以通过事件回调来截获右键菜单事件,然后弹出自己的菜单

步骤

1. 注册事件

通过AddEventCallback, 我们可以注册一个事件回调,

chart.AddEventCallback({event:JSCHART_EVENT_ID.ON_CONTEXT_MENU, callback:testcallback});

2. 回调函数

在回调里面实现自定义菜单

function testcallback(event,data,obj)
{
     console.log('[testcallback]', event, data, obj);
     //弹出你自己的菜单把
 }

event:注册的事件信息
data: 点击的信息 { Event:事件信息, X:X坐标 ,Y:Y坐标, FrameID:点击的指标窗口索引 }
obj:chart图形内部实例

注意!!! K线训练没有右键菜单,如果需要添加右键菜单只能通过注册上面的事件,自己做右键菜单

3.关闭HQChart右键菜单

var option=
{
     Type:'历史K线图',
     .....
     IsShowRightMenu:false,          //右键菜单
     ....
}

4. 右键操作

具体右键功能 可以参见 KLineRightMenu类(在umychart.js) 里面有获取状态和设置的方法

只修改显示菜单项

如果只是想修改菜单项,可以直接修改 this.Chart.JSChartContainer.RightMenu.DoModal

this.Create=function()  //创建图形
{
    ............................
    this.Chart.SetOption(this.Option);  //设置K线配置
	......................
	//菜单显示函数替换成自己的函数
    this.Chart.JSChartContainer.RightMenu.DoModal=(event)=> { this.RightMenu_DoModal(event); } 
    ......................
}

this.RightMenu_DoModal=function(event)
{
    var chart=event.data.Chart;
    var rightMenu=chart.RightMenu; //内置菜单实例, 如果要调用内置菜单方法可以用它(KLineRightMenu)
    //鼠标坐标
    var x = event.offsetX;
    var y = event.offsetY;

    //显示菜单
    var dataList=
    [
        {
            text: "分析周期",
            children: rightMenu.GetPeriod(chart)
        }, 
        {
            text: "复权处理",
            children: rightMenu.GetRight(chart)
        }, 
        {
            text: "指标切换",
            children: rightMenu.GetIndex(chart)
        }
    ];

    var identify=event.data.FrameID;
    //弹出菜单
    rightMenu.Show({
        windowIndex :identify,
        x:x+chart.UIElement.offsetLeft,
        y:y+chart.UIElement.offsetTop,
        position:chart.Frame.Position,
        data:dataList
    })

    //点击隐藏菜单
    $(document).click(function () {
        rightMenu.Hide();
    });
}
     

修改2级菜单

修改周期菜单列表

//右键周期菜单
this.GetPeriodMenu=function(chart)
{
    //Value: 周期ID, 
    var data=
    [
        {
            text: "日线", Value:0,
            click: function () { chart.ChangePeriod(0); }
        }, 
        {
            text: "周线",Value:1,
            click: function () { chart.ChangePeriod(1); }
        }, 
        {
            text: "1分",Value:4,
            click: function () { chart.ChangePeriod(4); }
        },
        {
            text: "5分",Value:5,
            click: function () { chart.ChangePeriod(5); }
        }
    ];

    //当前选中的周期
    for(var i in data)
    {
        var item=data[i];
        if (item.Value==chart.Period)
        {
            item.selected=true;
            break;
        }
    }

    return data; 	//返回菜单列表
}

this.RightMenu_DoModal=function(event)
{
    var chart=event.data.Chart;
    var rightMenu=chart.RightMenu;
    var x = event.offsetX;
    var y = event.offsetY;

    var dataList=
    [
        {
            text: "分析周期",
            children: this.GetPeriodMenu(chart)	//使用新的周期菜单
        }, 
        {
            text: "复权处理",
            children: rightMenu.GetRight(chart)
        }, 
        {
            text: "指标切换",
            children: rightMenu.GetIndex(chart)
        }
    ];

    var identify=event.data.FrameID;
    rightMenu.Show({
        windowIndex :identify,
        x:x+chart.UIElement.offsetLeft,
        y:y+chart.UIElement.offsetTop,
        position:chart.Frame.Position,
        data:dataList
    })

    $(document).click(function () {
        rightMenu.Hide();
    });
}

修改指标列表

//指标
this.GetIndex=function (chart) 
 {
     return [{
         text: "均线",
         click: function (windowIndex) {
             chart.ChangeIndex(windowIndex, '均线')
         }
     }, {
         text: "BOLL",
         click: function (windowIndex) {
             chart.ChangeIndex(windowIndex, 'BOLL')
         },
         isBorder:true
     }, {
         text: "MACD",
         click: function (windowIndex) {
             chart.ChangeIndex(windowIndex, 'MACD')
         }
     }];
 }

this.RightMenu_DoModal=function(event)
{
  .........................
  {
            text: "指标切换",
            children: this.GetIndex(chart)
  }
..............
}

HQChart代码地址

地址:github.com/jones2000/HQChart

交流QQ群

见git项目首页

个人爱好(模型/摄影)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQChart

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值