![]() |
Datei?!?!?!??!
Hi @ all!
ich bins schon wieder :oops: Ich möchte per klick auf ein Label eine von mir definierte Datei (*.doc) öfnnen. Der enutzer soll keine Chance haben, sich selbst eine Datei zu suchen! Es muss DIESE eine Datei geöffnet werden. Geht das mit OpenDialog, oder kann man damit nur eine Datei auswählen?! |
Moin Chriss,
dann schreib' doch in's OnClick Ereignis des Labels den Code für das Laden der Datei, z.B. Memo1.Lines.LoadFromFile(<Dateipfad>). |
Hi,
du bist einer von denen, die ein Verständnisproblem mit den Dialogen hat. Alle Dialoge, die du unter dem Register "Dialogs" findest, führen keine Aktion aus! Sie sind einfach nur vorgefertigte Forms (sozusagen), die einfach nur dem Standard entsprechen. Wenn diese ausgeführt werden (per Execute) gibt Execute true zurück. Dann kannst du mit den ausgewählten Einstellungen was machen. Allerdings, wie gesagt, ist der Dialog an sich völlig passiv! Chris |
ich kann die datei nicht in ein memo einlesen... n der datei sind grafiken!
deshalb möchte ich sie einfach öffnen! |
Hallo Chriss,
ich habe einen Menüpunkt, der die im Verzeichnis DokuPath (z.B. 'D:\irgendwo') hinterlegte Datei Hinweis1.doc mit Word öffnen soll.
Delphi-Quellcode:
Natürlich kann der Anwender dann von Word per Öffnen einer Datei jede andere Worddatei auf den Bildschirm holen.
procedure TForm.Hinweise1Click(Sender: TObject);
begin s := IncludeTrailingBackslash(DokuPath) + 'Hinweis1.doc'; s := '"C:\Programme\Microsoft Office\Office\WinWord.exe" ' + s; WinExec(PChar(s),2); end; mfg eddy |
Nein! *argh*
Lieber ShellExecute statt WinExec nutzen! Einfach mal suchen! Chris |
Hi,
ja Chris, ShellExecute ist hier gefragt. ;) In der Library gibt es auch ein Beispiel zu. Nur das Du eddy, statt dem Pfad, "OpenDialog1.FileName" eingibst. Der Dialog "OpenDialog", kann keine Dateien ausführen, es ist nur eine einfache Möglichkeit an den Pfad! der Datei zu kommen. Sonst nichts! Das gleiche gilt für den SaveDialog! Grüsse, Daniel :hi: |
Hallo Chakotay1308,
"einfach mal suchen" ist super, aber eine Begründung und ein Beispiel wären mir lieber (am Besten gleich mit meinen Vorgaben). Ich bin schon zufrieden, daß die WinExec-Version funktioniert!! Und der gefundene Hilfetext für ShellExecute hilft mir nicht wirklich weiter (entspricht nicht meiner Logik oder ich bin zu dummdumm). mfg eddy PS: Hat der Name Chakotay was mit dem 1. Commander der Voyager zu tun? |
Hallo eddy,
Du solltest Dich schon ein wenig anstrengen! Hier ist der Link: ![]() Ansonsten bringt Dir auch dies etwas! - Die Windows-API verfügt über eine Funktion namens ShellExecute, die Anwendungen ausführt. Dafür sind jedoch viele Parameter erforderlich, die in Anwendungen unter Delphi überflüssig sind. Die Unit FMXUtils stellt eine besser einsetzbare Alternative namens ExecuteFile zur Verfügung. - ExecuteFile arbeitet auf zweierlei Weise. Wird der Name einer ausführbaren Datei übergeben, führt ExecuteFile diese Anwendung aus. Wird der Name eines Dokuments, das mit einer Anwendung verknüpft ist, übergeben, führt ExecuteFile die Anwendung aus und öffnet das Dokument automatisch mit der Anwendung. Grüsse, Daniel :hi: |
Zitat:
Chris |
Hallo Daniel B,
vielen Dank für den Link !! Hier muß keiner dumm sterben, selbst ich nicht! Habe meinen Programmpunkt angepaßt:
Delphi-Quellcode:
Positiver Nebeneffekt: man landet sofort in Word, in der Version mit WinExec wurde Word zwar gestartet, aber mein Programm behielt den Focus.
begin
s := AppBkSp(DokuPath) + 'Hinweis1.doc'; ShellExecute(Handle, nil, PChar(s), nil, nil, SW_SHOW); end; Hallo Chakotay1308, beim nächsten Mal bitte eine Link :P :mrgreen: Hab' die 5 Seiten durchgesehen, man könnte denken, Ihr seid alle nicht ausgelastet ... Auch wenn es "nur" Klatsch & Tratsch ist, ich habe mich köstlich amüsiert. Wenn ich gewußt hätte, wieviel Spaß man bei Euch haben kann, hätte ich mich schon viel eher im Forum gemeldet. Ich werd' mir wohl auch noch so einen Namen zulegen: pkg2000 !!! mfg eddy |
Hallo eddy,
Zitat:
Zitat:
Heute hab ich auch noch in der D3Prof. Hilfe folgendes gefunden: Zitat:
Grüsse, Daniel :hi: |
Zitat:
Zitat:
Zitat:
|
Hallo Daniel B,
habe jetzt auch noch ExecuteFile ausprobiert. Die PAS-Datei ist unter ...\Delphi5\Demos\Doc\Filmanex vergraben. Parameter haber ich unter ![]()
Delphi-Quellcode:
Interessanterweise wird in dem entsprechenden Programmteil ebenfalls ShellExecute aufgerufen:
begin
s := AppBkSp(DokuPath) + 'Hinweis1.doc'; // ShellExecute(Handle, nil, PChar(s), nil, nil, SW_SHOW); ExecuteFile( s,'','',SW_SHOW); end;
Delphi-Quellcode:
Optisch sieht es auf jeden Fall besser aus.
function ExecuteFile(const FileName, Params, DefaultDir: string;
ShowCmd: Integer): THandle; var zFileName, zParams, zDir: array[0..79] of Char; begin Result := ShellExecute(Application.MainForm.Handle, nil, StrPCopy(zFileName, FileName), StrPCopy(zParams, Params), StrPCopy(zDir, DefaultDir), ShowCmd); end; Hallo Luckie, ist wohl heute nicht Dein Tag!! Du irrst nicht, DanielB hat weiter oben doch den Link eingeblendet. Weder ShellExecute noch WinExec waren das Problem - nur ein Gedankenaustausch! Deine Reaktion über meinen Wunsch: "Am besten gleich mit meinen Vorgaben" ist auch überzogen, aber ich schreibe beim nächsten Mal dahinter, wenn ich Spaß mache. Außerdem ist meinem Text von 20:38 ja zu entnehmen, daß ich es geschafft habe, meine Vorgaben selbst einzusetzen. Nirgendwo stand etwas in der Art: Programmiert mir doch bitte mein Programm .... Vielleicht schießt Du ja öfters Mal mit Kanonen auf Spazen! Wünsche wird man wohl noch äußern dürfen, auch wenn manche nicht in Erfüllung gehen. Was das Beispiel betrifft: ich habe nicht weit genug gescrollt, die Beispiele habe ich erst gefunden, nachdem ich Deine Bemerkungen gelesen hatte. Ich hoffe, das war es nun zu diesem wenig effektiven Teil. An beide: mfg eddy |
Hi eddy,
Zitat:
[Code snippsel gesnippt] Ja macht Sinn, man muss nur weniger Parameter übergeben. Eigentlich nicht schlecht, man müsste sich noch die Unit anschauen, was noch dabei ist, sonst hat man nur deswegen wieder eine Unit eingebunden die das Programm nur grösser macht. Muss ich mir mal in Ruhe anschauen. Danke für die Info! ![]() Grüsse, Daniel :hi: |
Kuckt euch mal an, was ExecuteFile macht:
Delphi-Quellcode:
Und was ist so schwer daran Shellexecute aufzurufen? :roll:
function ExecuteFile(const FileName, Params, DefaultDir: string;
ShowCmd: Integer): THandle; var zFileName, zParams, zDir: array[0..79] of Char; begin Result := ShellExecute(Application.MainForm.Handle, nil, StrPCopy(zFileName, FileName), StrPCopy(zParams, Params), StrPCopy(zDir, DefaultDir), ShowCmd); end; |
Naja, man übergibt drei Parameter weniger.
Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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