AGB  ·  Datenschutz  ·  Impressum  







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

TSynMemo und Drag&Drop mit Dateien ?

Ein Thema von rebugger · begonnen am 2. Nov 2002 · letzter Beitrag vom 3. Nov 2002
Antwort Antwort
rebugger

Registriert seit: 29. Okt 2002
Ort: Auerbach
190 Beiträge
 
Delphi 7 Professional
 
#1

TSynMemo und Drag&Drop mit Dateien ?

  Alt 2. Nov 2002, 21:13
Wie kann ich Dateien in ein TSynMemo per Drag & Drop laden ?
Wie kann ich Dateien in ein TSynMemo per "Datei mit Maus auf Programm" ziehen (bzw. Datei ist mit Programm verknüpft) laden ?

[edit=Daniel B]Und ab nach Sonstiges; Hat nichts mit Komponentenentwicklung zutun![/edit]
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.107 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 3. Nov 2002, 02:20
Moin Rebugger,

zum ersten Problem:

Code:
[b]uses[/b]
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, SynEdit,
  shellapi; [color=#000080]// SHELLAPI einbinden für DragQueryFile[/color]

[b]type[/b]
  TForm1 = [b]class[/b](TForm)
    SynEdit1: TSynEdit;
    [b]procedure[/b] FormCreate(Sender: TObject);
  [b]private[/b]
    [color=#000080]{ Private-Deklarationen }[/color]
    [color=#000080]// Routine für die Verarbeitung der Message WM_DROPFILES[/color]
    [b]procedure[/b] GetDroppedFileNames([b]var[/b] msg : TWMDropFiles); message WM_DROPFILES;
  [b]public[/b]
    [color=#000080]{ Public-Deklarationen }[/color]
  [b]end[/b];

[b]var[/b]
  Form1: TForm1;

[b]implementation[/b]

[color=#000080]{$R *.DFM}[/color]

[b]procedure[/b] TForm1.GetDroppedFileNames([b]var[/b] msg : TWMDropFiles);

[b]var[/b]
 sFileName   : [b]string[/b];
 dwFileCount : cardinal;
 i           : cardinal;
 dwReqdLength : cardinal;

[b]begin[/b]
  [color=#000080]// Anzahl der per Drag 'n' Drop übergebenen Dateipfade[/color]
  [color=#000080]// Hier sollte es nur eine sein, bei mehreren würde nur[/color]
  [color=#000080]// die letzte Datei im SynEdit Fenster stehenbleiben[/color]
  dwFileCount := DragQueryFile(msg.Drop,$FFFFFFFF,[b]nil[/b],0);
  [b]for[/b] i := 0 [b]to[/b] dwFileCount - 1 [b]do[/b]
  [b]begin[/b]
    [color=#000080]// Pfadlänge ermitteln[/color]
    dwReqdLength := DragQueryFile(msg.Drop,i,[b]nil[/b],1);
    [color=#000080]// Dateinamen abfragen[/color]
    sFileName   := StringOfChar(#00,dwReqdLength+1);
    DragQueryFile(msg.Drop,i,PChar(sFileName),dwReqdLength+1);
    [color=#000080]// Datei laden[/color]
    SynEdit1.Lines.LoadFromFile(sFileName);
  [b]end[/b];
[b]end[/b];

[b]procedure[/b] TForm1.FormCreate(Sender: TObject);
[b]begin[/b]
  [color=#000080]// Anmelden, dass Dateien per Drag 'n' Drop angenommen werden[/color]
  DragAcceptFiles(self.Handle,true);
[b]end[/b];
Deine zweite Frage habe ich eventuell nicht so ganz verstanden.
Dateiverknüpfungen (z.B. *.txt wird bei Doppelclick mit Notepad geöffnet) werden über die Registry angelegt.
Unter HKEY_CLASSES_ROOT muss dazu ein Key angelegt werden, der den Dateityp zum Namen hat (Beispiel: .txt), darin wird ein Standardwert angelegt (Typ REG_SZ / String). Was darin steht, dient als weiterer Verweis, um im Beispiel zu bleiben: txtfile.
Unter dem jetzt zu ermittelnden Key HKEY_CLASSES_ROOT\txtfile wird noch eine Key Struktur angelegt, so dass das ganze dann so aussieht:
HKEY_CLASSES_ROOT\txtfile\shell\open\command
Hier wird wieder ein Standardwert angelegt, der den Pfad des Programmes enthält, das mit dem Dateityp verknüpft werden soll, sowie %1 damit auch etwas übergeben wird.
Wichtig:
Sowohl der Pfad, als auch %1 sollten jeweils in doppelete Anführungsstriche eingeschlossen werden, damit Leerzeichen im Pfad nicht zu Fehlern führen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:36 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