Показать сообщение отдельно

  #3674  
Старый 01.06.2009, 00:14
Flame of Soul
Участник форума
Регистрация: 25.05.2007
Сообщений: 290
С нами: 9980798

Репутация: 435
Отправить сообщение для Flame of Soul с помощью MSN
По умолчанию

Цитата:
Сообщение от fatalo  
Появился вопрос.Как в Делфи в TWebBrowser'e ввести текст в определенную форму?
Тоесть открываю сайт,нахожу определенную форму и вставляю туда текст.
Я не прошу ничего писать за меня.Только подсказку действий.Заранее спасибо.

1. Парсить полученный исходник, и вставлять текс непосредственно туда.

2ю Передача на сервер данных методом POST

PHP код:
procedure TForm1.PostWithWebBrowser(PostStringstringURLOleVariant);
var
  
DataPointer;
  
PostDataOleVariant;
  
FlagsTargetFrameHeadersOleVariant;
begin
  PostData 
:= VarArrayCreate([0Length(PostString) - 1], varByte);
  
Data := VarArrayLock(PostData);
  try
    
Move(PostString[1], Data^, Length(PostString));
  finally
    
VarArrayUnlock(PostData);
  
end;
  
Flags := EmptyParam;
  
TargetFrameName := EmptyParam;
  
Headers := EmptyParam;
  
WebBrowser1.Navigate2(URLFlagsTargetFramePostDataHeaders);
end

3. Заполнять форму


PHP код:
function FillForm(WebBrowserTWebBrowserFieldNamestringValuestring): Boolean;
  var
    
ijInteger;
    
FormItemVariant;
  
begin
    Result 
:= False;
  if 
WebBrowser.OleObject.Document.all.tags('FORM').Length 0 then
    begin
      
Exit;
    
end;  
  for 
:= 0 to WebBrowser.OleObject.Document.forms.Length do
    
begin
      FormItem 
:= WebBrowser.OleObject.Document.forms.Item(I);
      for 
:= 0 to FormItem.Length do
      
begin
        
try
        if 
FormItem.Item(j).Name FieldName then
          begin
            FormItem
.Item(j).Value := Value;
            
Result := True;
          
end;
        
except
          
Exit;
        
end;
      
end;
    
end;
  
end;

procedure TForm1.WebBrowser1DocumentComplete(SenderTObject;
    const 
pDispIDispatch; var URLOleVariant);
  
begin
    
if FillForm(WebBrowser1'homepage''http://www......) = False then
      ShowMessage('
ErrorField not available or no Form found.');
 end;

procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer);
  begin
    if ProgressMax = 0 then
    begin
      label1.Caption := '';
      Exit;
    end;
    try
      if (Progress <> -1) and (Progress <= ProgressMax) then
        label1.Caption := IntToStr((Progress * 100) div ProgressMax) + '
loaded...'
      else
        label1.Caption := '';
    except
      on EDivByZero do Exit;
    end;
  end;

procedure TForm1.Button1Click(Sender: TObject);
  begin
    Webbrowser1.Navigate('
http://www.......');
  
Caption := Webbrowser1.OleObject.Document.Title;
  
end
 
Ответить с цитированием