Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 10:56   #11
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию

Уже сделал спасибо...только теперь пытаюсь решить другую проблему - он задает координаты не от размеров формы, а от всего экрана.... то есть:

Код:
setcursorpos(500,500);
Вот данный код ставить курсор не по координатам формы , а по координтам всего экрана. Т.о. курсор встает не в форме, а за ней....на экране.....

Вроде попытался максимально изложить...

Если сможете подсказать - как все это ограничить по форме - буду очень благодарен...

Пробовал ClipCursor - но оказывается я вообще не в ту степь полез....

Подскажите, чтобы не серфить кучу инфы...ПЛЗ

Последний раз редактировалось NitroSki; 02.06.2011 в 10:58.
NitroSki вне форума Ответить с цитированием
Старый 02.06.2011, 11:02   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у формы есть метод ClientToScreen
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.06.2011, 11:17   #13
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию

Пожалуйста приведите пример clienttoscreen....строчку для подобной задачи как у меня....чет не могу расковыряться
NitroSki вне форума Ответить с цитированием
Старый 02.06.2011, 11:26   #14
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Код:
setcursorpos(500+Form1.Left,500+Form1.Top);
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 02.06.2011, 11:32   #15
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию

Спасибо.Логику решения проблемы понял.
Но встает следующая:

Код:
if mouse.CursorPos.x>Shape1.left then
setcursorpos(100+form1.left,100+form1.top);
2-ю строчку изменил по вашему совету....работает...

Но проблема в первой строчке -

Код:
if mouse.CursorPos.x>Shape1.left
значение координат Шейпа - опять таки берется от всего экрана а не от формы. Что дописать перед шейпом?

Пободное решение проблемы мне очень понравилось - ибо оно прост ои логично...подскажите, что можно придумать с координатами Шейпа
NitroSki вне форума Ответить с цитированием
Старый 02.06.2011, 12:00   #16
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

// прилипание
Код:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const sc_dragmove = $f012;
var p1,p2: TPanel;
begin
releasecapture;
if (Sender as TPanel).Name='Panel1' then
begin
p1:=Panel1;
p2:=Panel2;
end else
begin
p1:=Panel2;
p2:=Panel1;
end;
(Sender as TPanel).Perform(wm_syscommand, sc_dragmove, 0);
if p1.Top<5 then
p1.Top:=0;//прилипание к верхнему краю
if p1.Left<5 then
p1.Left:=0;//прилипание к левому краю
if p1.Top+p1.Height+1>p2.Top then
p1.Top:=p2.Top-p1.Height-1;//прилипание к верхнему краю другой панельки
//и так далее - остальные проверки

if Height-p1.Top-p1.Height-1<5 then
p1.Top:=Height-p1.Height-1;//прилипание к нижнему краю
if Width-p1.Left-p1.Width-1<5 then
p1.Left:=Width-p1.Width-1;//прилипание к правому краю

end;
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 02.06.2011, 12:13   #17
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию

Спасибо за код. Безусловно, что то из него мне пригодиться..... именно таким образом я и думал сделать прилипание.

Только проблема в том, что я щас работаю с курсором мыши и операторами
Код:
CursorPos
и
Код:
SetCursorPos
А они все исчисляют по координатам всего экрана, но не по координатам формы...
Проблема: надо сделать что в этом роде:
Код:
if mouse.CursorPos.X>shape1.ScreenToClient(point(x,y)) then
setcursorpos(100+form1.left,100+form1.top);
Только естественно эти строkи не работают - так как сравнение идет по одному параметру CursorPos.X ,а в ScreenToClient - 2 параметра - х,у...

Как сделать по другому не знаю....

Пока лезет ошибка Incompatible types
NitroSki вне форума Ответить с цитированием
Старый 02.06.2011, 12:27   #18
NitroSki
Давно не
Пользователь
 
Аватар для NitroSki
 
Регистрация: 19.05.2011
Сообщений: 58
По умолчанию

Спасибо всем за помощь.

Все сделал.
Вот что значит работать с голодным желудком, когда сахар в крови понижен - голова хреново соображает....

После обеда все решилось

Проблему решил может немного по дилетантски, но решил:

Код:
if mouse.CursorPos.x>shape1.left+form1.left then
setcursorpos(form1.left+shape1.Left+210,100+form1.top+shape1.Top+52);
Спасибо всем за ответы, и что не оставили тему без внимания
NitroSki вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эквалайзер...что это? кто это? Можно ли с ним подружиться? .Phoenix Мультимедиа в Delphi 45 08.04.2010 23:37
Кто-нибудь делал сайт в Ukoz? lilu1559 Помощь студентам 11 15.02.2010 20:49
кто делал вычисления суммы ряда? хелп! Akelas13 Общие вопросы C/C++ 1 09.06.2009 20:38