AGB  ·  Datenschutz  ·  Impressum  







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

IDropTarget auf Clientform

Ein Thema von Pitschki1801 · begonnen am 11. Mär 2015 · letzter Beitrag vom 12. Mär 2015
 
Pitschki1801

Registriert seit: 9. Feb 2012
14 Beiträge
 
Delphi XE Professional
 
#2

AW: IDropTarget auf Clientform

  Alt 12. Mär 2015, 14:24
Ich konnte mir jetzt erstmal so behelfen, dass ich den Drop für die gesamte Application freigeschaltet habe. Im DragOver prüfe ich , ob ein zulässiges Control unterm Cursor liegt und sende an dieses die Message. Dabei ist es egal auf welcher Form, Panel, etc die Listbox liegt.

Sollte noch wer eine bessere Möglichkeit gefunden haben, ist diese natürlich gern gesehen

Mainform
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
    m_PDropTarget := PDropTarget.Create(Self.Handle, True);
end;
DropTarget:
Delphi-Quellcode:
function PDropTarget.DragOver(grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult;
begin
    if FindDragTarget(pt, True) is TListBox then
        dwEffect := DROPEFFECT_COPY
    else
        dwEffect := DROPEFFECT_NONE;
    Result := S_OK;
end;

//...

function PDropTarget.Drop(const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; var dwEffect: Integer): HResult;
var
    l_Format : TFormatEtc;
    l_StgMed : TStgMedium;
begin
    if FindDragTarget(pt, True) is TListBox then
    begin
        if (dataObj = nil) then
            raise Exception.Create('IDataObject-Zeiger ist ungültig!');
        with l_Format do
        begin
            cfFormat := CF_HDROP;
            ptd := nil;
            dwAspect := DVASPECT_CONTENT;
            lindex := -1;
            tymed := TYMED_HGLOBAL;
        end;

        OleCheck(dataObj.GetData(l_Format, l_StgMed));
        try
            SendMessage(TWinControl(FindDragTarget(pt, True)).Handle, WM_DROPFILES, l_StgMed.hGlobal, -1)
        finally
            ReleaseStgMedium(l_StgMed);
        end;
    end;

    Result := S_OK;
end;
Gruß
Pitschki
  Mit Zitat antworten Zitat
 


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 05:53 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