【发布时间】: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