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 TreeView_CreateDragImage -> Farbe des Hintergunds falsch (https://www.delphipraxis.net/65705-treeview_createdragimage-farbe-des-hintergunds-falsch.html)

sieppl 20. Mär 2006 12:51


TreeView_CreateDragImage -> Farbe des Hintergunds falsch
 
Hi!

Ich benutze TreeView_CreateDragImage um mir ein Image des Startknotens
einer Drag-Aktion im TreeView erstellen zu lassen. Leider wird das Image mit der Hintergrundfarbe
des TreeViews erstellt, obwohl dieser vor Beginn des Drags markiert ist und damit einen
blauen Hintergund hat. (Der Windows Explorer macht es richtig)
Den DragMode dmAutomatic will ich nicht benutzen, da es Konflikte mit der IDataObject Komponente gibt.
Über Ideen freue ich mich!

Hier noch ein bisschen Code:

Delphi-Quellcode:

//private
  FDropFileSource: TDropPhotoFileSource; //Komponente von Angus Johnson & Anders Melander, [url]http://www.melander.dk[/url]
  FIDragImageList: TImageList;

procedure TWOCShellTreeView.DoStartIDrag(StartNode: TTreeNode);
var
  ImageHandle: HImageList;
begin
  try
    if StartNode <> nil then
    begin
      ImageHandle := TreeView_CreateDragImage(Handle, StartNode.ItemId);
      if ImageHandle <> 0 then
        FIDragImageList.Handle := ImageHandle;
    end;
  except
  end;
  try
    AssignPhotoFileDataValues(FDropFileSource.PhotoFileDataObject);
    FDropFileSource.Files.Add(Path);
    FDropFileSource.ImageIndex := 0; //ist egal, es gibt nur ein Bild in der Liste
    FDropFileSource.Execute;
  except
    FIDragging := False;
  end;
end;

sieppl 28. Mär 2006 11:34

Re: TreeView_CreateDragImage -> Farbe des Hintergunds fal
 
der Hintergrund der TImageList muss korrekt gesetzt werden, sonst müssen keine speziellen Eigenschaften gesetzt werden:

Delphi-Quellcode:
var
  ImageHandle: HImageList;
begin
  try
    if StartNode <> nil then
    begin
      ImageHandle := TreeView_CreateDragImage(Handle, StartNode.ItemId);
      if ImageHandle <> 0 then
      begin
        FIDragImageList.Handle := ImageHandle;
        FIDragImageList.BkColor := Self.Color; //Hintergrundfarbe des TreeViews setzen
      end;
    end;
  except
  end;


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