welches Hilfesystem im Programm

Eigentlich ist mir die Frage peinlich, aber es kann sonst niemand helfen ... :)

Moderator: Moderatoren

Antworten
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

welches Hilfesystem im Programm

Beitrag von Alfred »

Hi,

welches Hilfesystem setzt ihr zu einem Eingabefeld ein?

Gruß
Alfred
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21192
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hallo Alfred,

Hubert hatte eine m.E. einfache, aber recht gute Idee. Ein StaticText an einem unteren Rand, oder wo auch immer, der die Erklärung zu dem jeweiligen Eingabefeld anzeigt. Ist recht einfach umzusetzen. Wenn es das war, was Du meintest.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Manfred,

vielen Dank für den Tipp.

Mein erstes Projekt ist eine Programm(Basis 1.90.331 u. express 1.90.245)
zum Erfassen von Buchungssätzen nach meinen persönlichen Vor-
stellungen. Der erste Einsatz war schon ganz gut. Nun kommen natürlich
die Wünsche. Einer davon ist folgender:

Bei einem Mandanten habe ich drei Buchungskreise. Die ersten beiden
enthalten Buchungen, bei denen kenne ich die meisten Gegenkonten aus-
wendig. Nur bei den wenigen die ich nicht im Kopf habe schaue ich in
meinem Intranet(HTML-Basis) nach und das hält auf, da ich z.B.

Telecash mit Steuer 904972
Telecah ohne Steuer 4971

aus 70 Einträgen heraussuchen muß. Pro Buchungskreis kenne ich
zwischen 5 und 10 Stück nicht. Also F1 mit mehrzeiliger msgbox()
würde schon reichen. Bei DC_Help verstehe ich leider noch nicht
die Zusammenhänge.

Beim 3. Buchungskreis da benötige ich die 70 Einträge. Da habe ich
mir eine Tabpage(express++) mit einem browse vorgestellt. Wenn
ich meine html-Seite darin anzeigen könnte wäre natürlich auch nicht
schlecht.

Gruß
Alfred
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

eXpress bietet doch Tooltips an.

Ich habe übrigens kein StaticText sondern entweder ein SLE (kleine Tooltipps) oder aber en MLE im Einsatz. Du kannst z.B. beim Fenster

Code: Alles auswählen

...
oEingabeSle:setInputFocus := { |n1,n2,oXbp| SetzeHilfeText(oHelp, "oEingabeSle") }
...
oHelp := XbpMLE()....
oHelp:editable := .f.
...
bei jedem SLE einen Fixen Text laden oder wie hier in eine flexiblere Funktion wechseln. In dieser Funktion könntest du entweder eine
DBF abfragen oder den Text per Hand erfasst haben:

Code: Alles auswählen

function SetzeHilfeText( oHelp, cFeld )
   do case 
       case cFeld == "oEingabeSle"  // exacte Übereinstimmung ! Upper ?
               oHelp:setData("Hilfefenster ....")
   endcase
return nil
Aus dem MLE kann man mit Cut und Paste auch die Vorgabetexte übernehmen.

Eine HTML Hilfe ist zwar kein Hexenwerk und machbar, aber sehr unflexibel ! In der Funktion kannst du externe Daten laden und einbauen.
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:

Beitrag von Koverhage »

Wir machen das so:

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

*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
*+ Function MY_HELP()
*+
*+
*+±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
*+
function MY_HELP( aHilfefeld )

local lOk := .t., GetList := {}, k_i := 0, i := 0, hilfecode := "contents"
if Valtype( aHilfefeld ) # 'A'
return .f.
endif

if len( ahilfefeld ) < 4 .or. ;
procname( 1 ) = "MY_HELP" .or. ;
procname( 1 ) = "MEMOEDIT" .or. ;
Valtype( aHilfefeld[1] ) # 'C'
return .f.
endif

hilfecode := iif( rat(">",upper( ahilfefeld[ 1 ] )) > 0, substr( upper( ahilfefeld[ 1 ] ), rat( ">", upper( ahilfefeld[ 1 ] ) ) + 1 ), upper( ahilfefeld[ 1 ] ) )

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

HelpObject():showHelp("html\"+hilfecode+".htm")
//setAppFocus( oOldFocus )
return .t.
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Koverhage,

wollte deinen Vorschlag ausprobieren und habe natürlich mal wieder
ein Problem und habe deinen Vorschlag zunächst auf:

DCHOTKEY xbeK_F1 Action {||msgbox("Hallo")}

reduzuiert.

Der selbe Code in einem anderen Testprogramm läuft einwandfrei.

Was kann denn den DCHOTKEY blockieren?

Gruß
Alfred
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Koverhage,

DCHOTKEY geht nun. Ursache vermutlich zu viele Testabstürze.

Code: Alles auswählen

HelpObject():showHelp("html\"+hilfecode+".htm") 
verstehe ich leider noch nicht. Wo kommt denn das HelpObject() her?

Habe anstelle von dieser Zeile

Code: Alles auswählen

do case
    case Alltrim(helpcode) == "KONTO"
           DCMSGBOX("Voba 1220")
    otherwise
endcase   
eingefügt und alles läuft zu meiner vollsten Zufriedenheit.

Vielen Dank für den Beipielcode.

Gruß
Alfred
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:

Beitrag von Koverhage »

Alfred,

das freut mich zu hören.
Hier erstmal der Rest vom Code.

local oHelp := XbpHelpLabel():new():create()

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


Wenn Du weitere Hiilfen in Deine Programme einbauen willst, wird es meines Erachtens schnellunübersichtlich und schlecht zu pflegen wenn diese im PRG direkt stehen.


Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Koverhage hat geschrieben:Wenn Du weitere Hiilfen in Deine Programme einbauen willst, wird es meines Erachtens schnellunübersichtlich und schlecht zu pflegen wenn diese im PRG direkt stehen.
Ganz deiner Meinung. Ich verwende für meine MLE-Hilfetexte (diese werden sofort ohne F1 angezeigt und enthalten die wichtigsten Infos.) in einer DBF (Memofeld) ausgelagert, die jederzeit auch von priviligierten Anwendern geändert werden kann. Sonst käme ich mit dem Austausch der EXE ja nicht mehr nach ;-).
Für die allgemeine Programmhilfe sind die richtigen HTML Hilfen von dir natürlich wesentlich professioneller.
Gruß
Hubert
Alfred
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 476
Registriert: Do, 03. Mai 2007 12:37
Wohnort: München

Beitrag von Alfred »

Hallo Klaus,

habe oCrt durch SetAppWindow() ersetzt und noch die Funktion
HelpObject() aus dem XbpHelpLabel()-Beispiel eingefügt und die Hilfe ist
absolut perfekt. :D

Im Hauptprogramm steht nur noch der DCHOTKEY für F1 . Den Rest habe
ich in eine eigene ALFHilfe.prg ausgelagert und die Anzeige in Abhängigkeit
vom Buchungskonto gemacht.

Um Huberts Ansatz zu realisieren würde mich interessieren, ob man
statt dem DC_MSGBOX() oder HelpObject() ein Window aufrufen könnte,
in dem man einen browse einer dbf anzeigt, ohne mit dem DCREAD GUI
in Konflikt zu geraten?

Gruß
Alfred
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:

Beitrag von Koverhage »

Alfred,

mit DCREAD GUI kommst Du nicht in Konflikte.

Du Kannst ohne Probleme weitere Fenster öfnnen.

Klaus
Antworten