[Delphi] Drag&Drop naar IE ActiveX Controller

Pagina: 1
Acties:
  • 131 views sinds 30-01-2008
  • Reageer

  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

Topicstarter
Beste tweakers,

Voor school moeten we in Delphi een Active X control maken die via een browser moet werken. Het idée is een control te maken waarin een bestand gesleept kan worden. Vervolgens kunnen hier enkele mutaties op gedaan worden.

Ik ben begonnen met het maken van een Active X Control, redelijk basic van opzet. Mijn idee was om allereerst het droppen af te vangen alvorens ik met de rest aan de slag zou kunnen gaan.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TMyFormX.AcceptFiles( var msg : TMessage );
const
  cnMaxFileNameLen = 255;
var
  i,
  nCount     : integer;
  acFileName : array [0..cnMaxFileNameLen] of char;
begin
  // hoeveel bestanden zijn er gedropped?
  nCount := DragQueryFile( msg.WParam,
                           $FFFFFFFF,
                           acFileName,
                           cnMaxFileNameLen );

  // een voor een verwerken
  for i := 0 to nCount-1 do
  begin
    DragQueryFile( msg.WParam, i,
                   acFileName, cnMaxFileNameLen );

    // verwerking bestand, in dit geval een alert
    MessageBox( Handle, acFileName, '', MB_OK );
  end;

  // klaar
  DragFinish( msg.WParam );
end;

Bovenstaande werkt perfect wanneer ik in mijn ActiveFormCreate hetvolgende aanroep:
Delphi:
1
 DragAcceptFiles( Handle, True );

Wanneer ik mijn ActiveX controller registreer en deze vervolgens in een applicatie ga gebruiken werkt het drag en droppen perfect.
Echter wanneer ik mijn controller Deploy voor het web en deze aanroep via IE krijg ik niet het gewenste resultaat. Het object wordt wél getoond op de pagina, maar waneer ik een bestand in het object sleep vangt IE het drop event af door het bestand wat gesleept wordt te openen.

Het lijkt erop dat IE de message gewoon ontvange en mijn controller deze niet onderschept. Heeft iemand ervaring met het onderscheppen van dit soort messages waardoor de drop gewoon op het object terecht komt?

Ik heb pogingen gedaan met javascript de events te annuleren. Het drag en droppen wordt hiermee geannuleerd, en komt ook niet bij mijn controller terecht.
JavaScript:
1
2
3
4
document.body.ondragenter = handler;
document.body.ondragover = handler;
document.body.ondrop = handler;
function() { return false; };

Ik ben hier nu al een aantal uur mee bezig en ben nog niet tot een geschikte oplossing gekomen. Wellicht dat iemand van jullie mij hier een antwoord op kan geven?

Greetz, dip

[ Voor 7% gewijzigd door dip op 15-11-2005 18:03 . Reden: typo fixt :) ]

It's scientifically known, that base improves the tase of cheezes!


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik kan me heel goed voorstellen dat een browser het niet toelaat. Misschien moet je je beveiliging van IE lager zetten?

We adore chaos because we like to restore order - M.C. Escher


  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

Topicstarter
Ik denk niet dat het daaraan ligt.. De beveiligingsinstelling staat btw bij mij op normaal.
Er zijn soortgelijke upload tools die dit wel toestaan.
Bijvoorbeeld XUpload van ASPUpload.com

[ Voor 25% gewijzigd door dip op 15-11-2005 20:03 ]

It's scientifically known, that base improves the tase of cheezes!


  • dip
  • Registratie: September 2003
  • Laatst online: 16-01-2023

dip

shut up ulé

Topicstarter
kickje :x

It's scientifically known, that base improves the tase of cheezes!


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

http://www.euromind.com/iedelphi/<-- dé source voor IE en delphi. Misschien staat er iets bij voor je wat je kunt gebruiken :)

Stop uploading passwords to Github!


  • martijn_brinkers
  • Registratie: November 2001
  • Laatst online: 31-10-2025
Ik denk dat je gebruik moet maken van OLE drag and drop en niet van WM_DROPFILES drag drop.
Pagina: 1