Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 998

/ вопрос закрыт /

Доброго времени суток, уважаемые эксперты!
Мне нужно решить такую задачу: кликая мышкой на ось х - где у меня расположена шкала времени от 0 до 24 часов с шагом 1 час, узнать на какой именно час я попал мышкой.
Я нашел как узнать координаты курсора - но это не то. А как узнать именно что я ткнул мышь, ну скажем, на 13 часов.

Ниже код, который дает координаты курсора:

Приложение:
  1. procedure TForm1.DBChart1Click(Sender: TObject);
  2. var
  3. xt,yt:double;
  4.  
  5. begin
  6. DBChart1.MaxPointsPerPage:=0;
  7. Series1.GetCursorValues(xt,yt);
  8. label1.Caption:='X='+Series1.XValueToText(xt)+
  9. ' Y='+Series1.YValueToText(yt);
  10. end;


vitalik32 Вопрос закрыт (ответы не принимаются, мини-форум закрыт)

Вопрос задал: 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

vitalik32 (статус: Посетитель), 4 февраля 2011, 09:30 [#1]:

Ты рисовал оси сам, а я использую TDBChart и Series. У этой компаненты наверняка есть функция, возвращающая значение оси х при клике на мышь. Только я не знаю как она называется и как ею воспользоваться... =(((
min@y™

min@y™ (статус: Доктор наук), 4 февраля 2011, 09:39 [#2]:

Тогда значит, что ты неправильно задал вопрос. А надо было вот так: "Я использую TDBChart и Series. У этой компаненты наверняка есть функция, возвращающая значение оси х при клике на мышь. Подскажите, как она называется и как ею воспользоваться.".
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
vitalik32

vitalik32 (статус: Посетитель), 4 февраля 2011, 09:42 [#3]:

Ага.... наверно так и надо было задать вопрос. Практики маловато.... Учту на будущее..... =)))
vitalik32

vitalik32 (статус: Посетитель), 4 февраля 2011, 09:46 [#4]:

Тему крою, открываю с правильным вопросом....

4 февраля 2011, 09:54: Вопрос закрыт (решение принял автор вопроса — vitalik32): Вопрос не корректен...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:31
Выполнено за 0.02 сек.