Seite 2 von 3

Re: Hilfe_Fenster

Verfasst: 07.02.2015 18:55
von Fanpost
Klasse, ich stelle hier im Forum eine Frage und schon gehen sich die User an die Wäsche!?
Als Anfänger soll man da noch durchsteigen. Trotzdem Danke für die Infos!
Ich dachte Anfänger bekommen hier im Forum Hilfestellungen.
Für ein gekauftes PureBasic-Prog brauche bzw. suche ich ein Unterprogramm für ein Hilfe-Fenster.
Na, dann muss ich wohl weitersuchen............

Re: Hilfe_Fenster

Verfasst: 07.02.2015 19:02
von NicTheQuick
Du hast doch Hilfestellung bekommen. Oder sollen wir alles fertig für dich programmieren?
Fanpost hat geschrieben:Für ein gekauftes PureBasic-Prog brauche bzw. suche ich ein Unterprogramm für ein Hilfe-Fenster.
Wie meinst du das? Du hast ein PureBasic-Programm als EXE vorliegen und möchtest jetzt eine Hilfe implementieren? Oder hast du den Quellcode zur Verfügung?
Am einfachsten ist für Windows immer noch eine CHM-Hilfe zu erstellen und die dann zu öffnen. Das hat ja mk-soft geschrieben.

Re: Hilfe_Fenster

Verfasst: 07.02.2015 19:13
von Fanpost
- Ich will kein fertiges Programm
- Mir liegt der Quellcode vor. Button und Case-Anweisung habe ich bereits implementiert
- CHM-Hilfe sagt mir (noch) nichts
- Den beschriebenen chm-prozessor kann ich nicht installieren, da anscheinend das Projekt schon bei mir vorhanden ist (???) und die Installation abbricht.
- Ich bin absoluter Anfänger (waren andere User bestimmt auch mal)

Re: Hilfe_Fenster

Verfasst: 07.02.2015 19:14
von Nino
mk-soft hat geschrieben:Ganz anders...

Hilfedatei erstellen mit http://sourceforge.net/projects/chmprocessor/

und dann OpenHelp(...) von PB
Ja, oder wenn's nur wenig Text ist reicht auch eine einfache HTML-Datei.
Die kann dann einfach angezeigt werden mit

Code: Alles auswählen

RunProgram(<Pfad>\HTML-Datei)
Denn heutzutage kann man wohl davon ausgehen, dass auf dem Ziel-Rechner ein Browser installiert ist.
Fanpost hat geschrieben:Ich dachte Anfänger bekommen hier im Forum Hilfestellungen.
Richtig, hast du ja auch bekommen.
Fanpost hat geschrieben:Ich bin absoluter Anfänger
Dann ist es wohl sinnvoll, dich alsbald mit einigen grundlegenden PB-Funktionen vertraut zu machen, z.B. denen die dir in diesem Beitrag empfohlen wurden.

Re: Hilfe_Fenster

Verfasst: 07.02.2015 19:18
von NeoChris
Fanpost hat geschrieben:- CHM-Hilfe sagt mir (noch) nichts
Drücke in PB die Taste F1. Das was du siehst ist eine CHM Datei die gestartet wurde.
In einer CHM Datei kannst du mehrere Hilfeseiten in einer Struktur packen.
Wenn du viele Hilfeseiten erstellen möchtest ist CHM sehr nützlich :allright:

Re: Hilfe_Fenster

Verfasst: 07.02.2015 19:30
von walbus
:)

Re: Hilfe_Fenster

Verfasst: 07.02.2015 20:23
von hjbremer
für kleine Hilfetexte

Code: Alles auswählen


EnableExplicit

Enumeration
   #mainwindow
   #helpwindow
   #helpgadget
   #help_on
   #help_off
EndEnumeration

Procedure.i HelpWindowCreate()
   Protected flags, oldgadlist, text$, j
   
   flags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Tool
   flags | #PB_Window_NoGadgets | #PB_Window_Invisible
   
   OpenWindow(#helpwindow, 0, 0, 322, 200, "Hilfe", flags, WindowID(#mainwindow))
   
   oldgadlist = UseGadgetList(WindowID(#helpwindow))  ;sollte benutzt werden
   
   EditorGadget(#helpgadget, 8, 8, 306, 165, #PB_Editor_ReadOnly|#PB_Editor_WordWrap)
   ButtonGadget(#help_off, 10, 175, 100, 22, "Close oder ESC")
   
   text$ = "Dies ist eine Hilfezeile im Editorgadget. "
   text$ + "Bitte drücken Sie mit der Maus den Closebutton oder den roten Knopf " 
   text$ + "oder drücken sie Taste ESC" + #CR$ + #CR$
   
   For j = 1 To 20
      text$ + "simuliert Text" + #CR$
   Next
   
   SetGadgetText(#helpgadget, text$) 
   UseGadgetList(oldgadlist)
   
EndProcedure

Procedure.i HelpWindowShow(flag)
   If flag = #True
      HideWindow(#helpwindow, #False) 
   Else      
      HideWindow(#helpwindow, #True) 
   EndIf
EndProcedure

Procedure WinCallback(hWnd, uMsg, wParam, lParam) 
   
   If uMsg = #WM_HELP                 ;Taste F1 gedrückt, hat eine eigene Message
      If hwnd = WindowID(#mainwindow) ;message kommt vom Mainwindow
         HelpWindowShow(#True)        ;;Hilfe on  
      EndIf
      
   ElseIf uMsg = #WM_KEYDOWN          ;eine Taste wurde gedrückt
      If wparam = #VK_ESCAPE          ;die ESC Taste
         HelpWindowShow(#False)       ;Hilfe off
      EndIf
   EndIf 
   
   ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure 

Define event
Define flags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered

OpenWindow(#mainwindow, 0, 0, 450, 350, "Main", flags)

SetWindowCallback(@WinCallback())    ; Callback aktivieren

;ProgrammGadgets etc
ButtonGadget(#help_on, 10, 320, 88, 22, "Hilfe oder (F1)")

;usw


HelpWindowCreate()

Repeat: event = WaitWindowEvent()
   
   If EventWindow() = #mainwindow      
      Select event
         Case #PB_Event_Gadget
            Select EventGadget()
               Case #help_on
                  HelpWindowShow(#True)                  
            EndSelect
      EndSelect
      
   ElseIf EventWindow() = #helpwindow      
      Select event
         Case #PB_Event_Gadget
            If EventGadget() = #help_off
               HelpWindowShow(#False)
            EndIf
            
         Case #PB_Event_CloseWindow
            event = 0               ;CloseWindow Event löschen !!!
            HelpWindowShow(#False)
      EndSelect
      
   EndIf   
   
Until event = #PB_Event_CloseWindow

Re: Hilfe_Fenster

Verfasst: 07.02.2015 20:53
von walbus
:)

Re: Hilfe_Fenster

Verfasst: 07.02.2015 21:53
von NicTheQuick
Hier mal eine Version, die auch auf Linux läuft.

Code: Alles auswählen

EnableExplicit

Enumeration
	#mainwindow
	#helpwindow
	#helpgadget
	#help_on
	#help_off
EndEnumeration

Enumeration MenuEvent
	#HELP_OPEN
	#HELP_CLOSE
EndEnumeration

Declare WinCallback()
Declare HelpWindowClose()


Procedure.i HelpWindowCreate()
	Protected flags, oldgadlist, text$, j
	
	flags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Tool
	flags | #PB_Window_NoGadgets | #PB_Window_Invisible
	
	OpenWindow(#helpwindow, 0, 0, 322, 200, "Hilfe", flags, WindowID(#mainwindow))
	AddKeyboardShortcut(#helpwindow, #PB_Shortcut_Escape, #HELP_CLOSE)
	BindEvent(#PB_Event_Menu, @WinCallback(), #helpwindow)
	BindEvent(#PB_Event_CloseWindow, @HelpWindowClose(), #helpwindow)
	
	oldgadlist = UseGadgetList(WindowID(#helpwindow))  ;sollte benutzt werden
	
	EditorGadget(#helpgadget, 8, 8, 306, 165, #PB_Editor_ReadOnly|#PB_Editor_WordWrap)
	ButtonGadget(#help_off, 10, 175, 100, 22, "Close oder ESC")
	BindGadgetEvent(#help_off, @HelpWindowClose())
	
	text$ = "Dies ist eine Hilfezeile im Editorgadget. "
	text$ + "Bitte drücken Sie mit der Maus den Closebutton oder den roten Knopf "
	text$ + "oder drücken sie Taste ESC" + #CR$ + #CR$
	
	For j = 1 To 20
		text$ + "simuliert Text" + #CR$
	Next
	
	SetGadgetText(#helpgadget, text$)
	UseGadgetList(oldgadlist)
	
EndProcedure

Procedure.i HelpWindowShow(flag)
	HideWindow(#helpwindow, Bool(Not flag))
EndProcedure

Procedure HelpWindowClose()
	HelpWindowShow(#False)
EndProcedure

Procedure WinCallback()
	Select EventMenu()	
		Case #HELP_OPEN
			HelpWindowShow(#True)
		Case #HELP_CLOSE
			HelpWindowShow(#False)
	EndSelect
EndProcedure

Define event
Define flags = #PB_Window_SystemMenu | #PB_Window_ScreenCentered

OpenWindow(#mainwindow, 0, 0, 450, 350, "Main", flags)

AddKeyboardShortcut(#mainwindow, #PB_Shortcut_F1, #HELP_OPEN)
BindEvent(#PB_Event_Menu, @WinCallback(), #mainwindow)

;ProgrammGadgets etc
ButtonGadget(#help_on, 10, 320, 88, 22, "Hilfe oder (F1)")

;usw

HelpWindowCreate()

Repeat
	event = WaitWindowEvent()
	
	If EventWindow() = #mainwindow     
		Select event
			Case #PB_Event_Gadget
				Select EventGadget()
					Case #help_on
						HelpWindowShow(#True)                 
				EndSelect
			Case #PB_Event_CloseWindow
				Break
		EndSelect
	EndIf
ForEver

Re: Hilfe_Fenster

Verfasst: 07.02.2015 22:00
von walbus
:)