|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
TChart не всегда отображает hint
Доброе время суток,
Есть TСhart (chDiagram) и у него 2 серии - sDayContribution и sDiffPower, при подводе мышки к точкам на TChart должен появляться hint. Проблема в том что в следующем коде, hint появляется только для той серии, которая (в коде) указана последней (т.е. в конкретном случае для "sDiffPower") Код:
procedure TFDiagram.chDiagramMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var SeriesIndexDiff, SeriesIndexContrib: Integer; begin SeriesIndexContrib := sDayContribution.Clicked(X, Y); chDiagram.ShowHint := SeriesIndexContrib <> -1; if (chDiagram.ShowHint) then chDiagram.Hint:= DateToStr(sDayContribution.XValue[SeriesIndexContrib]); SeriesIndexDiff := sDiffPower.Clicked(X, Y); chDiagram.ShowHint := SeriesIndexDiff <> -1; if (chDiagram.ShowHint) then chDiagram.Hint:= DateToStr(sDiffPower.XValue[SeriesIndexDiff]); end; При "Step over", hint значения присваиваются (chDiagram.Hint), только hint не выводится. Пушут, что понять на какой серии мышь находится можно строками Код:
if sDayContribution.Clicked(X, Y) >= 0 then Код:
if sDiffPower.Clicked(X, Y) >= 0 then Только помогает, если я создам приватную переменную и буду подставлять вместо "if sDayContribution.Clicked(X, Y) >= 0 then" и "if sDiffPower.Clicked(X, Y) >= 0 then" Как быть? Последний раз редактировалось Konstantin-78, 18.12.2017 в 23:05. |
#2
|
||||
|
||||
Цитата:
Код:
procedure TForm1.chDiagramMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var i, b: integer; begin with chDiagram do begin b:= -1; for i := 0 to SeriesCount-1 do if Series[i].Clicked(X, Y) <> -1 then begin b:= Series[i].Clicked(X, Y); Hint:= DateToStr(Series[i].XValue[b]); end; ShowHint:= b > -1; end;{with} end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 19.12.2017 в 02:08. |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
Konstantin-78 (19.12.2017)
|
#3
|
|||
|
|||
А всеже почему в моем примере, в первом куске
Код:
SeriesIndexContrib := sDayContribution.Clicked(X, Y); chDiagram.ShowHint := SeriesIndexContrib <> -1; if (chDiagram.ShowHint) then chDiagram.Hint:= DateToStr(sDayContribution.XValue[SeriesIndexContrib]); hint не выводился, он заполнялся (я при отладке видел), но не выводился? |
#4
|
||||
|
||||
Потому как свойство chDiagram.ShowHint было отключено вторым куском
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#5
|
|||
|
|||
Цитата:
Я бы с удовольствием в это поверил, еслиб перед тем как задавать на форуме вопрос, не проверил бы этот блок с "условием" .Clicked(X, Y) <> -1 Код:
procedure TFDiagram.chDiagramMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var SeriesIndexDiff, SeriesIndexContrib: Integer; begin if sDayContribution.Clicked(X, Y) <> -1 then begin SeriesIndexContrib := sDayContribution.Clicked(X, Y); chDiagram.ShowHint := SeriesIndexContrib <> -1; if (chDiagram.ShowHint) then chDiagram.Hint:= DateToStr(sDayContribution.XValue[SeriesIndexContrib]); end; if sDiffPower.Clicked(X, Y) <> -1 then begin SeriesIndexDiff := sDiffPower.Clicked(X, Y); chDiagram.ShowHint := SeriesIndexDiff <> -1; if (chDiagram.ShowHint) then chDiagram.Hint:= DateToStr(sDiffPower.XValue[SeriesIndexDiff]); end; end; в данном примере, всегда при наведении мышей на одну из линий на TChart, выполняется только один конкретный if. Та он вообщем говоря криво работает, т.к. первый раз выводит hint нормально, а все последующие разы, если мышкой не выйти за границы TChart (т.е. мышку на форму не завести), то hint вообще перестает показываться. При этом при наведении мышкой опять на TChart, hint отображается как только мышка проходит границу TChart Последний раз редактировалось Konstantin-78, 19.12.2017 в 19:57. |
#6
|
||||
|
||||
Проверок блоков в первом посте небыло, да всё ведь правильно, не хватает начальной инициализации переменных, в них всегда "положительный" мусор
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |