Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Запись в поля WebBrowser при помоши DOM


Автор: max-@ 6.11.2007, 21:53
Суть такова

Код

type
  TForm1 = class(TForm)

.....

  public
    item_value:Variant;

.....

if (wParam=WM_LBUTTONDOWN) then
       begin
           if Boolean(GetCursorPos(p)) then
           begin
             p.X := p.X-4;
             p.Y := p.Y-67;
             if TWebBrowser(Form1.PageControl1.ActivePage.Controls[0]).LocationURL<>'' then
             begin
               item := TWebBrowser(Form1.PageControl1.ActivePage.Controls[0]).oleobject.document.elementfrompoint(p.X, p.Y);
               if (LowerCase(item.tagname)='input')
                  and(LowerCase(item.type)<>'radio')
                  and(LowerCase(item.type)<>'button')
                  and(LowerCase(item.type)<>'submit')
                  and(LowerCase(item.type)<>'checkbox')
                  and(LowerCase(item.type)<>'file')
                  and(LowerCase(item.type)<>'hidden')
                  and(LowerCase(item.type)<>'image')
                  and(LowerCase(item.type)<>'reset')
                  and(LowerCase(item.type)<>'button')
                  or(LowerCase(item.tagname)='textarea')
               then
               begin
                 Form1.item_value:=item;
                 //Form1.item_value:='123'; // Писать в выбранное поле '123', здесь это работает
               end;
             end;
           end;
          Result := CallNextHookEx(hookid, nCode, wParam, lParam);
       end;

....


procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if item_value<>0 then
    item_value.value := chr(key); // Запись в выбранное ранее поле значения из эдита, здесь это не работает
end;


Вопрос в следующем почему во втором случае не получается записывать данные в поле WebBrowser?

Добавлено через 6 минут и 55 секунд
Ошибка:

Invalid variant operation.

Автор: max-@ 7.11.2007, 02:17
прикольно)

нашел решение

Код

procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Form1.item_value.innerText := Form1.item_value.value+chr(Key);
end;


но теперь вопрос в другом как удалить символ если нажато backspace или delete?

конешно удалить не проблема скажете вы (можно в делфе обрудать строку)...но как удалить в том месте где стоит каретка?)

Автор: max-@ 7.11.2007, 03:23
вопрос решен smile 

решил через промежуточный edit или textarea

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)