Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Drag Drop-Datei zu bearbeitung durch reinziehen einzufügen (https://www.delphipraxis.net/131081-drag-drop-datei-zu-bearbeitung-durch-reinziehen-einzufuegen.html)

Leo675 18. Mär 2009 13:46


Drag Drop-Datei zu bearbeitung durch reinziehen einzufügen
 
Hallo alle zu sammen!
Ich hab da ein Problemchen, ich will jetzt das mein Programm, das die txt-fils bearbeitet, ncht nur das datei durch öffnen erkent sondern auch wenn ich das Datei auf's fenster reinschiebe.

So weit ich weis ist es ein DockDrop-Ereigniss, um den zu bekommen soll ein DockOver-Ereignis vorhanden sein, mind mit einer Zeile
Delphi-Quellcode:
Code Accept := True;
, und die DockSite soll auf True gesetzt werden. Alles das habe ich gemacht um mindestens beim Reinzien auf das Programm-Fenster der NichGestatt-Symbol weg zu kriegen. Wie macht man esa uberhaupt?

Satty67 18. Mär 2009 14:32

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
Du musst das Formular für das Ereignis DropFiles vorbereiten:
Delphi-Quellcode:
uses ShellAPI;

// In der Formular Deklaration
  protected
    procedure WMDropFiles(var Message: TMessage); message WM_DropFiles;

// In TForm.FormCreate
    DragAcceptFiles(Handle, TRUE);

// In der eben definierten Procedure frägst Du die Dateien ab:
procedure TForm.WMDropFiles(var Message: TMessage);
var
  fBuffer : array[0..MAX_PATH] of Char;
  i, x   : Integer;
  sl     : TStringList;
begin
  // Buffer-Liste initialisieren und Anzahl Dateien ermitteln
  sl := TStringlist.Create;
  x := DragQueryFile(Message.WParam, $FFFFFFFF, NIL, 0);

  // Dateien in den Buffer einlesen und sortieren
  for i := 0 to x-1 do begin
    DragQueryFile(Message.WParam, i, @fBuffer, MAX_PATH);
    sl.Add(fBuffer);
  end;
  sl.Sort;

  // Sortierte Dateiliste abarbeiten
  for i := 0 to sl.Count-1 do begin

    {<--- hier code einfügen ---}

  end;

  // Bufferliste freigeben
  sl.Free;
end;

Leo675 18. Mär 2009 15:14

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
O.k. auf jeden Feil Danke! Ich verarbeite es und melde mich!

Muetze1 18. Mär 2009 15:32

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
Benenne den Message Handler bitte procedure WMDropFiles(var Message: TMessage); message WM_DropFiles;, wie es laut Hilfe von CodeGear auch gefordert ist. Hintergrund: Dein Formular und der Handler könnte sonst nicht wieder definiert werden in einer C++ Ableitung.

Satty67 18. Mär 2009 16:05

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
Wer ist CodeGear? :wink:

Meine Hilfe ist noch von Borland, aber da steht es auch so drin. Hab' es geändert.

Leo675 18. Mär 2009 16:10

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
Kchm,Khm!

Es ist zwar komisch aber mein Delphi7(Borland) kennt DragAcceptFiles und DragQueryFile :(

Muetze1 18. Mär 2009 16:23

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
Zitat:

Zitat von Leo675
Es ist zwar komisch aber mein Delphi7(Borland) kennt DragAcceptFiles und DragQueryFile :(

Schön und was ist daran das Problem? Oder ist es ein Problem wenn alles klappt?

Unit Windows eingebunden?

Leo675 18. Mär 2009 16:31

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
Ja unit Windoes war schon immer drin, aber dann hab ich ShellAPI eingebunden und alles hats geklappt. Danke! :dancer2:

Satty67 18. Mär 2009 16:34

Re: Drag Drop-Datei zu bearbeitung durch reinziehen einzufüg
 
Joa, ich schreib es auch oben mit dazu, dann stolpert der nächste nicht drüber...


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