2012-01-16 43 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