|
Вопрос # 4 998/ вопрос закрыт / |
|
Доброго времени суток, уважаемые эксперты!
Мне нужно решить такую задачу: кликая мышкой на ось х - где у меня расположена шкала времени от 0 до 24 часов с шагом 1 час, узнать на какой именно час я попал мышкой.
Я нашел как узнать координаты курсора - но это не то. А как узнать именно что я ткнул мышь, ну скажем, на 13 часов.
Ниже код, который дает координаты курсора:
Приложение: Переключить в обычный режим- procedure TForm1.DBChart1Click(Sender: TObject);
- var
- xt,yt:double;
-
- begin
- DBChart1.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): Вопрос не корректен...
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|