Aktuelle Zeit: 28.02.2020 01:44

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Probleme mit MDI_Programmen
BeitragVerfasst: 08.01.2020 16:15 
Offline

Registriert: 21.01.2011 12:46
Hallo Community,
nach längerer Zeit melde ich mich mal wieder. Ich tue mich schwer, ein MDI-Programm zu erstellen, daß z.Zt. 9 Formulare enthält, diese sind alle mit dem internen Formdesigner erzeugt. Es liegen also die zugehörigen pbf Dateien vor.
Ich habe ein Hauptfenster mit einer Menüleiste erstellt und dann die Anweisungen

MDIGadget(0, 0, 0, 0, 0, 1, 2, #PB_MDI_AutoSize)

und AddGadgetItem(0, #Formular i, "Formular i") geschrieben

Ein Problem sehe ich, wie kriege ich die Gadgets und die Ereignisse in den Formular.pbf Dateien, also den Fensteraufbau hier rein.
Man kann zwar mit Hammer und Meisel die Anweisungen aus den pbf Dateien stückweise nach der AddGadget Anweisung einfügen, aber Hilfe. Weis jemand, wie man das elegant machen kann. Ich wäre dafür dankbar.

Grüße und noch alles Gute im neuen Jahr von Forsti


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Probleme mit MDI_Programmen
BeitragVerfasst: 08.01.2020 16:46 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Das mit dem MDIGadget und mehrere Form-Dateien ist so nicht einfach zu lösen.

Gibt aber eine alternative...

Window API SetParent_(...)

Beispiel:
Code:
;-TOP

Global FormStyle = #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_SizeGadget

Procedure Form1(ParendID)
  If OpenWindow(1, 0, 0, 300, 200, "Form 1", FormStyle | #PB_Window_Invisible)
    ButtonGadget(1, 10, 10, 120, 25, "Ok")
    If ParendID
      SetParent_(WindowID(1), ParendID)
    EndIf
    HideWindow(1, 0)
  EndIf
 
EndProcedure

Procedure Form2(ParendID)
  If OpenWindow(2, 0, 00, 300, 200, "Form 2", FormStyle | #PB_Window_Invisible)
    StringGadget(2, 10, 10, 280, 25, "Ok")
    If ParendID
      SetParent_(WindowID(2), ParendID)
    EndIf
    HideWindow(2, 0)
  EndIf
 
EndProcedure

Procedure UpdateWindow()
 
EndProcedure

Procedure Main()
  If OpenWindow(0, 100, 100, 400, 300, "Window", FormStyle)
    CreateMenu(0, WindowID(0))
    MenuTitle("Ablage")
    MenuItem(1, "Form 1")
    MenuItem(2, "Form 2")
   
    Form1(WindowID(0))
   
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_Menu
          Select EventMenu()
              CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
              Case #PB_Menu_Quit
                Break
              CompilerEndIf
            Case 1
              If Not IsWindow(1)
                Form1(WindowID(0))
              Else
                SetActiveWindow(1)
              EndIf
            Case 2
              If Not IsWindow(2)
                Form2(WindowID(0))
              Else
                SetActiveWindow(2)
              EndIf
             
          EndSelect
         
        Case #PB_Event_Gadget
          Select EventGadget()
             
          EndSelect
         
        Case #PB_Event_CloseWindow
          Select EventWindow()
            Case 0
              Break
            Case 1
              CloseWindow(1)
            Case 2
              CloseWindow(2)
             
          EndSelect
         
         
      EndSelect
    ForEver
   
  EndIf
 
EndProcedure : Main()

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Probleme mit MDI_Programmen
BeitragVerfasst: 10.01.2020 12:14 
Offline

Registriert: 21.01.2011 12:46
Danke für die Antwort, die Lösung macht einen guten Eindruck. Ich werde mein Programm danach entsprechend umbauen und danach wieder melden. Mir ist bei den Beispielen mit MDI aufgefallen, daß das Einfügen von Gadgets in neu erzeugte Fenster nur allgemein als ...hier Gadgets einfügen... angeführt ist.

Viele Grüße von Forsti


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye