| 
| 
 | Вопрос # 4 998/ вопрос закрыт / | 
 |  Доброго времени суток, уважаемые эксперты!Мне нужно решить такую задачу: кликая мышкой на ось х - где у меня расположена шкала времени от 0 до 24 часов с шагом 1 час, узнать на какой именно час я попал мышкой.
 Я нашел как узнать координаты курсора - но это не то. А как узнать именно что я ткнул мышь, ну скажем, на 13 часов.
 
 Ниже код, который дает координаты курсора:
 Приложение:Переключить в обычный режим procedure TForm1.DBChart1Click(Sender: TObject);varxt,yt:double; beginDBChart1.MaxPointsPerPage:=0;Series1.GetCursorValues(xt,yt);label1.Caption:='X='+Series1.XValueToText(xt)+              '  Y='+Series1.YValueToText(yt);end;
|  |   Вопрос задал: vitalik32 (статус: Посетитель)Вопрос отправлен: 4 февраля 2011, 09:11
 Состояние вопроса: закрыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Код я твой не смотрел, но логично предположу следуюущее.Пусть X - это координата курсора (в пикселах) относительно начала временной шкалы.
 Пусть L - это длина временной шкалы (в пикселах).
 Пусть H - часовой промежуток, в который попадает курсор.
 
 Тогда
 
 H:= Trunc(24 * X / (L - 1)); З.Ы. Неделю назад я писал прогу для решения судоку. Там я именно так рассчитывал ячейку поля, надо которой находится курсор:
 
 function TSudokuSolver.CellAtXY(const X, Y, AWidth, AHeight: Integer): TSudokuCell;
var
  ARow, ACol: Integer;
begin
  // ячейка под курсором мыши
  if (AWidth < 2) or (AHeight < 2)
    then begin
           Result:= nil;
           Exit;
         end;
 
  ACol:= Trunc(9 * X / (AWidth - 1));
  ARow:= Trunc(9 * Y / (AHeight - 1));
  Result:= Self[ARow, ACol];
end;
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 4 февраля 2011, 09:20
 Оценка за ответ: 2
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 4 февраля 2011, 09:46; участников в обсуждении: 2. 
|   | vitalik32 (статус: Посетитель), 4 февраля 2011, 09:30 [#1]:Ты рисовал оси сам, а я использую TDBChart и Series. У этой компаненты наверняка есть функция, возвращающая значение оси х при клике на мышь. Только я не знаю как она называется и как ею воспользоваться...   =((( |  
|   | min@y™ (статус: Доктор наук), 4 февраля 2011, 09:39 [#2]:Тогда значит, что ты неправильно задал вопрос. А надо было вот так: "Я использую TDBChart и Series. У этой компаненты наверняка есть функция, возвращающая значение оси х при клике на мышь. Подскажите, как она называется и как ею воспользоваться.". Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | vitalik32 (статус: Посетитель), 4 февраля 2011, 09:42 [#3]:Ага....   наверно так и надо было задать вопрос. Практики маловато....   Учту на будущее.....  =))) |  
|   | vitalik32 (статус: Посетитель), 4 февраля 2011, 09:46 [#4]:Тему крою, открываю с правильным вопросом.... |  4 февраля 2011, 09:54: Вопрос закрыт (решение принял автор вопроса — vitalik32): Вопрос не корректен... Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |