执行此代码时,src
和alt
设置正确,但border
,align
,hspace
和vspace
生成EOleException
- 错误的变种类型。
是否可以使用webbrowser设置border
,align
,hspace
和vspace
,如果是,如何设置?
无论如何都要找出正确的变量类型是什么?
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;
答案 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;