【问题标题】:TChartSeries.onClick troubleTChartSeries.on点击麻烦
【发布时间】:2015-05-22 18:14:23
【问题描述】:

我正在使用 teechart 和 delphi XE4。我认为我的问题很基本,但是我找不到解决方案。

在一个简短的示例中,我有一个带有 OnCLick 事件的事件处理程序的 TChartSeries。 在我的事件处理代码中,我执行以下操作:

if Button=mbRight then
begin
  clkSerie:=Sender;
  clkValue:=ValueIndex;
  GetCursorPos(P);
  pm1.Popup(P.X,p.Y);
end;

然后,在 pm1.MyAction.OnClick

st:=InputBox('Agregar nota','Ingrese texto','');
if st<>'' then
begin
  clkserie.Marks.Item[clkValue].Text.Clear;
  clkserie.Marks.Item[clkValue].Text.Add(st);
  clkserie.Marks.Item[clkValue].Visible:=True;
end;

它工作正常,唯一的问题是,当我退出此过程时,回到没有弹出菜单或输入框的图表中​​,我处于“平移”状态,似乎图表没有看不到我的 MOUSE_UP 事件。

我尝试使用mouse_event() 模拟鼠标点击,但没有成功。 唯一有效的是禁用图表的平移,但我不想采取这种方式。我知道必须有除此之外的解决方案。

我会继续尝试和阅读。

提前致谢。

【问题讨论】:

  • 弹出菜单或模态InputBox 吃掉鼠标向上消息。不要直接从您的 OnClick 事件处理程序中显示弹出窗口,而是尝试仅向您的表单发布一条自定义消息并在其消息处理程序中进行处理(即,在处理鼠标向上后延迟)。
  • 我尝试了以下if Button=mbRight then begin clkSerie:=Sender; clkValue:=ValueIndex; GetCursorPos(P); PostMessage(Self.Handle,WM_SERIE_CLICK,0,0); end; ,并且在消息处理程序SleepEx(200,false); pm1.Popup(P.X,p.Y); 中得到了相同的结果。

标签: delphi teechart delphi-xe4


【解决方案1】:

点击处理后设置Chart1.CancelMouse := True停止图表启动默认平移模式。

【讨论】:

  • 如果它解决了开头的问题,您应该接受答案。
猜你喜欢
  • 2015-09-05
  • 1970-01-01
  • 2011-04-29
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多