Announcement

Collapse
No announcement yet.

Icon in eigenes Programm ziehen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Icon in eigenes Programm ziehen

    Per IShellLink und IPersistFile gelingt die Analyse einer .lnk-Datei.
    Mittels OLE-Drag and Drop (siehe div.Posts u.a. von Andreas Kosch) gelingt das Übernehmen z.B. eines Links aus einem Web-Browser.

    Die Aufgabe: Ein Icon z.B. einer Verknüpfung soll mit der Maus auf ein Control (z.B. ein Stringgrid) gezogen werden und dort sollen dann einige Daten plaziert werden.

    Die Frage:
    Wie komme ich nach der Drop-Operation an den Filename, bzw wie erkenne ich überhaupt das ein Objekt "gezogen" wurde. Hat jemand dazu eine Idee.

    Vielen Dank für weiterführende Hinweise oder Lösungen.
    Gruss
    Bernhard

  • #2
    Um das Ganze einzugrenzen:

    function TfrmMain.Drop(const dataObj: IDataObject;
    grfKeyState: Longint;
    pt : TPoint;
    var dwEffect : Longint): HResult;
    var
    aFmtEtc : TFORMATETC;
    aStgMed : TSTGMEDIUM;
    pData : PChar;
    Ctrl : TComponent;
    begin
    if (dataObj = nil) then
    raise Exception.Create('IDataObject-Zeiger ist ungültig!');
    with aFmtEtc do
    begin
    cfFormat := CF_TEXT;
    ptd := nil;
    dwAspect := DVASPECT_CONTENT;
    lindex := -1;
    tymed := TYMED_HGLOBAL;
    end;

    //--> Bei OleCheck tritt die Fehlermeldung auf: Falscher Parameter
    // leider finde ich nicht heraus, welche anderen Parameter erlaubt // wären, außer CF_BITMAP, was nun auch nichts nützt
    // das ist schade, denn in aStgMed wäre lpzFilename

    OleCheck(dataObj.GetData(aFmtEtc, aStgMed));

    try
    pData := GlobalLock(aStgMed.hGlobal);

    // Text ersetzen
    Ctrl := FindComponent(EdtControl);
    if (Ctrl.ClassType = TEdit) then (Ctrl as TEdit).Text := pData
    else if (Ctrl.ClassType = TMemo) then (Ctrl as TMemo).Lines.Add(pData);

    finally
    GlobalUnlock(aStgMed.hGlobal);
    ReleaseStgMedium(aStgMed);
    end;
    Result := S_OK;
    end

    Comment


    • #3
      siehe
      http://codecentral.borland.com/Item.aspx?id=1406

      Comment


      • #4
        Lieber Dieter,

        vielen Dank - es funktioniert mit dem Komponenten bestens.

        gruss
        bernhar

        Comment

        Working...
        X