可以设置WebBrowser Document Image- border,align,hSpace和vSpace吗?

时间:2012-01-16 21:49:49

标签: delphi browser

执行此代码时,srcalt设置正确,但borderalignhspacevspace生成EOleException - 错误的变种类型

是否可以使用webbrowser设置borderalignhspacevspace,如果是,如何设置?
无论如何都要找出正确的变量类型是什么?

iDoc := ( WebBrowser1.Document as IHTMLDocument2 );
iDoc.execCommand( 'InsertImage', False, 0 );
iImageIndex := WebBrowser1.OleObject.Document.Images.Length - 1;
iImageFileName := ExtractFileName( iImageFilePath );
// Change the src path to a relative path 
iSrc := ChangeFilePath( iImageFilePath, '..\Images\' );
iImageTextAlternative := FormInsertImage.AlternateText1.Text;
// Set Src 
WebBrowser1.OleObject.Document.Images.Item( iImageIndex ).src := iSrc;
// Set a text alternative to the graphic 
WebBrowser1.OleObject.Document.Images.Item( iImageIndex ).Alt := iImageTextAlternative;
// Set border 
WebBrowser1.OleObject.Document.Images.Item( iImageIndex ).border := FormInsertImage.Border1.EditValue;
// Set align 
WebBrowser1.OleObject.Document.Images.Item( iImageIndex ).align := FormInsertImage.Alignment1.EditValue;
// Set hSpace 
WebBrowser1.OleObject.Document.Images.Item( iImageIndex ).hSpace := FormInsertImage.hSpace1.EditValue;
// Set vSpace 
WebBrowser1.OleObject.Document.Images.Item( iImageIndex ).vSpace := FormInsertImage.vSpace1.EditValue;

编辑 - 现在可以使用...

iDocument := ( TopicWebBrowser1.Document as IHTMLDocument2 );
if Assigned( iDocument ) then
begin
  // Insert the image
  iDocument.execCommand( 'InsertImage', False, 0 );
  while TopicWebBrowser1.ReadyState < READYSTATE_COMPLETE do
    Application.ProcessMessages;
  HTMLElementCollection := ( TopicWebBrowser1.Document as IHTMLDocument2 ).images;
  iImageIndex := TopicWebBrowser1.OleObject.Document.images.Length - 1;
  HTMLImgElement := ( HTMLElementCollection.Item( iImageIndex, 0 ) as IHTMLImgElement );
  // Set the src, alt, border, align, hspace and vspace             HTMLImgElement.src := ChangeFilePath( FormInsertImage.PictureName1.Text, '..\Images\' );
  // Change the src path to a relative path 
  HTMLImgElement.alt := FormInsertImage.AlternateText1.Text;
  HTMLImgElement.border := FormInsertImage.Border1.EditValue;
  HTMLImgElement.align := FormInsertImage.Alignment1.EditValue;
  HTMLImgElement.hspace := FormInsertImage.hspace1.EditValue;
  HTMLImgElement.vspace := FormInsertImage.vspace1.EditValue;
end;

1 个答案:

答案 0 :(得分:3)

尝试这样的事情

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  HTMLImgElement: IHTMLImgElement;
  HTMLElementCollection: IHTMLElementCollection;
begin
  WebBrowser1.Navigate('http://www.example.com');
  while WebBrowser1.ReadyState < READYSTATE_COMPLETE do
    Application.ProcessMessages;

  HTMLElementCollection := (WebBrowser1.Document as IHTMLDocument2).images;

  for I := 0 to HTMLElementCollection.length - 1 do
  begin
    HTMLImgElement := (HTMLElementCollection.item(I, 0) as IHTMLImgElement);
    HTMLImgElement.src := 'c:\someimage.jpg';
    HTMLImgElement.alt := 'Alternative text ...';
    HTMLImgElement.border := '5';
    HTMLImgElement.align := 'middle';
    HTMLImgElement.hspace := 5;
    HTMLImgElement.vspace := 5;
  end;
end;