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 = 'textarea' then
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ß