2012-01-16 71 views
2

当执行该代码时,srcalt设置正确,但borderalignhspacevspace和产生EOleException - 坏varialble类型可以WebBrowser文档图像边框,对齐,hSpace和vSpace设置?

是否可以设置border,align,hspacevspace与网页浏览器,如果是这样,如何?
无论如何找出正确的变量类型是什么?

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; 

回答

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; 
+1

我不得不告诉你了的感觉! ;) – kobik 2012-01-16 22:34:49