Autor Beitrag
whitef
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Sa 16.03.13 03:36 
hi,
irgendwie klappt bei mir ein einfaches imagewechsel nicht, wenn ich ein drag ausführe.

testweise hier eine einfach rückmeldung mittels showmessage //welches nicht ausgelöst wird!

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
uses
ShellApi;
...
  private
    Procedure WMDROPFILES (Var aMsg: tMessage);  message WM_DROPFILES;
...
Procedure TForm1.WMDROPFILES (Var aMsg: tMessage);
...
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
showmessage('test');
//image1.visible := False;
//image2.visible := True;
end;


Form1.DragKind := dkDrag;
Form1.DragMode := dmManual;

Irgendwie steh ich gerade auf dem Schlauch...
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Sa 16.03.13 08:27 
Nachdem Du verwendest unterstelle ich, dass es bei dem Post um Drag&Drop aus dem Explorer geht

ausblenden volle Höhe Delphi-Quelltext
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:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
type
  TForm2 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
        procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation
uses ShellAPI;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
end;

procedure TForm2.WMDropFiles(var Msg: TWMDropFiles);
var
  CFileName: array [0 .. MAX_PATH] of Char;
  FileName:String;
  i,DroppedFileCount:Cardinal;
begin
  try
   DroppedFileCount := DragQueryFile(Msg.Drop, $FFFFFFFFnil0);
   for I := 0 to DroppedFileCount - 1 do
      begin
        SetLength(FileName,  DragQueryFile(Msg.Drop, i, nil0));
        DragQueryFile(Msg.Drop, i, PChar(FileName), Length(FileName) +1 );
        Memo1.Lines.Add(FileName);
      end;
  finally
    Msg.Result := 0;
    DragFinish(Msg.Drop)
  end
end;

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Sa 16.03.13 08:43 
Falls du Drag 'n' Drop während dem Ausführen aus der IDE testen möchtest (debugging): Bei mir funktionieren diverse DragDrop-Codes als auch Komponenten* nur wenn die IDE nicht mit Adminrechten gestartet wurde. (RAD Studio 2009 Pro / Win Vista)

* = Die Drag and Drop Component Suite von Andres Melander ist sehr zu empfehlen :wink:
whitef Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 202
Erhaltene Danke: 1

Windows X
Delphi XE X
BeitragVerfasst: Sa 16.03.13 19:47 
danke für die rückmeldungen.
richtig, ich versuche aus dem explorer dateien auf meine form zu ziehen.

mir fehlt nur das OnDrag Ereignis was jedoch nicht ausgelöst wird.
Das Symbol beim drag wird angezeigt, jedoch kommt kein "showmessage".

Eine extra komponente wollte ich nun ungern hierfür einsetzen müssen, aber danke für die anregung!
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: So 17.03.13 10:28 
Wenn Du mehr brauchst wirst Du in eigene Komponenten IDropTarget implementieren müssen, oder eine Komponente schreiben die es beinhaltet und der eine Komponenten zugewiesen wird. Spätesten hier machst es Sinn, wie von Andreas L. empfohlen, auf die erprobten Komponenten von Andres Melander zurückzugreifen.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS