Hilfe_Fenster

Anfängerfragen zum Programmieren mit PureBasic.
Fanpost
Beiträge: 97
Registriert: 27.01.2013 14:43

Re: Hilfe_Fenster

Beitrag 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............
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Hilfe_Fenster

Beitrag 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.
Fanpost
Beiträge: 97
Registriert: 27.01.2013 14:43

Re: Hilfe_Fenster

Beitrag 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)
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Hilfe_Fenster

Beitrag 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.
Zuletzt geändert von Nino am 07.02.2015 19:19, insgesamt 1-mal geändert.
NeoChris
Beiträge: 205
Registriert: 21.11.2013 21:17
Wohnort: Schweiz
Kontaktdaten:

Re: Hilfe_Fenster

Beitrag 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:
walbus
Beiträge: 137
Registriert: 03.03.2013 20:50

Re: Hilfe_Fenster

Beitrag von walbus »

:)
Zuletzt geändert von walbus am 07.02.2015 22:45, insgesamt 1-mal geändert.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Hilfe_Fenster

Beitrag 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
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
walbus
Beiträge: 137
Registriert: 03.03.2013 20:50

Re: Hilfe_Fenster

Beitrag von walbus »

:)
Zuletzt geändert von walbus am 07.02.2015 22:45, insgesamt 1-mal geändert.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Hilfe_Fenster

Beitrag 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
walbus
Beiträge: 137
Registriert: 03.03.2013 20:50

Re: Hilfe_Fenster

Beitrag von walbus »

:)
Zuletzt geändert von walbus am 07.02.2015 22:46, insgesamt 1-mal geändert.
Antworten