AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TWebBrowser Fokus abgeben

Offene Frage von "Henning der zweite"
Ein Thema von Henning der zweite · begonnen am 5. Apr 2008 · letzter Beitrag vom 11. Mai 2008
Antwort Antwort
Henning der zweite

Registriert seit: 10. Mär 2008
Ort: Braunschweig
21 Beiträge
 
Delphi 5 Standard
 
#1

TWebBrowser Fokus abgeben

  Alt 5. Apr 2008, 11:56
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 Berni68.

Hoffe ihr versteht mein Problem,
Vielen Dank schonmal vorraus
Henning D.
  Mit Zitat antworten Zitat
Henning der zweite

Registriert seit: 10. Mär 2008
Ort: Braunschweig
21 Beiträge
 
Delphi 5 Standard
 
#2

Re: TWebBrowser Fokus abgeben

  Alt 8. Apr 2008, 21:28
Hab die Frage auch in einem anderem Forum gestellt (Delphi-Treff)
Henning D.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: TWebBrowser Fokus abgeben

  Alt 11. Mai 2008, 13:42
Zitat von Henning der zweite:
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
Hallo, kannst du nicht nach dem Absenden des Textes den Fokus wieder auf das Edit Feld setzen?
Thomas
  Mit Zitat antworten Zitat
Henning der zweite

Registriert seit: 10. Mär 2008
Ort: Braunschweig
21 Beiträge
 
Delphi 5 Standard
 
#4

Re: TWebBrowser Fokus abgeben

  Alt 11. Mai 2008, 13:53
Es bewirkt nichts!
Egal welches Event ich benutze, er zieht den Fokus immer wieder...
Henning D.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: TWebBrowser Fokus abgeben

  Alt 11. Mai 2008, 17:20
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;
Thomas
  Mit Zitat antworten Zitat
Henning der zweite

Registriert seit: 10. Mär 2008
Ort: Braunschweig
21 Beiträge
 
Delphi 5 Standard
 
#6

Re: TWebBrowser Fokus abgeben

  Alt 11. Mai 2008, 19:46
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:
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;
Also nochmal: der Fehler kommt zustande, wenn man
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
Henning D.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#7

Re: TWebBrowser Fokus abgeben

  Alt 11. Mai 2008, 20:07
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 hier herunterladen.
Thomas
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz