ONLINE Hilfe erstellen

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
xbaseklaus
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 246
Registriert: Mi, 04. Jun 2014 12:01
Wohnort: FRANKEN

ONLINE Hilfe erstellen

Beitrag von xbaseklaus »

Guten morgen

Ich möchte für einige meiner Programme eine ONLINE Hilfe erstellen, d.h. die Hilfe ist im Internet und soll im Internet Explorer / Chrome ... angezeigt werden!

Soll aus einem Xbase Programm abrufbar sein -> geht mit runshell oder ?

Meine 2. Frage gibt's da ein gutes Programm um eine ONLINE Hilfe zu erstellen ?

mfg Klaus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

Ich verwende Dr.Explain. Erstellt: chm, pdf, doc, und html aus einem Source. Html wird auf Wunsch auch gleich online gestellt: http://www.drexplain.com/

Nachtrag: Ich verwende tdRunshell("http://domaine.com/Hilfen/meinprog")
Zuletzt geändert von satmax am Mi, 18. Mär 2015 10:26, insgesamt 2-mal geändert.
Gruß
Markus
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von Jan »

Hallo Klaus,

Xbase++ hat eine integrierte Funktion für die Onlinehilfe. Damit geht das recht einfach. Bis runter zu kontextsensitiv.

Gutes Programme - das ist oft doch eine Bauchsache. Ich selber verwende dafür Help&Manual. Es gibt günstigere Lösungen, aber das Programm bietet mir recht komfortabel all das, was ich brauche. Aus einem Quellcode werden die verschiedensten Formate ausgegeben, von den Windows-Hilfe-Versionen über PDF, Word, bis hin zu verschiedenen eBook-Formaten. Schön ist, das die Firma hier bei uns sitzt, es also wirklichen deutschsprachigen Support direkt vom Entwickler gibt.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

Jan hat geschrieben:Hallo Klaus,
Xbase++ hat eine integrierte Funktion für die Onlinehilfe. Damit geht das recht einfach. Bis runter zu kontextsensitiv.
Jan
Aber nicht zum erstellen von Hilfe Files wie *.chm oder *.pdf? Oder meinst Du den Aufruf der Hilfe?
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von brandelh »

Er meint den Aufruf ;-)

Es gibt ein Beispiel in den samples wie man die HTML Hilfe erstellen kann, ich persönlich mag die direkte Quellcode Variante lieber als noch ein Programm zu erlernen :-)
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

Also so (ich verwende TopDown):

Init:
tdHelpObj('myprog.chm',appDesktop())
Aufruf:
tdHelpObj():showHelp(IDH_TOPIC_WAS_IST_NEU_)

Was ich noch nicht geschafft habe, die Hilfe Online (im Web-Browser) Kontextbezogen aufzurufen. Aus einem Menüpunkt raus tdRunshell("http://domaine.com/Hilfen/meinprog") aufzurufen ist ja einfach. Es gibt für jedes Topic auch ein URL die man direkt anspringen kann, aber das funktioniert mit:

oDlg:helplink:=tdHelpLabel(IDH_TOPIC_AUFTRAGSMANAGEMENT)

leider nicht. Das kann tdHelpObj nicht. das anzupassen ist mir viel zu viel Aufwand. Daher liefere ich auch *.chm und *.pdf mit dem Programm aus. Über einen Menüpunkt gelangt man optional zusätzlich zum Online Index der Hilfe, dabei wird der System Browser verwendet. Aber dann eben nicht Kontextbezogen.

"Was ist neu?" Habe ich auch mit der Onlinehilfe realisiert, verwende aber dazu da oHTML Object:
oHTML:navigate( "http://meinedomaine.com/Hilfen/MeinProg ... =&sct=MA==" )
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von brandelh »

CHM Dateien und Online / Netzwerk ist problematisch, denn schon im LAN bzw. Intranet muss man die Zugriffsrechte anpassen, damit man überhaupt was sieht.
Eine reine HTML Lösung für die Online Hilfe ist eine praktische Sache, aber eben KEIN XbpHelp Objekt.
Ich würde in der EXE den HelpLabel hinterlegen (also welche Seite ich sehen will) und diesen mit der StammURL im Standardbrowser anzeigen.
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

brandelh hat geschrieben:CHM Dateien und Online / Netzwerk ist problematisch, denn schon im LAN bzw. Intranet muss man die Zugriffsrechte anpassen, damit man überhaupt was sieht.
Eine reine HTML Lösung für die Online Hilfe ist eine praktische Sache, aber eben KEIN XbpHelp Objekt.
Ich würde in der EXE den HelpLabel hinterlegen (also welche Seite ich sehen will) und diesen mit der StammURL im Standardbrowser anzeigen.
Schon klar, aber denn geht eben nichts mehr Kontextbezogen. Man bräuchte halt ein xbpHtmlHelp()...
Gruß
Markus
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von Martin Altmann »

Warum soll da nichts kontextbezogen gehen? Latürnich geht das!
Entweder machst Du für jedes Element eine eigene HTML-Dtei, die du dann gezielt aufrufst, oder Du arbeitest entsprechend mit den Ankern in HTML-Dateien!
:arrow: http://de.selfhtml.org/html/verweise/pr ... .htm#anker

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

Ja Martin, das ist mir schon klar und auch nicht mein Problem. Mein Problem ist, wie bekomme ich F1 dazu das zu tun. Mann kann ja F1 (oder auch jede andere Taste) nicht einfach global auf eine eigene Funktion verbiegen, oder?
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von brandelh »

Aber klar kann man das ! ;-)

das habe ich im Menü stehen, HelpMenuInhalt() wird dabei je Anwendung gepflegt und von einem generellen Menüsystem aufgerufen um das "Hilfe" Menü aufzubauen:

Code: Alles auswählen

function ShowNoHelp()
return msgbox("Die Hilfe wurde noch nicht erstellt.","Hilfe")
*-----------------------------------------------------------------------------------
Function HelpMenuInhalt()
   local aHelp:={}
   aadd(aHelp, { "~Hilfe"+chr(9)+"F1",   {|| iif( HelpObject()==NIL,;
                                                  ShowNoHelp(),;
                                                  HelpObject():showHelpContents() )} })
   aadd(aHelp, { "Autor (als Beispiel)",   {|| iif( HelpObject()==NIL,;
                                                  ShowNoHelp(),;
                                                  HelpObject():showHelp("html/Autor.htm") )} })
   aadd(aHelp, MENUITEM_SEPARATOR )
   aadd(aHelp, { "~Produktinformation",  {|| ProgInfo() } } )

return aHelp
nun muss natürlich noch die Eventloop den HelpEvent abfangen, wobei ich für meinen Zweck nur die Taste haben will:

Code: Alles auswählen

*-----------------------------------------------------------------------------
FUNCTION DoEventLoop(nSeconds)               // For Next Schleifen unterbrechen und Events verarbeiten !
   local nBisSeconds, nEvent, mp1:=nil, mp2:=nil, oXbp:=nil, dBis

   DEFAULT nSeconds to 0

   dBis := date()
   nBisSeconds := seconds() + nSeconds

   if nBisSeconds >= 86400                   // Endlosschleife um Mitternacht verhindern
      dBis++
      nBisSeconds := nBisSeconds % 86400
   endif

   DO WHILE .T.
      nEvent := AppEvent( @mp1, @mp2, @oXbp, nSeconds)
      do case
         case nEvent = xbe_None
            * nichts tun ist hier Standard
         case nEvent = xbeP_Keyboard .and. mp1 == xbeK_F1
            * xbeP_HelpRequest erscheinen für jede Xbp Instanz, also zu oft !
            ShowNoHelp()  // in ANW_MENU.PRG
         otherwise
              oXbp:handleEvent( nEvent, mp1, mp2 )
      endcase
      if nSeconds > 0
         if date() = dBis .and. nBisSeconds < seconds()
            exit
         endif
      endif
   ENDDO
return nil
Wenn man hier statt meiner Konstruktion dann

Code: Alles auswählen

    case nEvent = xbeP_HelpRequest 
           ZeigeMeineHilfe( ... ) 
aufruft und in den Parametern nachsieht, wer die Hilfe angefordert hat (oXbp). Eventuell steht dann auch in mp1 oder mp2 noch Hinweise.

Auch das HelpLable() Objekt könnte nur den Suchtext enthalten, man muss scheinbar diesem kein HelpObjekt zuweisen.
Das habe ich aber noch nicht probiert ;-)

Zumindest in der CARGO könnte man eine eindeutige Zieladresse hinterlegen.
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

Ja schon, aber da muss ich an jeden einzelnen eventloop ran und anpassen bzw. ersetzen und über eine eigene Funktion leiten, habe gerade mal in meinem Source gesucht: handleEvent 164 mal gefunden in 81 Dateien.

Andrerseits könnte man oXbp:handleEvent(nEvent,mp1,mp2) durch eine eigene Funktion ersetzen:

So aus dem Kopf raus:

Code: Alles auswählen

FUNCTION myEventHandler(oXbp,nEvent,mp1,mp2)
do case
   case nEvent == xbeP_Keyboard .AND. mp1 = xbeK_F1
      tdMsg("Test f3")
   case nEvent == xbeP_Keyboard .AND. mp1 = xbeK_F3
      tdMsg("Test f3")
endcase

RETURN (oXbp:handleEvent(nEvent,mp1,mp2))
Gruß
Markus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von Koverhage »

CHM Dateien und Online / Netzwerk ist problematisch, denn schon im LAN bzw. Intranet muss man die Zugriffsrechte anpassen, damit man überhaupt was sieht.
oder man benutzt UrlAllowList

Ich habe für (fast) jedes Feld eine Hilfe. hilfecode enthält das Eingabefeld

if empty( hilfecode )
hilfecode := "contents"
endif

HelpObject():showHelp("html\"+hilfecode+".htm")
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von brandelh »

Meine Eventloop liegt in einer Funktion und wird normalerweise nur vom Hauptprogramm aufgerufen. ;-)

Code: Alles auswählen

FUNCTION DoEventLoop(nSeconds)
In älterem Code nutze ich bei Modalen Fenstern eine eigene EventLoop() um das Hauptprogramm zu sperren.
Das kann man heute mit oDlg:showmodal()

Hallo Klaus,

das ist aber der aufruf einer lokalen CHM Datei oder ?

Laut Hilfe muss eine CHM im Verzeichnis der Anwendung oder mit SET HELP = angegeben werden.
UNC Pfade oder Websiten gehen da doch nicht oder ?
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

brandelh hat geschrieben:Meine Eventloop liegt in einer Funktion und wird normalerweise nur vom Hauptprogramm aufgerufen. ;-)
Das geht bei Threads? Außerdem, bei mir haben sehr viele Fenster eigene Menü's. Ist halt sehr an TopDown angelehnt.
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von brandelh »

Es gilt die Regel eine Eventloop je Thread :!:
Wenn zwei gleichberechtigte Fenster in einem Thread laufen, laufen beide über die gleiche Eventloop.

Wenn man also einen Thread je Fenster hat (was ich nicht habe) muss man die Eventloop Funktion von jedem Thread aus aufrufen,
der Quellcode bleibt dennoch nur einmal im Programm ;-)

TopDown ...

Wie bei Express kann hier natürlich anderes gelten, ich kann nur zu Xbase++ sagen, wie ich es mache.

Es gibt wie immer viele Wege ;-)
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von Koverhage »

Hubert,

lokal oder im Netzwerk.

Mein Code

Code: Alles auswählen

Hier CreateMenuSystem

cHilfedatei := cAppData+"hkabrwin.chm", ;
oHelp := XbpHelpLabel():new():create()

oHelp:HelpObject:=HelpObject(cHilfedatei,"Online Hilfe zu HKABR-Win")
oCrt:helplink := oHelp

oMenu:addItem( { sm10_1+chr(9)+"F1", { || HelpObject():showHelp("html\Home.htm") },,XBPMENUBAR_MIA_OWNERDRAW }, BMP_BOOK )


Bei jeder Eingabe setze ich F1 als Hotkey zum Beispiel (Express++)

DCHOTKEY xbeK_F1 ACTION { || my_help( dc_getactiveinfo( GetList ) ) }            // F1



*+
function MY_HELP( cHilfeCode )



if empty( cHilfeCode )
   cHilfeCode := "contents"
endif

HelpObject():showHelp("html\"+cHilfeCode+".htm")
return TRUE
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von brandelh »

Hier ist ein Beispiel für eine ONLINE-Hilfe :

http://www.xbwin.com/ot4xbXHlp/

auf Pablos Seite kann man auch diese als CHM Datei laden.
Für die Erstellung nutzte er "Help&Manual" - Info von 2008.
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

Ich kann auch eine URL anbieten, Hilfe erstellt mit Dr.Explain. Allerdings möchte ich die nicht unbedingt Public machen, bei Interesse einfach eine Board Nachricht. Ich schick dann die URL.
Gruß
Markus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von brandelh »

Warum nicht gleich die des Herstellers angeben (also die Hilfe zu Dr.Explain):

http://www.drexplain.de/hilfe/uberblick ... =&sct=MA==

ich muss sagen, das klingt sehr gut und die Optik, sowas bekomme ich mit HTML pur nicht hin !
Dazu der Preis von kostenlos (Testen mit Wasserzeichen) bis 35o Euro (Ultimate) bei der mehrere Anwender über eine Cloud gleichzeitig an einem Projekt arbeiten können,
das ist wirklich günstig und fair.
Gruß
Hubert
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

brandelh hat geschrieben: Warum nicht gleich die des Herstellers angeben (also die Hilfe zu Dr.Explain): http://www.drexplain.de/hilfe/uberblick ... =&sct=MA==
Weil es zu einfach wäre? :D Nach dem Motto: warum einfach... :badgrin:
Gruß
Markus
Benutzeravatar
satmax
1000 working lines a day
1000 working lines a day
Beiträge: 831
Registriert: Do, 02. Dez 2010 19:34
Wohnort: Biberbach in Österreich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: ONLINE Hilfe erstellen

Beitrag von satmax »

brandelh hat geschrieben: Dazu der Preis von kostenlos (Testen mit Wasserzeichen) bis 35o Euro (Ultimate) bei der mehrere Anwender über eine Cloud gleichzeitig an einem Projekt arbeiten können,
das ist wirklich günstig und fair.
Ich habe die Version um €250/USD290 pro User. Beim aktuellen Euro Kurs würde ich bei Bedarf bald zuschlagen.
Gruß
Markus
Antworten