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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2011, 23:30   #1
Almagel
 
Регистрация: 22.08.2011
Сообщений: 7
Печаль WebBrowser нажатие на стрелки

вобщем возникла одна проблема. Задался я как-то идеей написать что-то типо клиента для браузерной игры, просто так, для облегчения. Понял что надо использовать WebBrowser и все получилось с первого раза, но вот незадача, управление персонажем просходит нажатием на стрелочки, а когда я нажимаю на них то просто выделяестся что-нибудь другое или вообще ничего не происходит та же беда и backspase-ом, искал долго в инете но нашел только 1 готовуб прогу на базе делфи и там все работало как надо, но исходников небыло. Вобщем прошу помощи помогите что там нужно сделать чтобы игра поняла что я от нее хочу=))



вот код весь что надо добавить чтобы стрелочки с backspase-ом начали работать как надо????
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    ComboBox1: TComboBox;
    procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if Key = VK_RETURN then
    WebBrowser1.Navigate(ComboBox1.Text);
end;

end.
У нас принято оформлять код специальным тегом. Кнопка #. Модератор

Последний раз редактировалось dr.Chas; 04.09.2011 в 17:35.
Almagel вне форума Ответить с цитированием
Старый 23.08.2011, 00:33   #2
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

я так понял вы хотите через нажатие кнопок в delphi выполнять действия внутри веб страницы?
Lesha вне форума Ответить с цитированием
Старый 23.08.2011, 00:42   #3
Almagel
 
Регистрация: 22.08.2011
Сообщений: 7
По умолчанию

да я хочу нажать на клаве стрелку влева и в браузере во флеш игре персанаж движется влева вправа значит вправа ит.д.
Almagel вне форума Ответить с цитированием
Старый 23.08.2011, 01:01   #4
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Цитата:
браузере во флеш игре персанаж движется влева вправа значит вправа
проблематично будет достучаться до Флеша из браузера.

Последний раз редактировалось Lesha; 23.08.2011 в 01:06.
Lesha вне форума Ответить с цитированием
Старый 23.08.2011, 01:13   #5
Almagel
 
Регистрация: 22.08.2011
Сообщений: 7
По умолчанию

я качал браузер от делфи и все работало но мне нужен исходник а там его нет((
Almagel вне форума Ответить с цитированием
Старый 23.08.2011, 03:44   #6
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

по-идее без разницы что у вас там в браузере открыто - проблема то в работе компонентов на форме:
Цитата:
когда я нажимаю на них то просто выделяестся что-нибудь другое
т.е. вам нужно просто объяснить популярно своей программе, чего вы хотите по нажатию на стрелочки.
как это сделать?

я в силу своих не очень больших знаний вижу здесь только очевидный путь:
послать сообщение в WebBrowser о том что была нажата какая-то кнопка,
а он уж пусть сам там дальше разбирается, что с этим делать.
и ни до какого флеша из TWebBrowser достукиваться не надо ))
правда есть одно НО.

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

такова теория. теперь к практике.
как отправить сообщение в TWebBrowser - копайте сами в сторону WinApi SendMessage

как поймать нажатие кнопки в программе?
есть такая тема как application.OnMessage .
процедура присвоенная этому свойству будет вызываться каждый раз при
возникновении какого-либо события (нажатие кнопки, движение мышки и т.д.).

создадим процедуру для обработки сообщений:
Код:
procedure TForm1.Bugoga(var Msg: TMsg; var Handled: Boolean);
begin
if (msg.message = wm_keydown) and (msg.wParam = keyCode) then  ShowMessage('гыгыгы');
...
end;
где keyCode - код клавиши, нажатие которой проверяется.
получить этот код для каждой клавиши можно примерно так:
Код:
if (msg.message = wm_keydown) and (msg.wParam = keyCode) then  ShowMessage(inttostr(msg.wParam));
ну вот как-то так...
p.s. я не указал прямо один важный момент, но он здесь есть.
если внимательно читали - разберетесь =)

Последний раз редактировалось xrob; 23.08.2011 в 03:49.
xrob вне форума Ответить с цитированием
Старый 23.08.2011, 20:29   #7
Almagel
 
Регистрация: 22.08.2011
Сообщений: 7
По умолчанию

я не настолько силен в програмировании как вы и ничего не понял из вышесказанного, если не трудно расскажите поэтапно, что, откуда и куда добавить какой компанент там и т.п. и какой код при этом писать....
Almagel вне форума Ответить с цитированием
Старый 23.08.2011, 21:32   #8
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

омг, это даже не "сделайте за меня",
это "делать буду я, но вы мне объясняйте каждое действие!" =)))

ну хорошо, сделаю пару камментов.

1. что значит?
procedure TForm1.Bugoga(var Msg: TMsg; var Handled: Boolean);
это значит что в классе TForm1 (ваша форма) есть некая процедура Bugoga,
которая воспринимает 2 параметра: "Msg" типа TMsg, и "Handled" логического типа типа.

каким образом процедура Bugoga появилась в классе TForm1?
вы вписали ее туда ручками:
объявили в классе:
Код:
TForm1 = class(TForm)
...
procedure Bugoga(var Msg: TMsg; var Handled: Boolean);
end;
и реализовали в implementation:
Код:
implementation
...

procedure TForm1.Bugoga(var Msg: TMsg; var Handled: Boolean);
begin
// как реализовать эту процедуру я уже писал
end;
2. кто будет запускать эту процедуру?
ее будет запускать неведомая ё****я хрень, о которой ничего не могу сказать,
кроме того что есть такой объект aplication, а у него есть свойство OnMessage,
которому можно присвоить нашу процедуру Bugoga.
делаем это в Form1.OnCreate:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
...
application.OnMessage:=Bugoga;
end;
после этого процедура Bugoga будет вызываться при каждом событии в программе.

а если вы еще не знаете что такое TForm1.FormCreate,
то вам либо во фриланс "сделайте мне клиент для игры",
либо курить в гугель "Delphi основы программирования".

p.s.
кстати, вашу задачу можно решить еще проще )))
уберите нахрен ComboBox, накой он вам сдался?

если вы пишете клиент для конкретной игры - стало быть и адрес всегда один и тот же,
так что просто делайте Navigate в OnCreate формы и будет вам щасьтъе!

Последний раз редактировалось xrob; 23.08.2011 в 21:38.
xrob вне форума Ответить с цитированием
Старый 23.08.2011, 22:35   #9
Almagel
 
Регистрация: 22.08.2011
Сообщений: 7
По умолчанию

ComboBox там небыло сразу, было вписано куда заходить....
да я плуг, но хочеться самому сделать, а раз есть знаюшие люди спасибо огромное им и Вам в частности за помощь...
ничего не вышло сначало выдавала ошибку
Цитата:
if (msg.message = wm_keydown) and (msg.wParam = keyCode) then ShowMessage(inttostr(msg.wParam));
там где красное а потом просто вылетало окошко с хз чем вобщем вернулся к ошибке и все...
лан спасибо больлшое пойду дальше тупить((
Almagel вне форума Ответить с цитированием
Старый 24.08.2011, 00:40   #10
xrob
Форумчанин
 
Регистрация: 18.10.2010
Сообщений: 419
По умолчанию

эх... это я тоже писал...
KeyCode - в моем примере переменная, мной же и объявленная.
KeyCode:integer;
KeyCode:=25; здесь 25 - это код клавиши от балды.
xrob вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WebBrowser нажатие на кнопку отправки Bug_Q Работа с сетью в Delphi 4 06.02.2011 20:43
webbrowser и кнопка в нем, нажатие - действие grafgrial Общие вопросы Delphi 6 08.12.2010 14:03
Стрелки ddeman666 Помощь студентам 0 16.05.2010 12:04
Долгое нажатие клавиши в KeyDown как одно нажатие marina15056 Общие вопросы Delphi 7 16.08.2009 00:22
Анимирование стрелки... kentlm Мультимедиа в Delphi 2 14.05.2009 02:17