Seite 2 von 4

Verfasst: 09.03.2009 13:12
von Kaeru Gaman
das "PrintN" durch einen Proc-Aufruf ersetzen.
diese Proc kann vorerst einfach ein PrintN enthalten,
und kann später durch eine "zum Editorgadget hinzufügen und runterscrollen" funktion ersetzt werden.

Verfasst: 09.03.2009 14:19
von ts-soft
Sieh Dir in der Hilfe mal das RunProgram-Beispiel an.
Erstellste ein Fenster mit EditorGadget, sowie Start- und Stop-Button
Bei start, startest die console, sichtbar oder auch nicht, bei stop machste sie
zu :mrgreen:
Mit ReadProgramString() liest Du die Ausgaben der Console (egal ob
sichtbar oder nicht) und schreibste ins EditorGadget.

Gruß
Thomas

Verfasst: 09.03.2009 17:15
von MrVain
Danke,

das sieht schonmal so aus.

Bild





So sieht mein Code aus:

[/img]

Code: Alles auswählen

WinMain_ID = OpenWindow(#PB_Any, #Null_X, #Null_Y, #WindowWidth, #WindowHeight, #Program_Title, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered)

If WinMain_ID
   If CreateMenu(0, WindowID(WinMain_ID))

    MenuTitle("Datei")
      MenuItem( 1, "&Schnittstelle starten")
      MenuItem( 2, "Schnittstelle beenden")
      MenuBar()
      MenuItem( 9, "&Beenden")

    MenuTitle("Optionen")
      MenuItem( 3, "INI-Datei bearbeiten")
      MenuBar()
      MenuItem(7, "Log-Datei öffnen")
      
    MenuTitle("?")
      MenuItem(11, "About")

  EndIf
  
  
  Repeat

    Select WaitWindowEvent()

      Case #PB_Event_Menu

        Select EventMenu()  ; To see which menu has been selected

          Case 11 ; About
            MessageRequester("Version", "Version 0.1", 0)
            
          Case 9  ; Beenden
            Quit = 1
            
          Case 1 ; Schnittstelle starten
                If OpenWindow(0, 0, 0, 322, 150, "EditorGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) 
               EditorGadget(0, 8, 8, 306, 133) 
               AddGadgetItem(0, a, "Hallo Welt!") 
               EndIf
          
          Case 3 ; Ini Datei öffnen
            RunProgram(#Ini_Datei)
            
          Case 7 ; Log Datei öffnen
            RunProgram(#Log_Datei)
          Default
            MessageRequester("Info", "MenuItem: "+Str(EventMenu()), 0)

        EndSelect

      Case #PB_Event_CloseWindow
        Quit = 1

    EndSelect

  Until Quit = 1
  
  

EndIf

End


1. Wie kann ich das Fenster in das fenster im Hintergrund einbetten?
2. Beim "eingebetteten" Fenster soll das X (Schließen) entfernt werden - es soll nur im Menü (über starten und beenden) geöffnet bzw geschlossen werden..


Vielen Dank schonmal für eure Hilfe...

Verfasst: 09.03.2009 17:31
von Kaeru Gaman
also, ich würde da nicht noch ein fenster öffnen, wenn du keins haben willst...
wieso machst du das EditorGadget nicht von Anfang an auf?
und im Hauptfenster ganz normal?

Verfasst: 09.03.2009 17:42
von MrVain
Kaeru Gaman hat geschrieben:also, ich würde da nicht noch ein fenster öffnen, wenn du keins haben willst...
wieso machst du das EditorGadget nicht von Anfang an auf?
und im Hauptfenster ganz normal?
Wie meinst du das???

Soll ich dies hier:

Code: Alles auswählen

WinMain_ID = OpenWindow(#PB_Any, #Null_X, #Null_Y, #WindowWidth, #WindowHeight, #Program_Title, #PB_Window_MinimizeGadget | #PB_Window_ScreenCentered) 
... umschreiben zu einem EditorGadget??

Verfasst: 09.03.2009 18:07
von Kaeru Gaman
ermn... nein...

mompls...

PS/OT: o fac... definier doch die konstanten wenn du schon code postest... dz

Verfasst: 09.03.2009 18:14
von Kaeru Gaman
K, das mein'ich:

Code: Alles auswählen

WinMain_ID = OpenWindow(#PB_Any, 0,#PB_Ignore, 600, 400, "BlaTest")

If WinMain_ID
   If CreateMenu(0, WindowID(WinMain_ID))

    MenuTitle("Datei")
      MenuItem( 1, "&Schnittstelle starten")
      MenuItem( 2, "Schnittstelle beenden")
      MenuBar()
      MenuItem( 9, "&Beenden")

    MenuTitle("Optionen")
      MenuItem( 3, "INI-Datei bearbeiten")
      MenuBar()
      MenuItem(7, "Log-Datei öffnen")
     
    MenuTitle("?")
      MenuItem(11, "About")

;*********************************************
;** Gadget ins Hauptfenster
    EditorGadget(0, 24, 24, 306, 133)
;*********************************************
  EndIf
 
 
  Repeat

    Select WaitWindowEvent()

      Case #PB_Event_Menu

        Select EventMenu()  ; To see which menu has been selected

          Case 11 ; About
            MessageRequester("Version", "Version 0.1", 0)
           
          Case 9  ; Beenden
            Quit = 1
           
          Case 1 ; Schnittstelle starten
            ;*********************************************
            ;** Hier nur Ausgabe
               AddGadgetItem(0, a, "Hallo Welt!")
            ;*********************************************
         
          Case 3 ; Ini Datei öffnen
            Debug "RunProgram(#Ini_Datei)"
           
          Case 7 ; Log Datei öffnen
            Debug "RunProgram(#Log_Datei)"
          Default
            MessageRequester("Info", "MenuItem: "+Str(EventMenu()), 0)

        EndSelect

      Case #PB_Event_CloseWindow
        Quit = 1

    EndSelect

  Until Quit = 1

EndIf

End

Verfasst: 09.03.2009 18:16
von PMTheQuick
Und noch nen Tipp! Du möchtest nicht alles in nen Procedure-Aufruf ersetzen? Und jederzeit schnell switchen können zwischen Console und Fenster? Ersetze einfach temporär die PB-Funktionen durch deine eigenen mit Makros...

Code: Alles auswählen

#Windowed = #True

CompilerIf #Windowed = #True
  Macro OpenConsole
    OpenConsoleNew
  EndMacro
  
  Macro PrintN
    PrintNNew
  EndMacro
  
  Macro Input
    InputNew
  EndMacro
  
  Macro CloseConsole
    CloseConsoleNew
  EndMacro
  
  Procedure OpenConsoleNew()
    Debug "Hier kannst du ein Konsolenfenster öffnen oder initalisieren. (Editor-Gadget erstellen oder was weiss ich..."
  EndProcedure
  
  Procedure PrintNNew(String$)
    Debug "Hier den Code zur Ausgabe ins Edit-Gadget eintippen"
  EndProcedure
  
  Procedure inputnew()
    Debug "Hier den Code für die Input-Funktion"
  EndProcedure
  
  Procedure CloseConsoleNew()
    Debug "Hier den Code fürs schliessen der Konsole"
  EndProcedure
CompilerEndIf

OpenConsole() ; Ruft OpenConsoleNew() auf
PrintN("Hallo") ; Ruft PrintNNew("Hallo") auf
Input()
; ...
Sollte alles erklären...

Gruss
PMTheQuick ;-)

Verfasst: 10.03.2009 09:31
von MrVain
@Kaeru Gaman:

Wenn ich das so mache, wie du, dann kommt folgender Fehler:

"ERROR There is no current Gadget List"

@PMTheQuick

Sorry, aber für mich ist das etwas verwirrend... (bin noch Anfänger...)

Verfasst: 10.03.2009 11:26
von ts-soft
> "ERROR There is no current Gadget List"
Woher sollen wir Wissen, das ein neuer eine alte Version nutzt und wieso
macht er das?

PureBasic Updaten, wir schreiben die Phase 4.30, und dann noch mal testen.