Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.05.2014, 14:30
Noooob Noooob вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 38
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Новый курсор

Здравствуйте, а можно создать курсор в пределах формы? (Независимый от основного)

Последний раз редактировалось Noooob, 10.05.2014 в 14:53.
Ответить с цитированием
  #2  
Старый 10.05.2014, 16:02
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

И чем этот второй курсор будет управляться? Силой мысли?
А без управления - элементарно, просто рисуешь стрелочку на канве.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #3  
Старый 10.05.2014, 16:22
Noooob Noooob вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 38
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Он должен менять координаты и делать правый клик. Пробовал через CreateCursor но не получилось.
Ответить с цитированием
  #4  
Старый 10.05.2014, 16:26
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Автоматически чтоли? А чем SendMessage(..., WM_RBUTTONDOWN, ...) не устраивает?
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #5  
Старый 10.05.2014, 17:53
Noooob Noooob вне форума
Прохожий
 
Регистрация: 24.12.2013
Сообщения: 38
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

SendMessage не делает клик в WebBrowser1. Вот код
Код:
PostMessage(Form1.WebBrowser1.Handle,WM_LBUTTONDOWN,0,(i shl 16)+j+Screen.Height-Form1.Height);
PostMessage(Form1.WebBrowser1.Handle,WM_SETCURSOR,Form1.WebBrowser1.Handle,MakeLong(HTCLIENT,WM_LBUTTONDOWN));
PostMessage(Form1.WebBrowser1.Handle,WM_LBUTTONUP,0,(i shl 16)+j+Screen.Height-Form1.Height);
PostMessage( Form1.WebBrowser1.Handle,WM_SETCURSOR,Form1.WebBrowser1.Handle,MakeLong(HTCLIENT,WM_LBUTTONUP));
Ответить с цитированием
  #6  
Старый 10.05.2014, 18:12
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Вот кто вас всех учит задавать совершенно левый вопрос?
Ведь цель: нажать на что-то в WebBrowser.
А вопрос: как создать еще один независимый курсор.
Ответили бы вам каким-нибудь извращенским километровым кодом по организации самодельного курсора целиком с нуля, а потом бы оказалось, что это не работает нифига и вообще было не нужно.
Если цель - нажать в WebBrowser, то и вопрос должен быть - "Как нажать в WebBrowser?"
В связи с этим первое, что приходит в голову - открыть www.googe.com и ввести там "Twebbrowser нажать на кнопку". И получить массу готовых ответов.
Далее. Касаемо PostMessage.
1) В данном случае SendMessage гораздо лучше, т.к. он ожидает завершения.
2) Есть ScreenToClient и ClientToScreen. Зачем эти извращенские преобразования (которые, к тому же, не верны)?
3) Простейший клик состоит из двух SendMessage, первый с нажатием, второй с отпусканием.
4) Вы просили правый клик, а в коде - левый, и еще и неверный (третий параметр в клике, насколько я знаю, должен быть не ноль).
Все это тоже легко находится в гугле по запросу "программный клик delphi".
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #7  
Старый 10.05.2014, 18:55
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Цитата:
Сообщение от Bargest
...Ответили бы вам каким-нибудь извращенским километровым кодом...
Вот что значит проницательность, прям в воду глядишь

...

Цитата:
Сообщение от Noooob
...а можно создать курсор в пределах формы?...
Можно сделать это и с основным - при заходе на форму по OnMouseMove сохранять координаты курсора, а при покидании ея его восстанавливать. Вот пример
Код:
var
 flg: boolean;
 mX, mY: integer; 

procedure TForm1.FormDeactivate(Sender: TObject);
begin
ReleaseCapture;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if GetCapture = 0 then SetCapture(Form1.Handle);
 if PtInRect(Rect(Left, Top, Left + Width,Top + Height),ClientToScreen(Point(X,Y))) then
  begin
   if not flg then
    begin
     flg:= true;
     mX:= X;
     mY:= Y;
    end;
  end else
   begin
    if flg then
     begin
      flg:= false;
      SetCursorPos(mX,mY);
     end;
  end;
end;
или вам надо чтоб курсор пределы формы не покидал? Непонятки
Ответить с цитированием
  #8  
Старый 14.05.2014, 22:36
Тролль Тролль вне форума
Заблокирован
 
Регистрация: 07.05.2014
Сообщения: 11
Версия Delphi: 7, Kylix
Репутация: -1385
По умолчанию

Если вебброузер встроен в Вашу прогу, но ничего нажимать не надо - см. в яндексе: webbrowser.oleobject
Нужно найти в DOM нужный тег и вызвать метод - чаще Click();
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter