Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Positionsmarken in .rtf Files (https://www.delphipraxis.net/210751-positionsmarken-rtf-files.html)

Amateurprofi 4. Jun 2022 16:28

Positionsmarken in .rtf Files
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zur Erstellung von Help Files (.hlp) benutze ich seit vielen Jahren Microsoft Help Workshop.
Basis für den Help Compiler ist jeweils eine .rtf Datei.
Die .rtf Datei ist in mehrere, oft hunderte, Kapitel unterteilt.
Den Überschriften der Kapitel ist jeweils eine Fußnote oder Endnote zugewiesen.

Zum Beispiel sieht ein Kapitel (nicht vollständig) so aus:
#$kHilfe Menu im Hauptfenster // Topic-Id = miHelpMain
Mit den Einträgen dieses Menus kann die Hilfe zum Programm angezeigt werden.
Hilfe InhaltmiHelpContentMain // Die Topic-Id "miHelpContentMain" ist als "Verborgen" formatiert.

#$kHilfe Inhalt Eintrag im "Hilfe" Menu // Topic-Id = miHelpContentMain
Zeigt die Startseite der Hilfe.
Mit der F1-Taste kann eine kontextbezogene Hilfe gezeigt werden.
Es wird versucht die Hilfe zu dem Objekt zu zeigen, auf das der Mauszeiger zeigt.
Die kontextbezogene Hilfe ist sowohl im Hauptfenster wie auch in allen anderen Fenstern des Programms verfügbar.

Vor der Zuweisung von Fuß-/ Endnoten sahen die Kapitelüberschriften so aus:
miHelpMainHilfe Menu im Hauptfenster
miHelpContentHilfe Inhalt Eintrag im "Hilfe" Menu

Die Fuß-/Endnoten wurden so zugewiesen
Eingabecaret hinter "miHelpMain" stellen und Shift-Ctrl-J drücken
Shift-Ctrl-J ist dem Macro "Help_YMakeJumpToHeader()" zugewiesen

Eingabecaret hinter "miHelpMain" stellen und Shift-Ctrl-S drücken
Shift-Ctrl-S ist dem Macro "Help_YMakeShowHeader()" zugewiesen

Wie ich (in der .rtf Datei) von einem Link zum Text springen kann, habe ich gelöst.
EingabeCaret in den Text "Hilfe Inhalt" stellen und Alt-G drücken.
Alt-G ist dem Macro "GotoTopic()" zugewiesen.

Was ich noch machen möchte ist, wie z.B. in Delphi, mit Shift-Ctlr-1 bis 9 Positionsmarken zuweisen.
Meine Vorstellung ist, dass ich das Eingabecaret in eine Kapitelüberschrift stelle und mit Shift-Ctrl-1 die zugehörige Topic-Id in einem Array(9) of String speichere, um später mit einer anderen Tastenkombination die Topic-Id aus dem Array zu lesen und zur entsprechenden Textstelle zu springen.

Woran es scheitert:
Ich habe bisher nicht herausgefunden, wie ich, herausfinden kann, welche Topic-Id einer bestimmten Kapitelüberschrift zugewiesen ist.
Kann mir da jemand helfen? Achtung: Word 2010
Die von mir benutzten Macros sind in der Datei Help.dot (Im Anhang als Help.zip)

Die Idealvorstellung ist natürlich eine "Positionsmarke" für eine beliebige Stelle im Text zu erstellen um später zu dieser Textstelle zu springen.

Amateurprofi 9. Jun 2022 20:26

AW: Positionsmarken in .rtf Files
 
Keiner 'ne Idee?

Steku 9. Jun 2022 21:11

AW: Positionsmarken in .rtf Files
 
Hallo Klaus,

kommst du evtl. weiter wenn du dir einen anderen Hilfegenerator anschaust?
Die meisten können aus RTF/CHM importieren und auch wieder als RTF exportieren.
Vielleicht gibt dir das den entscheidenden Hinweis...

Zu nennen wären evtl.
HelpAndManual (Trial)
HelpSmith (Trial)
HelpNDoc (Free for personal use)
HelpScribble (Trial)
Precision Helper (Free)

Grüße
Steku

bcvs 10. Jun 2022 07:26

AW: Positionsmarken in .rtf Files
 
Wieso eigentlich *.hlp-Dateien? Die sind doch schon seit Windows7 tot (oder war es Vista?)

mjustin 10. Jun 2022 07:44

AW: Positionsmarken in .rtf Files
 
Wo sollen die Positionsmarken denn verwendet werden, geht es um Makroprogrammierung für MS Word, um bei der Bearbeitung eines RTF Dokuments Marker setzen und dorthin springen zu können?

Also z.B. so etwas: https://docs.microsoft.com/de-de/off....bookmarks.add

Amateurprofi 10. Jun 2022 21:13

AW: Positionsmarken in .rtf Files
 
Zitat:

Zitat von Steku (Beitrag 1507123)
Hallo Klaus,

kommst du evtl. weiter wenn du dir einen anderen Hilfegenerator anschaust?
Die meisten können aus RTF/CHM importieren und auch wieder als RTF exportieren.
Vielleicht gibt dir das den entscheidenden Hinweis...

Zu nennen wären evtl.
HelpAndManual (Trial)
HelpSmith (Trial)
HelpNDoc (Free for personal use)
HelpScribble (Trial)
Precision Helper (Free)

Grüße
Steku

Danke Steku,
hilft mir leider nicht, weil ich keinen anderen Hilfegenerator suche, sondern
Zitat:

Was ich noch machen möchte ist, wie z.B. in Delphi, mit Shift-Ctlr-1 bis 9 Positionsmarken zuweisen.
Meine Vorstellung ist, dass ich das Eingabecaret in eine Kapitelüberschrift stelle und mit Shift-Ctrl-1 die zugehörige Topic-Id in einem Array(9) of String speichere, um später mit einer anderen Tastenkombination die Topic-Id aus dem Array zu lesen und zur entsprechenden Textstelle zu springen.

Woran es scheitert:
Ich habe bisher nicht herausgefunden, wie ich, herausfinden kann, welche Topic-Id einer bestimmten Kapitelüberschrift zugewiesen ist.
Ich möchte mich nicht umstellen, weil meine Hilfedateien zu einem großen Teil auf Knopfdruck automatisch erstellt werden.

Amateurprofi 10. Jun 2022 21:15

AW: Positionsmarken in .rtf Files
 
Zitat:

Zitat von bcvs (Beitrag 1507127)
Wieso eigentlich *.hlp-Dateien? Die sind doch schon seit Windows7 tot (oder war es Vista?)

Weil ich im Prinzip zufrieden bin mit dem was ich habe.
Ich arbeite übrigens mit Windows 7.

Amateurprofi 10. Jun 2022 21:33

AW: Positionsmarken in .rtf Files
 
Zitat:

Zitat von mjustin (Beitrag 1507128)
Wo sollen die Positionsmarken denn verwendet werden, geht es um Makroprogrammierung für MS Word, um bei der Bearbeitung eines RTF Dokuments Marker setzen und dorthin springen zu können?

Also z.B. so etwas: https://docs.microsoft.com/de-de/off....bookmarks.add

Danke Michael,
ja es geht um Makroprogrammierung (VBA) und Bookmarks kommt dem nahe was ich suche, trifft es aber nicht wirklich.
Die Bookmarks wären dann Bestandteile des Dokuments, und ich möchte durch das Setzen von Positionsmarken am Dokument nichts verändern.
Das ganze soll ausschließlich auf VBA-Ebene laufen.

mjustin 11. Jun 2022 19:37

AW: Positionsmarken in .rtf Files
 
Zitat:

Zitat von Amateurprofi (Beitrag 1507157)
Die Bookmarks wären dann Bestandteile des Dokuments, und ich möchte durch das Setzen von Positionsmarken am Dokument nichts verändern.
Das ganze soll ausschließlich auf VBA-Ebene laufen.

Die Positionsmarken sollen das Dokument nicht verändern, damit das RTF Dokument z.B. nicht bei einem Versionsvergleich unerwünschte Änderungen enthält?
Die Bookmarks, die mit VBA während der Bearbeitungssitzung angelegt werden, könnte man beim Beenden (Schliessen des Dokuments) auch wieder komplett entfernen.

Oder sollen die Bookmarks dauerhaft bestehen bleiben, aber nicht im Dokument selbst gespeichert sein? (sondern z.B. in einer anderen Datei)

Amateurprofi 12. Sep 2022 23:34

AW: Positionsmarken in .rtf Files
 
Zitat:

Zitat von mjustin (Beitrag 1507128)
Wo sollen die Positionsmarken denn verwendet werden, geht es um Makroprogrammierung für MS Word, um bei der Bearbeitung eines RTF Dokuments Marker setzen und dorthin springen zu können?

Also z.B. so etwas: https://docs.microsoft.com/de-de/off....bookmarks.add

Habe mich jetzt entschlossen Bookmarks zu verwenden.
Meine Befürchtung war, dass der Help Compiler damit Probleme haben könnte. Hat er nicht.
Danke für den Tipp.

Code:
Sub SetBookMark(ID As Long)
   Dim BMName As String, BM As Bookmark
   If (ID >= 0) And (ID <= 9) Then
      BMName = "BookMark" & ID
      For Each BM In ActiveDocument.Bookmarks
         If BM.Name = BMName Then
            BM.Delete
            Exit For
         End If
      Next
      ActiveDocument.Bookmarks.Add Name:=BMName, Range:=Selection.Range
   End If
End Sub
Code:
Sub GotoBookMark(ID As Long)
   Dim BMName As String, BM As Bookmark
   If (ID >= 0) And (ID <= 9) Then
      BMName = "BookMark" & ID
      For Each BM In ActiveDocument.Bookmarks
         If BM.Name = BMName Then
            BM.Select
            Exit Sub
         End If
      Next
   End If
End Sub
Code:
Sub DeleteBookMarks()
   Dim BM As Bookmark
   For Each BM In ActiveDocument.Bookmarks
      BM.Delete
   Next
End Sub


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 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