![]() |
TWebBrowser Fokus abgeben
Hallo,
wie kann man der TWebBrowser Komponente abgewöhnen, daß sie sich immer den Fokus nimmt? Ich bin nämlich gerade dabei, einen Chat zu programmieren, dessen Text mit HTML angezeigt wird. Das Eingabefeld ist eine TEdit Komponente. Wenn man nur einmal den Webbrowser fokussiert, um dort z.b. Text herauszukopieren, und dann wieder das Edit-feld, und dort Text absendet, welcher dann dem Webbrowser hinzugefügt wird, zieht der Webbrowser wieder den Focus, sodass, wenn man eine weitere Nachricht schreiben will, man wieder das Edit fokussieren muss. Ich will aber, dass das Edit andauernd fokussiert bleibt, es sei denn, der Benutzer will z.b. Text aus dem Webbrowser kopieren. Erst nach Neustart des Programmes zeiht der Browser nicht wieder den Fokus, sobald man eine Nachricht gesendet hat. Das gleiche Problem hatte auch ![]() Hoffe ihr versteht mein Problem, Vielen Dank schonmal vorraus |
Re: TWebBrowser Fokus abgeben
Hab die Frage auch in einem anderem Forum gestellt (
![]() |
Re: TWebBrowser Fokus abgeben
Zitat:
|
Re: TWebBrowser Fokus abgeben
Es bewirkt nichts!
Egal welches Event ich benutze, er zieht den Fokus immer wieder... |
Re: TWebBrowser Fokus abgeben
Ich wollte das Verhalten reproduzieren aber kann es leider nicht.
Bei mir bleibt der Focus immer im Edit. (Konnte nicht den Delphi Tag nehmen, da er interpretiert)
Code:
uses
MSHTML, ActiveX; // Anfangs Zu einer leeren Seite navigieren procedure TForm1.FormCreate(Sender: TObject); begin Webbrowser1.Navigate('about:blank'); end; // Eine Zeile HTML Code hinzufügen procedure TForm1.InsertHTML(s: string); var WebDoc: HTMLDocument; WebBody: HTMLBody; begin WebDoc := Webbrowser1.Document as HTMLDocument; WebBody := WebDoc.body as HTMLBody; WebBody.insertAdjacentHTML('beforeEnd', s+' '); end; // OnKeyPress im Edit procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin Key := #0; InsertHTML(Edit1.Text); end; end; initialization OleInitialize(nil); finalization OleUninitialize; |
Re: TWebBrowser Fokus abgeben
Vielen Dank, dass Du Dich mit meinem Prolem so beschäftigst!
Ich musste den Code etwas ändern, damit ich ihn unter D5 kompilieren konnte. Das Problem ist immer noch da: Sobald ich etwas mit dem Edit "sende" und dann etwas aus dem Webbrowser herauskopiere, und dann wieder mit dem Edit was sende, schluckt das ActivX-Control sofort den Fokus. Mein abgeänderter Code:
Delphi-Quellcode:
Also nochmal: der Fehler kommt zustande, wenn man
uses
ActiveX; //MSHTML konnte er nicht finden // Anfangs Zu einer leeren Seite navigieren procedure TForm1.FormCreate(Sender: TObject); begin Webbrowser1.Navigate('about:blank'); Lines:=TStringList.Create(); end; // Zeilen HTML Code hinzufügen procedure AddHTMLToWebbrowser(AWebBrowser: TWebBrowser; AHTMLCode: TStrings); var myDocument:OleVariant; begin if AWebBrowser.Document = nil then AWebBrowser.Navigate('about:blank'); myDocument:=AWebBrowser.Document; myDocument.Write(AHTMLCode.Text); myDocument.Close; end; // OnKeyPress im Edit procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin Key := #0; Lines.add(Edit1.text + #10); AddHTMLToWebbrowser(Webbrowser1,Lines); end; end; initialization OleInitialize(nil); finalization OleUninitialize; 1. Etwas mit dem Edit sendet, indem man das Edit fokussiert, Text eingibt, und dann Enter drückt 2. Dann Text aus dem Webbrowser markiert bzw. herauskopiert 3. Dann mit der Maus den Fokus auf das Edit setzt, indem man es anklickt 4. Dann wieder etwas sendet (schwupp di wupp: der Fokus wurde dem Edit entzogen) 5. Dann wieder etwas sendet (Kann man nicht, ohne das man das Edit wieder selektiert...) Hoffe ich habe das Problem jetzt etwas genauer geschildert :-D |
Re: TWebBrowser Fokus abgeben
Hallo,
Ich kann das Problem mit deinem Code reproduzieren. Kann mir jedoch nicht erklären, warum es sich so verhält. Wenn ich aber meine InsertHTML nehme, verliert das Edit Feld den Fokus nicht. Falls du die unit MSHTML nicht hast, kannst du sie ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 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