Получение позиции мышиного курсора для TabControl над какой закладкой
находится курсор.
function Form1.ItemAtPos(TabControlHandle : HWND; X, Y : Integer) : Integer;
var
HitTestInfo : TTCHitTestInfo;
HitIndex : Integer;
begin
HitTestInfo.pt.x := X;
HitTestInfo.pt.y := Y;
HitTestInfo.flags := 0;
HitIndex := SendMessage(TabControlHandle, TCM_HITTEST, 0, Longint(@HitTestInfo));
Result := HitIndex;
end;
Here is the translation of the text into Russian:
Функция Delphi, именуемая ItemAtPos, принимает три параметра: TabControlHandle, HWND, представляющий handle компонента TabControl; X и Y, целые числа, представляющие координаты, на которых вы хотите проверить, есть ли какой-либо элемент под курсором мыши.
Функция использует Windows API-сообщение TCM_ HITTEST для выполнения теста на попадание в указанном контексте табличного контрола по заданным координатам. Результат хранится в переменной HitIndex, которая представляет индекс элемента, который был попаданием (или -1, если не было попадания).
Вот разбивка кода:
Функция объявляет две переменные: HitTestInfo, экземпляр записи TTCHitTestInfo, и HitIndex, целое число.
Она инициализирует свойства HitTestInfo.pt.x и HitTestInfo.pt.y заданными координатами X и Y, соответственно.
Функция устанавливает свойство HitTestInfo.flags в 0, что указывает на то, что мы выполняем простой тест на попадание (в отличие от более сложного).
Функция отправляет сообщение TCM_ HITTEST табличному контролу с следующими параметрами:
TabControlHandle: handle табличного контрола.
0: целое число, представляющее тип теста на попадание для выполнения.
Longint(@HitTestInfo): указатель на запись HitTestInfo, которая будет получать результат теста на попадание.
Функция возвращает значение HitIndex, которое представляет индекс элемента, который был попаданием (или -1, если не было попадания).
Вы можете использовать функцию так:
```delphi
var
TabControl: TTabControl;
X, Y: Integer;
// предположим, что TabControl является валидным экземпляром класса TTabControl
X := 10; // координаты для проверки элемента
Y := 20;
HitIndex := Form1.ItemAtPos(TabControl.Handle, X, Y);
if HitIndex >= 0 then
ShowMessage('Элемент под индексом ' + IntToStr(HitIndex) + ' был попаданием');
else
ShowMessage('Нет элемента под координатами (' + IntToStr(X) + ', ' + IntToStr(Y) + ')');```
Функция Form1.ItemAtPos позволяет получить позицию мышиного курсора над какой-либо закладкой в TabControl и определить индекс этой закладки.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.