Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Drag&Drop Frage (https://www.delphipraxis.net/62457-drag-drop-frage.html)

mOzZzI 4. Feb 2006 22:39


Drag&Drop Frage
 
Hai,

möchte gerade eine Schnellstartleiste programmieren, so ähnlich wie SittingDuck es gemacht hat...
Mein Problem ist bei der Drag&Drop Sache...
Ich weiß nicht wie ich z.B. eine Verknüpfung von Winamp in einen SpeedButton/BitBtn via Drag&Drop
importieren kann, und das sich dann das Icon des Buttons als Glyph angezeigt wird...
Und wenn man dann Draufklickt das dann das Prog gestartet wird...
Ich weiß gar net wo ich anfangen soll...

SirThornberry 4. Feb 2006 22:45

Re: Drag&Drop Frage
 
auf einen SpeedButton kannst du schonmal nix ziehen, BitBtn dürfte gehen. Wichtig dabei ist das dein Ziel (in deinem Programm) ein Handle hat. Wenn dem der Fall ist kannst du mit "DragAcceptFiles" festlegen das auf dieses Control/Fenster eine Datei abgelegt werden kann. Darauf kannst du dann wieder mit "WM_DROPFILES" reagieren.

mOzZzI 4. Feb 2006 22:50

Re: Drag&Drop Frage
 
Zitat:

Zitat von SirThornberry
auf einen SpeedButton kannst du schonmal nix ziehen, BitBtn dürfte gehen. Wichtig dabei ist das dein Ziel (in deinem Programm) ein Handle hat. Wenn dem der Fall ist kannst du mit "DragAcceptFiles" festlegen das auf dieses Control/Fenster eine Datei abgelegt werden kann. Darauf kannst du dann wieder mit "WM_DROPFILES" reagieren.


:wiejetzt: Also, das ist mir zu noch zu hoch...
Sry, aber wie wende ich sowas an??

Matze 4. Feb 2006 22:50

Re: Drag&Drop Frage
 
Hi

Zitat:

Zitat von mOzZzI
:wiejetzt: Also, das ist mir zu noch zu hoch...

Das ist auch nicht ganz trivial.

Mit diesem Code kommst du an den Dateinamen, aller weitere sollte keine Probleme machen. Das Icon kannst du anhand des Dateinamens aus der Datei auslesen (Einfach die Suche benutzen) und per Delphi-Referenz durchsuchenShellExecute kannst du diese Datei dann starten, da zum Öffnen einer datei der Dateipfad genügt. ;)

mOzZzI 4. Feb 2006 23:03

Re: Drag&Drop Frage
 
Also mit dem Code wo du mir gegeben hast, komme ich nicht zurecht, wo muss ich diesen Code einbauen??

Alle weiteren sollten keine Probleme machen,
bei mir schon :oops:

Matze 4. Feb 2006 23:07

Re: Drag&Drop Frage
 
Zitat:

Zitat von mOzZzI
Also mit dem Code wo du mir gegeben hast, komme ich nicht zurecht, wo muss ich diesen Code einbauen??

Das sind Delphi-Grundlagen :zwinker:

Delphi-Quellcode:
private
  procedure WMDROPFILES (var Msg: TMessage); message WM_DROPFILES;

  ...

  implementation

  ...

procedure TForm1.WMDROPFILES (var Msg: TMessage);
 
  ...

Nachtrag: Als Anfangsprojekt ist das eigentlich auch nciht so sehr geeignet.

Daniel G 4. Feb 2006 23:07

Re: Drag&Drop Frage
 
Zitat:

Zitat von mOzZzI
Alle weiteren sollten keine Probleme machen,
bei mir schon :oops:

Hättest du etwas weiter gescrollt, wäre dir aufgefallen, dass da sogar eine Komponente im Anhang hängt. Installier die doch einfach und dann bau sie nach deinen Vorstellungen um.

mOzZzI 4. Feb 2006 23:12

Re: Drag&Drop Frage
 
Er bringt eine Fehlermeldung...

DragQueryFile: Undefinierter Bezeichner
DragFinish: Undefinierter Bezeichner

SirThornberry 4. Feb 2006 23:17

Re: Drag&Drop Frage
 
Bei solchen Fehlermeldungen hilt meist ein Blick in die Hilfe... Du musst du Unit ShellApi einbinden

mOzZzI 4. Feb 2006 23:29

Re: Drag&Drop Frage
 
So jetzt Compiliert er und alles, aber wie nehme ich jetzt z.B. Desktopicons via Drag&Drop in einen Bitbtn auf?

Daniel G 4. Feb 2006 23:56

Re: Drag&Drop Frage
 
Zitat:

Zitat von mOzZzI
So jetzt Compiliert er und alles, aber wie nehme ich jetzt z.B. Desktopicons via Drag&Drop in einen Bitbtn auf?

Eigeninitiative ist das Stichwort


Zitat:

Zitat von Matze
Das Icon kannst du anhand des Dateinamens aus der Datei auslesen (Einfach die Suche benutzen)

Wenn du das machst, findest du zum Bleistift:

Zitat:

Zitat von Martin K
Für alle, die das Icon aus einer beliebigen Datei haben möchten,
hier der endgültige Quellcode:


Delphi-Quellcode:
uses ... ShellApi;

...

function FileIcon(FileName: String): TIcon;
var FileInfo: TSHFileInfo; AIcon: TIcon;
begin
  FillChar(FileInfo,SizeOf(FileInfo),#0);
  SHGetFileInfo(PChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_ICON or SHGFI_LARGEICON);
  AIcon:=TIcon.Create;
  Try
    AIcon.Handle:=FileInfo.HIcon;
    AIcon.Transparent:=True;
  Except end;
  Result:=AIcon;
end;
Vielen Dank nochmal an ichbins

aus diesem Thread

mOzZzI 5. Feb 2006 00:04

Re: Drag&Drop Frage
 
tut mir leid aber ich komm da wirklich nciht weiter... :gruebel:
Ich meine das mit Drag&Drop...
Soll ich das bei einen Button Ereignis "DragOver" machen?

mOzZzI 5. Feb 2006 10:18

Re: Drag&Drop Frage
 
Also ich bin bis jetzt so weit gekommen das ich "anscheinend" Drag&Drop auf meinen BitBtn machen kann...
Jetzt fehlt mir noch das Icon des Gedroppeden Gegenstandes, das Problem ist
ich weiß nicht wie ich das Icon der .Exe auslesen, dann in Bitmap konvertieren, abspeichern, und dann auf dem Button, wo man Drag&Drop gemacht hat, absetzt...

Delphi-Quellcode:
function FileIcon(FileName: String): TIcon;
var FileInfo: TSHFileInfo; AIcon: TIcon;
begin
  FillChar(FileInfo,SizeOf(FileInfo),#0);
  SHGetFileInfo(PChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_ICON or SHGFI_LARGEICON);
  AIcon:=TIcon.Create;
  Try
    AIcon.Handle:=FileInfo.HIcon;
    AIcon.Transparent:=True;
  Except end;
  Result:=AIcon;
end;

procedure TForm1.WMDROPFILES (var Msg: TMessage);
var i, anzahl, size: integer;
    Dateiname: PChar;
    antwort: Integer;
    s : string;
  Icon: TIcon;
begin
  inherited;
  Dateiname := '';
  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);
    //hier dein source - in "Dateiname" ist der name des droped objectes
      begin
    Icon := TIcon.Create;
    try
      Icon.Loadfromfile(dateiname);
      s:= ChangeFileExt(dateiname,'.BMP');
      Image1.Width := Icon.Width;
      Image1.Height := Icon.Height;
      Image1.Canvas.Draw(0,0,Icon);
      Image1.Picture.SaveToFile((ExtractFilePath(ParamStr(0))+'1.BMP'));
    finally
      Icon.Free;
    end;
  end;
Weiter bin ich ncoh nicht gekommen...

//Edit 100 Beitrag :shock:

mOzZzI 5. Feb 2006 16:39

Re: Drag&Drop Frage
 
kennt sich da vill noch jemand aus?

SirThornberry 5. Feb 2006 16:55

Re: Drag&Drop Frage
 
erstelle doch einen neuen Thread für dieses Problem mit dem Icon. Erstens hat das nix mit Drag & Drop zu tun, zweitens findet niemand den Beitrag zum Icon wenn er die suche nutzt weil der Betreff Drag & Drop ist und drittens liest niemand dein Problem mit dem Icon weil nur die Leute den Thread anschauen die Ahnung von Drag & Drop haben. Aber diese Leute sind nicht zwangsläufig auch diejenigen die sich mit dem Iconzeugs auskennen. Und viertens ist es eine Regel in diesem Forum das pro Frage ein eigene Thread aufgemacht wird.
Zuguter Letzt hast du auch noch innerhalb von 24 Stunden gepucht (deinen Beitrag nach oben gebracht) was ebenfalls nicht gern gesehen wird weil eben jeder etwas wichtiges hat.


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