2015-05-22 39 views
1

我正在使用teechart和delphi XE4。我認爲我的問題很基本,但是我找不到解決方案。TChartSeries.onClick問題

在一個簡短的例子中,我有一個TChartSeries和OnCLick事件的事件處理程序。 在我的事件處理代碼,我做了以下內容:

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()並沒有奏效。 唯一有效的是禁用平移圖表,但我不喜歡採取這種方式。我知道除此之外還有其他解決方案。

我會繼續嘗試和閱讀有關。

在此先感謝。

+1

無論是彈出式菜單或模式'InputBox'吃鼠標向上消息。不要直接從'OnClick'事件處理程序顯示彈出窗口,只能嘗試將自定義消息發佈到窗體並在其消息處理程序中執行處理(即,在處理完鼠標懸停後延遲處理)。 –

+0

我試過如下 'if Button = mbRight then begin clkSerie:= Sender; clkValue:= ValueIndex; GetCursorPos(P); PostMessage(Self.Handle,WM_SERIE_CLICK,0,0); 結束; ' ,並且在消息處理程序中 'SleepEx(200,false); pm1.Popup(P.X,p.Y);' 具有相同的結果。 –

回答

5

設置Chart1.CancelMouse := True點擊處理後停止圖表啓動默認平移模式。

+0

謝謝!它工作正常! –

+1

你應該接受答案,如果它解決了開場白的問題。 – Yeray