![]() |
EnterKey activate ?
Guten Tag
ich habe mehrere Webbrowser in meiner Form und möchte ich die Eingabetaste drauf aktivieren Mit dem Tutorial kann ich EnterKey nur in neinen aktivieren: ![]() |
Re: EnterKey activate ?
Hallo,
Anstatt WebBrowser1 wird dann einfach auf den aktiven Webbrowser verwiesen. Wenn sich die Webbrowser auf verschiedenen TabSheets eines PageControls befinden ist es einfacher. |
Re: EnterKey activate ?
Und wie konnte man den aktiven Webbrowser auslesen?
|
Re: EnterKey activate ?
Befinden sich alle Browser direkt auf der Form oder auf TabSheets?
|
Re: EnterKey activate ?
alle Webbrowsers befinden sich in Tabsheets
Auf Form1 gibt es keinen Webbrowser |
Re: EnterKey activate ?
Zitat:
|
Re: EnterKey activate ?
Ich habe dann folgendes gemacht :
Delphi-Quellcode:
und natürlich habe ich auch die Funktion geändernt :
var
Form1: TForm1; aktivWebBrowser: TWebBrowser; // ... procedure TForm1.PageControl1Change(Sender: TObject); begin if PageControl1.ActivePage=TabSheet1 then begin aktivWebBrowser:= WebBrowser1; end; if PageControl1.ActivePage=TabSheet2 then begin aktivWebBrowser:= WebBrowser2; end; end;
Delphi-Quellcode:
Leider wird EnterKey nur in Webbrowser1 aktiviert
procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean);
var iOIPAO: IOleInPlaceActiveObject; Dispatch: IDispatch; begin if (aktivWebBrowser = nil) then // also statt Webbrowser1, habe ich aktivWebBrowser verwendet begin Handled := False; Exit; end; ... Nur OnCreate kann ich den gewüschten aktiven Webbrowser zuweisen aber in Event PageControl1Change nicht:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
beginaktivWebBrowser:= WebBrowser2; // aktivWebBrowser:= WebBrowser1; end; |
Re: EnterKey activate ?
Hallo,
Sollte so funktionieren: // aktiven Browser ermitteln:
Delphi-Quellcode:
Man könnte auch den aktiven Browser im OnChange des PageControls auslesen und in einer Variable (FCurrentWB) speichern.
function TForm1.GetCurrentWB: TWebbrowser;
begin Result := nil; with PageControl do if ActivePage.Controls[0] is TWebbrowser then Result := (TWebbrowser(ActivePage.Controls[0])); end; procedure TForm1.MsgHandler(var Msg: TMsg; var Handled: Boolean); const StdKeys = [VK_BACK, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT]; var IOIPAO: IOleInPlaceActiveObject; Dispatch: IDispatch; CurrentWB: TWebbrowser; begin CurrentWB := GetCurrentWB; if CurrentWB = nil then begin Handled := False; Exit; end; Handled := (IsDialogMessage(CurrentWB.Handle, Msg) = True); if (Handled) and (not CurrentWB.Busy) then begin if FOleInPlaceActiveObject = nil then begin Dispatch := CurrentWB.Application; if Dispatch <> nil then begin Dispatch.QueryInterface(IOleInPlaceActiveObject, IOIPAO); if IOIPAO <> nil then FOleInPlaceActiveObject := IOIPAO; end; end; if FOleInPlaceActiveObject <> nil then if ((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and (Msg.wParam in StdKeys) then //nothing - do not pass on Backspace, Left, Right, Up, Down arrows else FOleInPlaceActiveObject.TranslateAccelerator(Msg); end; end;
Delphi-Quellcode:
procedure TForm1.PageControl1Change(Sender: TObject);
begin FCurrentWB := GetCurrentWB; end; |
Re: EnterKey activate ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo
Deine Funktion aktiviert auch die Eingabetaste nur in einen Webbrowser Hier ist das Projekt als Demo. Vielleicht habe ich was nicht aufgepasst mfg |
Re: EnterKey activate ?
Das hier gefällt mir aber nicht :
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz