Datei in Editor öffnen

W-Stefan

Mitglied
Hi Leute.

Habe einen Editor geschrieben, der auch komplett funktioniert. Nur eines kann er noch nicht, nämlich wenn ich auf eine Textdatei doppelklicke, öffnet er sich zwar, aber in meinem Memo steht dann nichts drin.

Weiss jemand wie das funktioniert? :confused:
 
Der Dateiname der Textdatei wird deinem Programm als Parmeter übermittelt. Du musst beim starten also überprüfen, ob es irgendwelche Parameter gibt und diese dann in deinem Programm verarbeiten - in deinem Fall dann die Datei öffnen.

Gruß Patrick
 
habs doch noch allein rausgefunden.

hätte da aber noch ne frage, jetzt öffnet er richtig, aber ich möchte auch, dass sich eine Datei öffnet, wenn man sie in den bereits offenen Editor zieht.
 
Drag & Drop

Um Ihr Programm komfortabel zu gestalten, können Sie es Drag & Drop- fähig machen. Der Benutzer kann dann eine Datei mit gedrückter linker Maustaste in das Programmfenster ziehen. Nachdem die Maustaste los gelassen wurde, wird Ihrem Programm der Name der gezogenen Datei mitgeteilt. Dann kann das Programm eine Aktion mit dieser Datei ausführen.

Als erstes fügen Sie die Unit ShellApi zu der uses- Klausel hinzu.

In den Interfaceteil schreiben Sie folgendes:

procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;

Um Drag & Drop zu aktivieren, benutzen Sie den folgenden Befehl (Plazieren Sie diesen Befehl am besten im OnCreate- oder OnShow- Ereignis des Hauptformulars):

DragAcceptFiles(Handle, true);

Um Drag & Drop wieder zu deaktivieren, benutzen Sie den folgenden Befehl (Plazieren Sie diesen Befehl am besten im OnDestroy- oder OnClose- Ereignis des Hauptformulars):

DragAcceptFiles(Handle, false);

Die Prozedur, die bei einem Drag & Drop- Vorgang aufgerufen wird, lautet (Die Variable "Dateiname" enthält den Pfad der Datei, die in das Programmfenster gezogen wurde):

procedure TMainForm.WMDropFiles(var Msg: TWMDropFiles);
var Dateiname: PChar;
Laenge: LongWord;
begin
Laenge:= DragQueryFile(Msg.Drop, 0, NIL, 0);
Dateiname:= StrAlloc(Laenge + 1);
DragQueryFile(Msg.Drop, 0, Dateiname, Laenge + 1);
{Verarbeitung von Dateiname}
end;
Quelle: patrick-lenger.de
 

Neue Beiträge

Zurück