AGB  ·  Datenschutz  ·  Impressum  







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

Drag / Drop Tutorial

Ein Thema von haentschman · begonnen am 1. Jan 2008 · letzter Beitrag vom 3. Jan 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#1

Drag / Drop Tutorial

  Alt 1. Jan 2008, 15:02
... ein erfolgreiches neues Jahr euch allen...


... mit der SuFu komme ich zu keinem vernünftigem Ergebnis...

- wo finde ich ein Tutorial zu Drag / Drop.
- wie funktioniert das prinzipiell (kein Code).

...ich möchte erst einmal verstehen wie das funktioniert... den Rest kriege ich schon.

Danke...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 15:08
Vielleicht hilft Dir diese Seite erstmal weiter (englisch): http://www.blong.com/Conferences/Bor...dDrop/4114.htm

P.S.: Auch Dir ein frohes neues Jahr (dieser Smiley ist echt witzig)
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 15:11
Was möchtest du denn Dragen und Dropen ?

Wenn es um Dateien/Ordner vom Explorer zum Programm geht, so funktioniert es, in dem du auf die entsprechende Message von Windows reagierst und sie auswertest.
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#4

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 15:15
Dank für die schnelle Antwort...

... ist wirklich

... für den Anfang geht es erst einmal um Dateinamen vom Explorer in eine FileListBox.

...mit Englisch komme ich zwar einigermaßen zurecht, wenn es aber ans eingemachte geht...hört es auf..
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 15:20
Dann bekommste jetzt einfach doch den Source :

Delphi-Quellcode:
uses ShellApi;

...
type
 
  private
    { Private-Deklarationen }
    procedure WMDROPFILES (var Msg: TMessage); message WM_DROPFILES;

...

procedure TForm1.WMDROPFILES (var Msg: TMessage);
var
  i, anzahl, size: integer;
  Dateiname: PChar;
begin
  inherited;
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
  for i := 0 to (anzahl - 1) do
  begin
    size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
    Dateiname:= StrAlloc(size);
    DragQueryFile(Msg.WParam,i , Dateiname, size);
    ListBox1.items.add(StrPas(Dateiname));
    StrDispose(Dateiname);
  end;
  DragFinish(Msg.WParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Form1.Handle, true);
end;
Gruß
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#6

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 15:24
...vielen Dank.

dann mache ich jetzt mal Copy / Paste und schaue mir das mal in Ruhe an...

Danke...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#7

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 16:07
... ich löcher Euch einfach mal...

... das Beispiel funktioniert ja... aber warum


- nullterminierte Strings

... ich habe die Funktion mal angehalten und mir die verschiedenen Werte mal angeschaut. (auf manche kann ich nicht zugreifen)

anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255); - die Anzahl repräsentiert ja die Menge der Dateinamen...aber wie wird die übergeben / wo versteckt ?


size := DragQueryFile(Msg.WParam, i , nil, 0) + 1; - die Länge des Strings


DragQueryFile(Msg.WParam,i , Dateiname, size); - der Dateiname zurück



...learning by doing ist manchmal ein Krampf...

Sorry...
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 16:21
Hallo,

die Erklärung zu den benötigten Funktionen findest du bei Microsoft: DragAcceptFiles und DragQueryFile.

Ich habe die Routine von MrKnogge mal in eine handliche Funktion umgewandelt, dann kann man sie relativ einfach in mehreren Applikationen verwenden.

Delphi-Quellcode:
// uses ShellAPI

function GetFilesDropped (aHandle: THandle; aList: TStrings): Boolean;
var
  FileCount : Integer;
  Index : Integer;
  Buffer : array [0..MAX_PATH] of Char;
begin
  FileCount := DragQueryFile(aHandle, Cardinal(-1), nil, 0);
  aList.BeginUpdate;
  try
    for Index := 0 to FileCount - 1 do
      begin
        DragQueryFile(aHandle, Index, @Buffer, SizeOf(Buffer));
        aList.Add(Buffer);
      end;
  finally
    aList.EndUpdate;
  end;
  Result := (FileCount > 0);
end;

// in der Applikation:
type
  TForm1 = class (TForm)
    [...]
    procedure FormCreate (Sender: TObject);
  private
    procedure WMDropFiles (var aMsg: TMessage); message WM_DROPFILES;
  end;

procedure Form1.FormCreate (Sender: TObject);
begin
  DragAcceptFiles (Handle, True);
end;

procedure Form1.WMDropFiles (var aMsg: TMessage);
begin
  if GetFilesDropped(aMsg.WParam, ListBox.Items) then
    ShowMessage ('files dropped');
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#9

Re: Drag / Drop Tutorial

  Alt 1. Jan 2008, 16:34
Danke...

Zitat:
die Erklärung zu den benötigten Funktionen findest du bei Microsoft: DragAcceptFiles und DragQueryFile.
...die Links waren gut.

...jetzt ist mir einiges mit dem 'Return Value' viel klarer.

- ich spiel dann mal ein bischen rum... kopieren per Drag/Drop etc.

Danke noch mal...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#10

Re: Drag / Drop Tutorial

  Alt 2. Jan 2008, 17:03
...aufwärm...

ich habe mal ein bischen rumgespielt...

und...

1. ShellApi eingebunden

2.
Delphi-Quellcode:
private
    { Private-Deklarationen }
    procedure DropFiles (var Msg: TMessage); message WM_DROPFILES;
3.
Delphi-Quellcode:
procedure TFAnlagenkomponenten.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(FAnlagenkomponenten.ListBox1.Handle, true);
end;
4.
Delphi-Quellcode:
procedure TFAnlagenkomponenten.DropFiles(var Msg: TMessage);
var
  i, anzahl, size: integer;
  Dateiname: PChar;
begin
  inherited;
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, Dateiname, 255);
  for i := 0 to (anzahl - 1) do
  begin
    size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
    Dateiname:= StrAlloc(size);
    DragQueryFile(Msg.WParam,i , Dateiname, size);
    Label2.Caption:= intToStr(size);
    Label3.Caption:= StrPas(Dateiname);
    ListBox1.items.add(StrPas(Dateiname));
    StrDispose(Dateiname);
  end;
  DragFinish(Msg.WParam);
end;
... die Procedure 4. wird nicht angesprungen.

... bis auf ein paar Labels für die Visualisierung und procedure Namensänderung hat sich zum Beispiel nichts verändert

Danke für Eure Geduld...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz