Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TWebbrowser Formular verschieben UND klickbar (https://www.delphipraxis.net/183970-twebbrowser-formular-verschieben-und-klickbar.html)

Satyr 16. Feb 2015 19:32


TWebbrowser Formular verschieben UND klickbar
 
Huhu,

ich habe noch ein (hoffentlich kleines) Problem mit TWebBrowser.

Ich möchte das man nicht nur mit der Titelleiste sondern überall das Fenster verschieben kann. Das war keine große Sache mit folgendem Code:

Delphi-Quellcode:
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin

  if (Msg.Message = WM_LBUTTONDOWN) then
  begin
    ReleaseCapture;
    Perform(WM_SYSCOMMAND, $F012, 0);
  end;

end;
Nur habe ich dann das Problem, im TWebBrowser nicht mehr klicken zu können. Ich habe schon versucht noch gleichzeitig WM_MOUSEMOVE abzufragen, das ändert aber leider nichts. Gibt es da noch Möglichkeiten?

Gruß,
Andreas

hathor 16. Feb 2015 22:46

AW: TWebbrowser Formular verschieben UND klickbar
 
Wenn man ReleaseCapture; weglässt, dann geht es - evtl. muss man immer 2x (NICHT Doppelklick!) klicken.

Besser ist es so:

Delphi-Quellcode:
begin
  if (Msg.Message = WM_LBUTTONDOWN) then
  PostMessage(Self.Handle, WM_SYSCOMMAND, 61458, 0) ;
end;

Satyr 17. Feb 2015 01:06

AW: TWebbrowser Formular verschieben UND klickbar
 
Funktioniert perfekt! Auch ohne Doppelklick. Zum Glück, der ist dafür reserviert das Fenster zu maximieren.

Vielen Dank :)

Satyr 17. Feb 2015 23:00

AW: TWebbrowser Formular verschieben UND klickbar
 
Hach Menno, Delphi mag mich momentan nicht...
Ich bin vom enbeddedWB zu Chrominium gewechselt. Da funktioniert genau das komischerweise nicht mehr.
Weiß jemand was da anders ist? Die Fensternachrichten werden weiterhin wie gewohnt abgefangen. Deshalb verstehe ich nicht was groß anders ist...

hathor 18. Feb 2015 06:59

AW: TWebbrowser Formular verschieben UND klickbar
 
Ich mag CHROMIUM nicht...
http://www.delphipraxis.net/1289935-post49.html

Bernhard Geyer 18. Feb 2015 07:38

AW: TWebbrowser Formular verschieben UND klickbar
 
Wenn du WM_LBUTTONDOWN abfängst wirst du auch WM_LBUTTONUP (und evtl. auch WM_MOUSEMOVE (?)) abfangen müssen.
Ansonsten bringst du die interne Stage-Engine des IE durcheinander und er nicht mehr weis in welchen State er ist.

hathor 18. Feb 2015 08:52

AW: TWebbrowser Formular verschieben UND klickbar
 
Folgender Code funktioniert bei mir:

Delphi-Quellcode:
procedure TMainForm.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if (Msg.Message = WM_LBUTTONDOWN) then
  Perform(WM_SYSCOMMAND, $F012, 0);
end;
Anmerkung:
Ich habe CRM : TChromium auf ein Panel gesetzt.
Allerdings finde ich es NICHT gut, bei einer Message-gesteuerten Komponente wie TChromium mit solchen Aktionen dazwischen zu fummeln.
Das ist auch unnötig.
TChromium ist MISERABEL programmiert und haut 100e Messages raus, ohne dass irgend etwas davon nötig ist!!!

Satyr 18. Feb 2015 13:34

AW: TWebbrowser Formular verschieben UND klickbar
 
Ich habe grade festgestellt das es reicht PostMessage in SendMessage zu tauschen. Ist dann in der Bedienung zwar ein klein wenig hakelig aber nichts schlimmes.

Ich hatte bei TChromium bisher noch keine Bugs. Es ist alles ein wenig aufwändiger zu implementieren, fühlt sich aber irgendwie stabiler an. Ich bin gewechselt weil TEmbeddedWB bei mir schnell mal eine Access Violation gezeigt hat, bei manchen Seiten und ich nicht vom IE abhängig sein wollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 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