![]() |
Drag & Drop: DragCursor mit Bitmap statt Standard-Cursor
Hallo,
ich habeine ShellListView und einige Images. Von der ShellListView ziehe ich mittels Drag & Drop Bitmaps auf die Images. Während des Ziehens wird der DragCursor angezeigt. Nun würd ich gerne, a la Windows Vista, das Bitmap als Cursor-Bild anzeigen lassen? Wie könnt ich das realisieren? |
Re: Drag & Drop: DragCursor mit Bitmap statt Standard-Cu
|
Re: Drag & Drop: DragCursor mit Bitmap statt Standard-Cu
Vielleicht nicht ganz seine Frage.
Delphi-Quellcode:
Dabei solltest du das Icon dessen welches du gerade Drag&Drops't als bmp zwischenspeichern - im Arbeitsspeicher oder kurz als Datei obwohl 1.-eres besser ist.
var
hCurs : THandle; bmp : TBitmap; begin bmp := TBitmap.Create; bmp.LoadFromFile(PICTURE_FILE_NAME); hCurs := LoadImage(0, //Handle to Application - NULL when using stand-alone PChar(PICTURE_FILE_NAME), //0-terminated String IMAGE_BITMAP, //type bmp.Width, //size of bmp bmp.Height, //size of bmp LR_LOADFROMFILE); //flag SetCursor(hCurs); bmp.Free; end; Schau dir dazu noch folgende ![]() Code ist nicht getestet! |
Re: Drag & Drop: DragCursor mit Bitmap statt Standard-Cu
Danke für den Code.
Nur wie verarbeite ich den jetzt am Besten, damit ich als Cursor das Bitmap seh? Ein OnStartDrag gibts ja leider nicht, wo ich den Cursor definieren und laden könnte. |
Re: Drag & Drop: DragCursor mit Bitmap statt Standard-Cu
Sicher, die muss es geben. Sind ja schließlich von TControl.
OnStartDrag und OnDragDrop sind bei mir in D7 vorhanden. Hab noch schnell eine bessere Variante geschrieben:
Delphi-Quellcode:
Sag mir bitte ob die bei dir geht :)
type
PSHFILEINFO = ^SHFILEINFO; SHFILEINFO = record hIcon : HICON; iIcon : Integer; dwAttributes : DWORD; szDisplayName : array[0..255] of PChar; szTypeName : array[0..79] of PChar; end; const SHGFI_ICON = $100; SHGFI_SMALLICON = $1; function SHGetFileInfo(pszPath : PChar; dwFileAttributes : DWORD; psfi : PSHFILEINFO; cbFileInfo : DWORD; uFlags : DWORD) : PDWORD; external 'shell32.dll' name 'SHGetFileInfo'; procedure TForm1.ShellTreeView1StartDrag(Sender: TObject; var DragObject: TDragObject); var lpPath : PChar; sfi : SHFILEINFO; begin lpPath := PChar((Sender as TShellTreeView).Path); SHGetFileInfo(lpPath, 0, @sfi, SizeOf(SHFILEINFO), SHGFI_ICON or SHGFI_SMALLICON); SetCursor(sfi.hIcon); DestroyIcon(sfi.hIcon); end; |
Re: Drag & Drop: DragCursor mit Bitmap statt Standard-Cu
Hallo,
ich hab jetzt den Code wie folgt eingebaut:
Delphi-Quellcode:
Nur leider seh ich das Bild nicht als Cursor. Dafür seh ich nur einen Halteverbot-Cursor
procedure TSymboleForm.ShellListView_TastenbilderStartDrag(Sender: TObject;
var DragObject: TDragObject); var Zeile : Integer; lpPath: PChar; sfi : SHFILEINFO; begin Zeile := ShellListView_Tastenbilder.Selected.Index; lpPath := PChar(ShellListView_Tastenbilder.Folders[Zeile].PathName); SHGetFileInfo(lpPath, 0, sfi, SizeOf(SHFILEINFO), SHGFI_ICON or SHGFI_SMALLICON); SetCursor(sfi.hIcon); DestroyIcon(sfi.hIcon); end; |
Re: Drag & Drop: DragCursor mit Bitmap statt Standard-Cu
Aber eine AV bekommst du nicht?
sfi muss außerdem als Pointer übergeben werden, das da dein Compiler nicht meckert? Kann gerade nicht schauen, hab hier auf der Maschine kein Delphi installiert ... |
Re: Drag & Drop: DragCursor mit Bitmap statt Standard-Cu
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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 by Thomas Breitkreuz