Announcement

Collapse
No announcement yet.

Dateipfad per Drag and Drop in Datensatz einfügen

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

  • Dateipfad per Drag and Drop in Datensatz einfügen

    Guten Tag,
    <BR>
    <BR>
    welche Drag and Drop Steuerelemte benötige ich und wie sind sie zu handeln, wenn ich fogendes Problem lösen möchte: <BR>
    Für eine Verkaufssoftware soll der Pfad von Angeboten (MSWord) mittels Drag and Drop Operation aus dem Explorer in ein Datenbankfeld (MSAccess), dass durch ein Grid repräsentiert wird, gezogen und abgelegt werden können (ähnlich wie im Outlook).<BR>
    Wer hat Erfahrung damit. Jede Hilfe und Idee ist willkommen.<BR><BR>
    Gruss
    <BR>
    Uwe

  • #2
    Hallo,

    ich empfehle, dafür eine der zahlreichen (Freeware-)Komponenten einzusetzen.

    Ich benutze selber eine K. namens Filedrag, die liefert im Event OnDrop eine Liste der abgelegten Dateien mit komplettem Pfad zurück.

    Solche Komponenten gibt es z.B. bei Torry oder DSP.

    Gruß Ul

    Comment


    • #3
      Hallo Uli,<BR><BR>
      hab mir die Komponente geholt und auch schon 'eingebaut'. Wärmsten Dank für den Tipp! <BR><BR>Welche Möglichkeit hätte ich denn, das Symbol dieser Datei (Excel, Powerpoint oder Word) zu speichern, anzuzeigen und natürlich soll die Applikation dann auch noch auf Doppelklick starten. Kunden haben ja sonst keine Ansprüche...<BR><BR>
      Gruss Uw

      Comment


      • #4
        Hallo,

        zum Auslesen des Icons und Speichern in der DB dient der folgende Code:
        <pre>
        procedure THauptForm.GetIcon(datei: string);
        var TheIcon : hicon;
        FBitmap : TBitmap;
        Iconstream : TMemoryStream;
        FI : TSHFileInfo;
        begin
        SHGetFileInfo(PChar(Datei), 0,FI, Sizeof(FI), SHGFI_SMALLICON or SHGFI_ICON);
        TheIcon := FI.hIcon;
        FBitmap := TBitmap.create;
        IconStream := TMemoryStream.create;
        try
        with FBitmap do
        begin
        try
        height := 32;
        width := 32;
        with Canvas do
        begin
        Brush.Color := clwhite;
        Brush.Style := bsSolid;
        Fillrect(rect(0,0,32,32));
        end;
        DrawIcon(FBitmap.canvas.handle,0,0,TheIcon);
        saveToStream(IconStream);
        dm.T_Files.edit;
        dm.T_FilesIcon.loadFromStream(iconStream);
        dm.T_Files.post;
        finally
        free;
        end;
        end;
        finally
        IconStream.free;
        end;
        end;
        </pre>

        Zum Starten der Anwendung bzw. des Dokumentes ShellExecute. Der Pfad ist ja dann bekannt.

        Gruß Ul

        Comment


        • #5
          Hallo Uli, <BR><BR>
          vielen Dank für den Source Code. Weil ich aber nicht der Oberprogrammierer bin, steige ich auch nicht ganz durch. Was z.B. ist dm.T_Files? Ist damit die Tabelle gemeint? Wenn ja, habe ich das entsprechend geändert, ohne dass sich allerdings in dem entsprechenden Datenbankfeld Icons befinden würden. Wahrscheinlich hab ich's nicht richtig gemacht.<BR><BR>
          Wenn Du Zeit hättest könntest Du den Code etwas erläutern? Dann lern ich es auch vielleicht.<BR><BR>
          Nochmal vielen Dank für die Mühe und viele Grüsse<BR><BR>
          Uw

          Comment


          • #6
            Hallo,

            klar: dm ist ein Datenmodul und T_Files ist die Tabelle, in der die Pfade und Icons gespeichert werden. Für die Icons musst du in der Tabelle natürlich ein Grafik-Feld anlegen.

            Der Code demonstriert, wie man das Icon ausliest und in das Feld schreibt. Das Anzeigen ist dann wieder eine andere Sache. Ich selber benutze nicht das Standard-Grid, daher weiß ich gar nicht, ob man da Grafiken anzeigen kann.

            Du kannst das Icon aber auf jeden Fall mit einer dbImage-Komponente anzeigen.

            Gruß Ul

            Comment

            Working...
            X