![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| sandycrazy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 24.7.2006 Репутация: нет Всего: нет |
может где-то уже и было, но я не нашёл))
нужно как-то отлавливать направления мышки (вверх, вниз, влево, вправо) не координаты! т.к. это должно работать в пределах одной процедуры, и соответственно сравнивать старые координаты с новыми не получается, в ней постоянно всё выполняется
нужно сделать что-то типа, если мышка двигается вверх тогда mymouseup=true, если вниз mymousedown=true это нужно для нормального изменения размера RxRichEdit при помощи движка который можно таскать, потому что, если двигать движок вниз и сначала устанавливать высоту RxRichEdit а потом отступ от верхнего края формы то всё нормально, а если наоборот то RxRichEdit начинает колбасить, потому что сначала устанавливается позиция а потом размер, вот и хотелось бы менять порядок установки высоты и позиции в зависимости от направления движения курсора мышки.. может кто знает как это сделать? если через API то, плиз можно с подробным примером?! )) я API совсем не знаю!!! Это сообщение отредактировал(а) Girder - 25.7.2006, 17:24 |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
На мыши не стоит система GPS, поэтому нельзя на программном уровне (не визуально) определить направление движения онной. Можно завести статическую переменную координату в теле самой функции. В переменную сбрасывать старое значение. И при поступлении новых данных, находить угол хода мыши. Тут проблема возникнет только в самом начале иницилизации переменных.
Это сообщение отредактировал(а) Fin - 25.7.2006, 00:08 -------------------- Пролетал мимо. |
|||
|
||||
| Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
Да нет, всё можно наладить
Вообщем вначале процедуры узнаёш какое разрешение стоит у пользователя, потом исходя из этого по формуле узнаёш центральную точку, после этого начинаеш следить за мышью если координата увеличилась по X значит мышь пошла вниз, если уменьшилась значит вверх, если увеличился Y то мышь пошла вправо, если уменьшилась то влево, если допустим мышь по X увеличилась а по Y уменьшилась то мышь пошла вниз-влево ну и т.д. это надо оптимизовать и будет тебе счастье!! -------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: нет Всего: 10 |
alexeis1, Насколько я помню, в паскале было понятие статических переменных. В принципе можно выташить переменную в объявление класса TForm1. и тогда при иницилизации класса, делать запрос координат мыши, и записывать их в переменную.
-------------------- Пролетал мимо. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
типизированная константа объявленная в функции. Плюс project/options/compiler/assignable typed constants -------------------- Обижено школьников: 8 |
|||
|
||||
| sandycrazy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 24.7.2006 Репутация: нет Всего: нет |
RooR, у меня тоже была такая мысль, при mousedown запомнить точку, и потом отсчитывать от этой точки вверх-вниз, но курсор может пойти сначала вверх а потом снова вниз не доходя до средней точки и т. п., тогда придётся делать сортировку по минимальному и максимальному отклонению от точки... короче хотелось сделать по человечески через API, видимо снова займусь математикой))
|
|||
|
||||
| sandycrazy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 24.7.2006 Репутация: нет Всего: нет |
Дошло! Всё очень просто)) оказалось нужно сравнивать координаты с реальным положением RxRichEdit.Top. Если RxRichEdit.Top больше координат мыши относительно начала формы, то сначала устанавливаем RxRichEdit.Top потом RxRichEdit.Height, а если меньше сначала RxRichEdit.Height потом RxRichEdit.Top!!!
|
|||
|
||||
| sandycrazy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 24.7.2006 Репутация: нет Всего: нет |
Забыл добавить, таким образом удаётся избежать глюков при использоании двойной буфферизации
Form1.DoubleBuffered:=True; можно воткнуть в самое начало, в процедуру создани формы TForm1.FormCreate |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |