AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drag & Drop in TWebBrowser funtioniert nicht

Ein Thema von Erutan · begonnen am 10. Mär 2014 · letzter Beitrag vom 18. Mär 2014
 
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#4

AW: Drag & Drop in TWebBrowser funtioniert nicht

  Alt 11. Mär 2014, 01:42
Hallo,

Zitat:
Das Problem: Es geht nicht. Dabei scheint das Problem beim Label zu liegen [...]
Nö, das Label ist sicher nicht das Problem. Ich würde eher auf die Bedingung Deiner if-Abfragen tippen - schau mal in die OH was da zu READYSTATE_INTERACTIVE und Konsorten steht. Ein if (Webbrowser1.ReadyState = READYSTATE_INTERACTIVE) or (Webbrowser1.ReadyState = READYSTATE_COMPLETE) then an der richtigen Stelle könnte vielleicht schon Wunder wirken.

Allerdings würde ich eher zu nachfolgendem Lösungsansatz tendieren:
Delphi-Quellcode:
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    labelHaupttext: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure WebBrowser1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure WebBrowser1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
  private
    { Private-Deklarationen }
    FDropTarget : IHTMLInputElement;
  public
    { Public-Deklarationen }
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FDropTarget := nil
end;

procedure TForm1.WebBrowser1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if Assigned (FDropTarget) then
    begin
      FDropTarget.value := labelHaupttext.Caption;
      FDropTarget := nil
    end
end;

procedure TForm1.WebBrowser1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
var
  d : IHTMLDocument2;
  e : IHtmlElement;
  i : IHTMLInputElement;
  s, t : string;
begin
  FDropTarget := nil;
  if (Source is TLabel) and Assigned (WebBrowser1.Document) then
    begin
      d := WebBrowser1.Document as IHTMLDocument2;
      e := d.elementFromPoint (X, Y);
      if Assigned (e) then
        begin
          s := LowerCase (e.tagName);
          if (s = 'input') or (s = 'textarea') then
            begin
              i := e as IHTMLInputElement;
              if s = 'textareathen
                FDropTarget := i
              else
                begin
                  t := LowerCase (i.type_);
                  if (t = 'text') or (t = 'password') then
                    FDropTarget := i
                end
            end
        end
    end;
  Accept := Assigned (FDropTarget)
end;
Das sollte funktionieren.

Zitat:
Das Drag & Drop war eigentlich für solche Formularfelder gedacht, die in Fieldsets liegen oder sich aus irgendwelchen anderen Gründen nicht automatisch ausfüllen lassen.
Wenn Du mal mehr Infos gibst, dann könnte man da vielleicht was machen.

Gruß
Volker Zeller

Geändert von Volker Z. (11. Mär 2014 um 02:06 Uhr)
  Mit Zitat antworten Zitat
 


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 06:27 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