AGB  ·  Datenschutz  ·  Impressum  







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

Bild per Drag and Drop ins Programm holen

Ein Thema von tobi1701 · begonnen am 28. Okt 2005 · letzter Beitrag vom 29. Okt 2005
Antwort Antwort
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#1

Re: Bild per Drag and Drop ins Programm holen

  Alt 29. Okt 2005, 00:52
dieses WM_DROPFILES bezieht sich nur auf das Drag&Drop von Dateien. Die Events für Drag&Drop die fast jede Komponente hat beziehen sich hingegen auf das Drag&Drop zwischen den einzelnen Komponenten.
Zur anderen Frage: Das Drag&Drop von Dateien nur für ein TImage zu realisieren (und nicht für das ganze Form) geht nicht da TImage kein Handle hat. Die Message wird somit an das Fenster(Control) unter dem TImage geschickt welches ein Handle hat. Für TListbox und TListView (die haben ein Handle) geht es hingegen. Da gibt es 2 Möglichkeiten. Variante 1 ist das ableiten von einer bereits vorhandenen Komponente und diese mit dem entsprechenden Messagehandler erweitern). Variante2 ist das umbiegen der WindowProcedure der Komponente und somit das manuelle Abfangen der Message in der neuen WindowProcedure (gibt es einige Threads dazu).

Wenn du unbedingt willst das man auf ein TImage Dateien ziehen kann so lege einfach direkt unter das TImage ein Panel und fange auf diesem die Message ab.

variante1 (der Quelltext muss in die Unit wo TListBox das Droppen von Dateien unterstützen soll):
Delphi-Quellcode:
type
  TListBox = class(StdCtrls.TListBox)
  private
    procedure FWM_DropFiles(var Msg: TMessage); message WM_DROPFILES;
  end;
[...]
procedure TListBox.FWM_DropFiles(var Msg: TMessage);
var i, anzahl, size: integer;
    Dateiname: String;
    antwort: Integer;
begin
  inherited;
  Dateiname := '';
  anzahl := DragQueryFile(Msg.WParam, $FFFFFFFF, nil, 0);
  for i := 0 to (anzahl - 1) do
  begin
    size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;
    SetLength(Dateiname, size);
    SetLength(Dateiname, DragQueryFile(Msg.WParam,i , @Dateiname[1], size));
    //hier dein source - in "Dateiname" ist der name des droped objectes
  end;
  DragFinish(Msg.WParam);
end;
und damit das ganze für die entsprechende Listbox geht muss natürlich noch folgendes gemacht werden:
DragAcceptFiles(ListBox1.Handle, True);
Zitat:
...allerdings ist mir nicht so ganz klar, woher man das wissen soll...
dafür gibt es das msdn (http://msdn.microsoft.com bzw. noch direkter http://msdn.microsoft.com/library ) dort kann man die Befehle suchen (man weiß ja ungefähr nach was man suchen muss) und die Parameter etc. sind dort auch zu finden mit deren Bedeutung.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:19 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