![]() |
Re: EnterKey activate ?
Hab's noch etwas abgeändert. Sollte nun funktionieren.
(Alternative: Den EmbeddedWB verwenden)
Delphi-Quellcode:
function TForm1.GetCurrentWB: TWebbrowser;
begin Result := nil; with PageControl1 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_TAB, VK_RETURN]; { standard keys } ExtKeys = [VK_DELETE, VK_BACK, VK_LEFT, VK_RIGHT]; { extended keys } fExtended = $01000000; { extended key flag } var CurrentWB: TWebbrowser; begin CurrentWB := FCurrentWB; // exit if we don't get back a webbrowser object if not Assigned(CurrentWB) then begin Handled := False; Exit; end; if IsChild(CurrentWB.Handle, Msg.Hwnd) then begin if (Msg.Message = WM_CLOSE) then msg.message := 0 else if ((Msg.Message >= WM_KEYFIRST) and (Msg.Message <= WM_KEYLAST)) and ((Msg.wParam in StdKeys) or (GetKeyState(VK_CONTROL) < 0) or (Msg.wParam in ExtKeys) and ((Msg.lParam and fExtended) = fExtended)) then begin Handled := (CurrentWB.Application as IOleInPlaceActiveObject).TranslateAccelerator(Msg) = S_OK; if not Handled then begin Handled := True; TranslateMessage(Msg); DispatchMessage(Msg); end; end; end; end; procedure TForm1.PageControl1Change(Sender: TObject); begin begin FCurrentWB := GetCurrentWB; end; |
Re: EnterKey activate ?
Vielen Dank Toms. Es hat jetzt geklappt :spin2:
Ich musste auch FCurrentWB := GetCurrentWB; in FormCreate dazu anlegen mfg |
Re: EnterKey activate ?
Zitat:
Delphi-Quellcode:
//..
CurrentWB := FCurrentWB; // exit if we don't get back a webbrowser object if not Assigned(CurrentWB) then begin FCurrentWB := GetCurrentWB; end; if IsChild(CurrentWB.Handle, Msg.Hwnd) then begin //.. |
Re: EnterKey activate ?
Der Code funktioniert wunderbar in meinem Demo
Aber wenn ich versuche den Code in mein Programm zu verwenden, funktioniert es nicht Mein Programm hat auch in Form1 mehrere Tabsheets. Also identisch :| Wo kann das Problem vielleicht liegen ? |
Re: EnterKey activate ?
Zitat:
|
Re: EnterKey activate ?
Hallo
ich habe den Ursacher erwischt Wenn ich eine Label auf Tabsheet, wo auch Webbrowser drauf liegt, lege, dann wird die Enter-Taste in Webbrowser nicht aktiviert. Wenn ich die Label lösche, dann funktioniert's wieder Das Problem ist nur mit Label. Wenn ich einen Edit drauf hinzufüge dann ist kein Problem Warum ?! |
Re: EnterKey activate ?
Zitat:
Das Problem liegt hier:
Delphi-Quellcode:
function TForm1.GetCurrentWB: TWebbrowser;
begin Result := nil; with PageControl1 do if ActivePage.Controls[0] is TWebbrowser then Result := (TWebbrowser(ActivePage.Controls[0])); end; Konkret hier:
Delphi-Quellcode:
Das Umschreiben / Verbessern der Funktion überlasse ich mal dem Fragesteller.
TWebbrowser(ActivePage.Controls[0]));
|
Re: EnterKey activate ?
erlich gesagt, keine Ahnung :oops:
d.h. ich muss den Tabsheet immer als ActivePage machen, wenn auf den Tabsheet andere Objekte dazu liegen ? |
Re: EnterKey activate ?
Zitat:
@Mini-Programmierer: Was macht denn?
Delphi-Quellcode:
Du hast erwähnt, dass du auf dem TabSheet noch einen TLabel platziert hättest.
TWebbrowser(ActivePage.Controls[0]));
Warum funktioniert dann der obige Zugriff nicht mehr? |
Re: EnterKey activate ?
ich habe eine Schleife in der Funktion eingebaut aber hat es trotzdem nicht geklappt :
Delphi-Quellcode:
function TForm1.GetCurrentWB: TWebbrowser;
var i: integer; begin result := nil; for i:= 0 to PageControl1.ActivePage.ControlCount -1 do begin if (PageControl1.ActivePage.Controls[i] is TWebBrowser) then result := (PageControl1.ActivePage.Controls[i] as TWebBrowser) end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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