2009-05-28 8 views
3

Zwei kurze FragenDelphi - TWebBrowser gibt

  1. Wie kann ich auf eine TWebBrowser konzentrieren? Dies ist so, dass das Mausrad die Anzeige scrollt, ohne zuerst in den TWebBrwoser Anzeigebereich zu klicken. Es hat eine setfocus-Methode, die nichts tut (oder nichts zu tun scheint).

  2. Klicken Sie in einem TWebBrowser mit der rechten Maustaste auf einen angezeigten Link und wählen Sie Eigenschaften aus. Die Schaltflächen OK und Abbrechen sind deaktiviert und Sie können das Dialogfeld nicht schließen. Sie müssen die Aufgabe Ihrer App beenden, um sie zu beenden.

Irgendwelche Ideen?

Danke, Jason.

+0

In SO ist es das Beste, Fragen getrennt zu stellen. Der Sinn von SO besteht darin, eine Sammlung von Fragen mit qualitativ hochwertigen Antworten zu erstellen. Wenn Sie zwei separate Antworten auf Ihre Fragen erhalten, welche akzeptieren Sie? – Argalatyr

+0

Macht Sinn. Ich werde in Zukunft getrennte Fragen erstellen. Jason. –

Antwort

6

Antwort für Frage 1 nach viel Web-Jagd ....

with WebBrowser1 do 
if Document <> nil then 
with Application as IOleobject do 
DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect); 
0

Diese im folgenden Artikel von Peter Johnson bedeckt ist, How to make a TWebBrowser become the active control when clicked.

stark Zusammenfassend hinzufügen, um dieses OnCommandStateChange Ereignis:

procedure TWebBrowserFrame.CommandStateChange(Sender: TObject; 
    Command: Integer; Enable: WordBool); 
var 
    Doc: IHTMLDocument2;  // document object 
    Sel: IHTMLSelectionObject; // current selection 
begin 
    // Check we have a valid web browser triggering this event 
    if not Assigned(Sender) or not (Sender is TWebBrowser) then 
    Exit; 
    // Check we have required command 
    if TOleEnum(Command) <> CSC_UPDATECOMMANDS then 
    Exit; 
    // Get ref to document object and check not nil 
    Doc := Browser.Document as IHTMLDocument2; 
    if not Assigned(Doc) then 
    Exit; 
    // Get ref to current selection 
    Sel := Doc.selection as IHTMLSelectionObject; 
    // If selection is of correct type then we have a mouse click 
    if Assigned(Sel) and (Sel.type_ = 'Text') then 
    begin 
    // Make the web browser the form's active control 
    (Sender as TWebBrowser).SetFocus; 
    Doc.parentWindow.focus; 
    end; 
end; 

Es gibt viel mehr Detail in dem Artikel ist, bitte stellen Sie sicher, alles zu lesen.

+0

Ich habe in einem Verweis auf den Artikel bearbeitet, von dem Sie diesen Code erhalten haben. Bitte schreiben Sie keinen Code ohne Zuordnung. –

Verwandte Themen