Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mit F1 PDF-Datei aufrufen (https://www.delphipraxis.net/116428-mit-f1-pdf-datei-aufrufen.html)

hsbc 29. Jun 2008 09:01


Mit F1 PDF-Datei aufrufen
 
Hallo allerseits,

ich habe zu meiner Anwendung eine Hilfe im PDF-Format erstellt und möchte, dass der Anwender diese Datei mit F1 aufrufen kann. Dazu habe ich in der FormKeyDown folgende Zeile eingefügt:

Delphi-Quellcode:
if key = VK_F1 then ShellExecute(Application.handle, 'open', PChar('hilfe.pdf'), nil, nil, sw_ShowNormal);
was vom Prinzip her auch einwandfrei funktioniert.

Leider wird zusätzlich folgende Meldung ausgegeben:

Windows-Hilfe

Zitat:

Die Datei hilfe.pdf ist keine Windows-Hilfedatei, oder sie ist beschädigt.
Wie kann ich die Ausgabe dieser Meldung unterdrücken?

mfg
Herbert

rollstuhlfahrer 29. Jun 2008 09:04

Re: Mit F1 PDF-Datei aufrufen
 
HI,

1. versuch mal KeyPreview anzuschalten,
2. hast du die Datei als Hilfedatei eingetragen? Falls ja, austragen. Dann dürfte auch die Fehlermeldung nicht mehr kommen.

Bernhard

Die Muhkuh 29. Jun 2008 09:54

Re: Mit F1 PDF-Datei aufrufen
 
Vielleicht solltest Du zusätzlich aus dem relativen Pfad einen absoluten machen. Delphi-Referenz durchsuchenExtractFilePath und Delphi-Referenz durchsuchenApplication.ExeName hilft.

hsbc 29. Jun 2008 10:20

Re: Mit F1 PDF-Datei aufrufen
 
Vielen Dank, das war es. Ich hatte die Datei als Hilfedatei eingetragen.

Jetzt funktioniert es prima.

mfg
Herbert

Die Muhkuh 29. Jun 2008 10:55

Re: Mit F1 PDF-Datei aufrufen
 
Trotzdem würde ich Dir zu einem absoluten Pfad raten, da Du nie weißt, welches gerade das Arbeitsverzeichnis ist. Falls es nicht das Anwendungsverzeichnis ist, schlägt Dein Aufruf fehl.

Sharky 29. Jun 2008 13:33

Re: Mit F1 PDF-Datei aufrufen
 
Zitat:

Zitat von hsbc
[...]ich habe zu meiner Anwendung eine Hilfe im PDF-Format erstellt und möchte, dass der Anwender diese Datei mit F1 aufrufen kann.[...]

Hai Herbert,

ich sehe noch ein Problem. Du setzt einfach voraus das auf dem Computer ein Programm installiert ist mit dem PDFs angezeigt werden können. Wenn dem nicht so ist kann der Anwender die Hilfe nicht starten. Ist also keine so schöne Lösung.

hsbc 29. Jun 2008 14:29

Re: Mit F1 PDF-Datei aufrufen
 
Hallo Sharky,

ich könnte auch chm-Dateien erzeugen. Braucht der Anwender hiefür Zusatzprogramme zum Öffnen bzw. ist das in Windows alles inkludiert?

mfg
Herbert

Sharky 29. Jun 2008 14:31

Re: Mit F1 PDF-Datei aufrufen
 
Zitat:

Zitat von hsbc
... ist das in Windows alles inkludiert? ...

Frage mich jetzt nicht wie es bei Vista ist. Ich glaube aber von W98(ich glaube mit Patch) bix XP sollte es funktionieren.

juergen 29. Jun 2008 14:42

Re: Mit F1 PDF-Datei aufrufen
 
Hallo zusammen,
müsste man diesen Hotkey nicht regitrieren?
Was passiert ansonsten, wenn nicht die Form sondern z.B. ein Edit den Focus hat?

hsbc 29. Jun 2008 14:51

Re: Mit F1 PDF-Datei aufrufen
 
Hierfür habe ich KeyPreview auf TRUE gestellt, das dürfte genügen.

mfg
Herbert

sx2008 29. Jun 2008 15:02

Re: Mit F1 PDF-Datei aufrufen
 
Zitat:

Zitat von juergen
müsste man diesen Hotkey nicht regitrieren?

Der gezeigte Code-Schnipsel ist unschön.
Die Fehlermeldung kommt wahrscheinlich daher, dass die VCL versucht die PDF-Datei als Hilfe-Datei zu laden.
Und da PDF <> HLP gibt es die Fehlermeldung obwohl mit dem ShellExecute die PDF-Datei wahrscheinlich angezeigt wird.

Besser ist es, das Event Application.OnHelp zu benützen.
Delphi-Quellcode:
// ungetestet
function TForm1.HelpHandler(Command: Word; Data: Longint; var CallHelp: Boolean): Boolean;
begin
  Result := ShellExecute(Application.handle, 'open', PChar(Application.HelpFile), nil, nil, sw_ShowNormal) < 32;
  CallHelp := False;  // VCL sagen, dass Aufruf der Hilfedatei nicht mehr nötig ist
end;

procedure TForm1.FormCreate(..);
begin
  Application.OnHelp := HelpHandler; // Hilfe umbiegen
end;

rotfc 29. Jun 2008 15:25

Re: Mit F1 PDF-Datei aufrufen
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von hsbc
... ist das in Windows alles inkludiert? ...

Frage mich jetzt nicht wie es bei Vista ist. Ich glaube aber von W98(ich glaube mit Patch) bix XP sollte es funktionieren.

Vista kann *.chm problemlos, aber *.hlp dafür nicht mehr ohne zusätzliche Erweiterung.

hsbc 29. Jun 2008 17:46

Re: Mit F1 PDF-Datei aufrufen
 
So, ich habe das jetzt mit dem HelpHandler eingebaut, funktioniert ausgezeichnet - ist sicher eine sehr saubere Lösung.

Vielen Dank nochmals an alle.

mfg
Herbert

juergen 29. Jun 2008 19:36

Re: Mit F1 PDF-Datei aufrufen
 
Hallo hsbc,

also ich bin wohl zu blöd dafür... :oops:
Wie hast du die Funktion bei dir verwendet?

Die Muhkuh 29. Jun 2008 19:38

Re: Mit F1 PDF-Datei aufrufen
 
Hallo juergen,

was klappt denn bei Dir nicht?

Hast Du die Komponente "TApplicationEvents" auf der Form und dort das Ereignis OnHelp zugewiesen und mit dem Code von sx bestückt?

juergen 29. Jun 2008 19:50

Re: Mit F1 PDF-Datei aufrufen
 
Hallo Manuel,
danke! Die erste Hürde ist überwunden.
Ich hatte das ApplicationEvent nicht auf die Form... :oops:
(hatte ich bis jetzt noch nie benutzt, bzw. auch gar nicht gewußt das es sowas gibt)

Ich weiß weiterhin leider nicht wo und wie ich die Funktion einsetzen/aufrufen soll.


(ich will jetzt nicht rumjammern, aber mein Hilfe unter VISTA 64 funktioniert auch nicht.
Für mich als Anfänger ziemlich blöd. Werde aber in den nächsten 2 Wochen wieder auf 32 Bit umsteigen/ neu installieren...)

Die Muhkuh 29. Jun 2008 19:53

Re: Mit F1 PDF-Datei aufrufen
 
Hi Jürgen,

das dürfte sowieso keine Funktion sein, da es ja ein Event ist, dass dieser Komponente zugewiesen wird.

Als erstes klickst Du bei der ApplicationEvent-Komponente im OI auf Ereignisse und dann Doppelklick auf "OnHelp". Dann kommt der Code hier rein:

Delphi-Quellcode:
Result := ShellExecute(Application.handle, 'open', PChar(Application.HelpFile), nil, nil, sw_ShowNormal) < 32;
CallHelp := False;  // VCL sagen, dass Aufruf der Hilfedatei nicht mehr nötig ist
Das war es dann schon.

[edit] Das mit dem, dass es keine Funktion sein dürfte, nehme ich zurück. Es kann auch eine Funktion sein *g* [/edit]
[edit3] Übrigens, hast Du unter Projekt -> Optionen -> Anwendung eine Hilfe-Datei hinterlegt? [/edit]

juergen 29. Jun 2008 20:20

Re: Mit F1 PDF-Datei aufrufen
 
Hallo Manuel,

manchmal ist es schon fast peinlich, aber damit hatte ich noch nie zu tun gehabt.
Vielen Dank, auch für Edit3! :zwinker: :thumb:


*So, und jetzt werden wir Europameister* :mrgreen:


Europameisterliche Grüße
Jürgen

Die Muhkuh 29. Jun 2008 20:23

Re: Mit F1 PDF-Datei aufrufen
 
Kein Problem :zwinker:

Falls es nicht ganz rund läuft, einfach F1 drücken, dann kommt Hilfe :mrgreen:

Bernhard Geyer 29. Jun 2008 20:47

Re: Mit F1 PDF-Datei aufrufen
 
Zitat:

Zitat von rotfc
Vista kann *.chm problemlos, aber *.hlp dafür nicht mehr ohne zusätzliche Erweiterung.

Solange du es nicht auf Netzwerklaufwerken ausführen willst (auch bei XP). Das geht nur noch wenn die CHM-Datei in der Registry als "Sicher" eingetragen ist.

[Off-Topic]...schland [/Off-Topic]

hsbc 30. Jun 2008 07:45

Re: Mit F1 PDF-Datei aufrufen
 
Hallo Jürgen,

ich habe nur im Programm (vor Application.Run) eingetragen: Application.HelpFile := 'Hilfe.chm';

Ansonsten nur, wie sx2008 beschrieben.

mfg
Herbert

uligerhardt 30. Jun 2008 09:23

Re: Mit F1 PDF-Datei aufrufen
 
Zitat:

Zitat von juergen
*So, und jetzt werden wir Europameister* :mrgreen:

Zitat:

Zitat von Die Muhkuh
Falls es nicht ganz rund läuft, einfach F1 drücken, dann kommt Hilfe :mrgreen:

Ich hab F1 gedrückt, und wir sind trotzdem nicht Europameister geworden. Was hab ich falsch gemacht?

DeddyH 30. Jun 2008 09:25

Re: Mit F1 PDF-Datei aufrufen
 
[OT]
Zitat:

Zitat von uligerhardt
Was hab ich falsch gemacht?

Keine Hilfe zugewiesen :mrgreen: [/OT]

uligerhardt 30. Jun 2008 09:58

Re: Mit F1 PDF-Datei aufrufen
 
[OT]
Zitat:

Zitat von DeddyH
Keine Hilfe zugewiesen :mrgreen:

Ach Menno, das vergess ich doch immer wieder! Ich geb euch in zwei jahren bescheid, ob ich's bis dahin hingekriegt hab. :)
[/OT]

Stewag 6. Mai 2013 03:35

AW: Mit F1 PDF-Datei aufrufen
 
Kann es sein, dass der Code von sx2008 nicht unter Windows 7 / 64 Bit funktioniert?

Habe alles so gemacht wie beschrieben.

?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 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 by Thomas Breitkreuz