Seite 1 von 2

EventDesigner (All OS)

Verfasst: 12.03.2016 13:03
von mk-soft
Hier der überarbeitete Nachfolger von VisualGenerateDeluxe mit neuen Namen.

Update v1.02
- Bugfixes
- Added Drop Common files

Update v1.03
- Bugfix FrameGadget

Update v1.07
- Bugfix ToolBatToolTip
- Korrektur von LoadImage mit #PB_Any zu Konstanten
EventDesigner

Programm zu Erstellung eines lauffähigen Programmcode aus einen oder mehreren Common Dateien.

Mit den Form Designer erstellte Common Dateien (*.pbf) hinzufügen und Start Generieren ausführen.
Das erste gefundene Fenster wird als Hauptfenster aufgerufen.
Nach eine Änderung der Common Dateien das Generieren noch einmal durchführen. Somit werden neue Fenster, Menus, Gadgets. Etc hinzugefügt und vorhandne korrigiert. Verwendete Konstanten und Fensteraufrufe werden auch in den Benutzer Include-Dateien mit korrigiert.

Nach dem Generieren stehen folgende Dateien zu Verfügung.

- Main.pb: Hauptprogramm (Wird nur beim ersten Durchlauf erzeugt.)
- Commonfile.pb : Gemeinsame Common Datei (Wird jedes Mal neu erzeugt)
- EventMain.pb: Event Verteilung (Wird jedes Mal neu erzeugt)
- EventMenu.pb: Alle Events für Menus und ToolBarButtons
- EventGadget.pb: Alle Events für Gadgets
- EventWindow.pb: Alle Events für SizeWindow und ExitWindow

Richtlinien:

Bei mehreren Fenstern für OpenWindow() eine eindeutige Konstante vergeben.
Aus dieser werden für alle weiteren Konstanten der Prefix erzeugt um nicht mit anderen Fenster in Konflikt zu kommen.
Beispiel:
Bei OpenWindow(#Main, ...) wird aus den folgenden Konstanten
MenuItem(#Datei_Neu, ...) zu MenuItem(#Main_Datei_Neu, ...)
ButtonGadget(#Ok, ...) zu ButtonGadget(#Main_Ok, ...)

Unter PB-IDE Einstellungen "Form"
- PB_Any ausschalten
- Generiere Ereignisprocedur ausschalten
- Generiere Ereignis-Schleife ausschalten
Download
ftp://gast:1234@mk-soft.myhome-server.d ... tdesigner/

:wink:

P.S. Ist schon länger im englischen Forum verfügbar. War aber einige Tage im Ausland...

Re: EventDesigner (All OS)

Verfasst: 12.03.2016 21:05
von matbal
Interessantes Programm. Mir gefällt der generierte Code. Er sieht sehr aufgeräumt aus.
Zum Auswählen der PBF-Dateien könnte ich mir Drag'n'Drop gut vorstellen. Das würde das Durchklicken zum Arbeitsverzeichnis ersparen.

Bei meinen Tests wurde manchmal fehlerhafter Code erstellt. Ich habe aber noch nicht herausgefunden, unter welchen Bedingungen das passiert. (PB 5.42 32Bit)

In dem einfachen Testprojekt habe ich zwei in der Größe veränderbare Fenster erstellt, FormMain und FormSettings. Wenn ich das Programm starte, öffnet sich FormMain. Über das Menü in FormMain öffne ich FormSettings. Jetzt erhalte ich einen Compilerfehler in der Resize-Prozedur (Resize_FormSettings).

Fehlermeldung: Das angegebene #Gadget ist nicht initialisiert.

Hier ist das nicht funktionierende Projekt: Test.zip

Re: EventDesigner (All OS)

Verfasst: 12.03.2016 23:23
von mk-soft
@matbal

Danke für das Feedback.

Unter Mac tritt der Fehler nicht auf, aber bei Windows. Habe es gerade auf XP mal getestet.
Wie es aus sieht läuft das Event Resize schon auf, obwohl das Fenster noch nicht ganz aufgebaut ist.

Code: Alles auswählen

Update v1.02

Re: EventDesigner (All OS)

Verfasst: 13.03.2016 00:13
von matbal
Ich habe jetzt herausgefunden, warum ich diesen Fehler nicht immer hatte. Nur wenn das Fenster, das ich öffne, ein Menü hat, wird (überflüssigerweise) dieses Event ausgelöst.

Re: EventDesigner (All OS)

Verfasst: 13.03.2016 01:13
von mk-soft
Danke fürs finden :allright:

Aktuelle Lösung über Macro...

Code: Alles auswählen

Procedure MyResizeGadget(Gadget, x, y, width, height)
  If IsGadget(Gadget)
    ResizeGadget(Gadget, x, y, width, height)
  EndIf
EndProcedure

Macro ResizeGadget(Gadget, x, y, width, height)
  MyResizeGadget(Gadget, x, y, width, height)
EndMacro
Werde ich so automatisch in der Commonfile.pb einbauen

Re: EventDesigner (All OS)

Verfasst: 13.03.2016 14:56
von mk-soft
Neue Version für alle OS Online...

Update v1.02
- Bugfixes
- Added Drop Common files

:wink:

Re: EventDesigner (All OS)

Verfasst: 11.10.2016 17:39
von hjf
Hallo mk-Soft,

teste gerade Deinen EventDesigner V1.02 unter Win7/x86.

Ich habe den Effekt, dass das Frame-Gadget im Common-File nicht
korrekt erscheint. In der Gadget-Enumeration wird es nicht gelistet
und in Open_WinMain() fehlt #WinMain vor dem#FrameBot.

In Resize_WinMain() dagegen erscheint es korrekt als #WinMain_FrameBot.

Bei anderen Gadgets gibt es das Problem nicht.

Code: Alles auswählen

;-TOP

; Event Designer -  Commonfile (Do Not Edit - Allways Overwrite)

; ***************************************************************************************

Procedure MyEventResizeGadget(Gadget, x, y, width, height)
  If IsGadget(Gadget)
    ResizeGadget(Gadget, x, y, width, height)
  EndIf
EndProcedure

Macro ResizeGadget(Gadget, x, y, width, height)
  MyEventResizeGadget(Gadget, x, y, width, height)
EndMacro

; ***************************************************************************************

;- Window Constants
;
Enumeration
  #WinMain
  #WinSlave
EndEnumeration

;- Menubar Constants
;
Enumeration
EndEnumeration

;- MenuItem Constants
;
Enumeration
EndEnumeration

;- Gadget Constants
;
Enumeration
  #WinMain_BtnOk
  #WinMain_BtnCancel
  #WinMain_BtnOpenSlave
  #WinMain_CntBot
  #WinSlave_BtnCancel
EndEnumeration

;- StatusBar Constants
;
Enumeration
EndEnumeration

;- ToolBar Constants
;
Enumeration
EndEnumeration

;- Font Constants
;
Enumeration
EndEnumeration

;- Image Constants
;
Enumeration
EndEnumeration


; ***************************************************************************************

;- Load Font

;- Image Plugin

;- Load Images


; ***************************************************************************************

Procedure Open_WinMain(x = 0, y = 0, width = 600, height = 400)
  OpenWindow(#WinMain, #PB_Ignore, #PB_Ignore, width, height, "", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
  ButtonGadget(#WinMain_BtnOk, 430, 345, 145, 35, "Ok")
  ButtonGadget(#WinMain_BtnCancel, 10, 345, 145, 35, "Abbrechen")
  ButtonGadget(#WinMain_BtnOpenSlave, 275, 345, 145, 35, "Open Slave")
  ContainerGadget(#WinMain_CntBot, 30, 240, 545, 65)
  SetGadgetColor(#WinMain_CntBot, #PB_Gadget_BackColor,RGB(255,0,0))
  CloseGadgetList()
  FrameGadget(#FrameBot, 15, 165, 545, 45, "")
EndProcedure

; ***************************************************************************************

Procedure Resize_WinMain()
  Protected FormWindowWidth, FormWindowHeight
  FormWindowWidth = WindowWidth(#WinMain)
  FormWindowHeight = WindowHeight(#WinMain)
  ResizeGadget(#WinMain_BtnOk, FormWindowWidth - 170, FormWindowHeight - 55, 145, 35)
  ResizeGadget(#WinMain_BtnCancel, 10, FormWindowHeight - 55, 145, 35)
  ResizeGadget(#WinMain_BtnOpenSlave, FormWindowWidth - 325, FormWindowHeight - 55, 145, 35)
  ResizeGadget(#WinMain_CntBot, 30, FormWindowHeight - 160, FormWindowWidth - 55, 65)
  ResizeGadget(#WinMain_FrameBot, 15, FormWindowHeight - 235, FormWindowWidth - 55, 45)
EndProcedure

; ***************************************************************************************

Procedure Open_WinSlave(x = 0, y = 0, width = 600, height = 400)
  OpenWindow(#WinSlave, #PB_Ignore, #PB_Ignore, width, height, "", #PB_Window_SystemMenu, WindowID(#WinMain))
  ButtonGadget(#WinSlave_BtnCancel, 15, 345, 140, 40, "Cancel")
EndProcedure

; ***************************************************************************************

UndefineMacro ResizeGadget

; ***************************************************************************************
mfG.
hjf

Re: EventDesigner (All OS)

Verfasst: 11.10.2016 22:36
von mk-soft
Habe den Fehler (Bug) gefunden. Es ist noch als Frame3DGadget im filter eingetragen.
Update folgt...

Man kann aber unter Preferences/UserGadget das "FrameGadget" es erst mal eintragen. Danach ein Restart vom EventDesigner durchführen.

Danke für testen :wink:

Re: EventDesigner (All OS)

Verfasst: 12.10.2016 09:15
von hjf
Hallo mk-Soft,

das Eintragen hat erstmal geholfen. Schön wäre eine "EnableExplicit"
in den generierten Files.

mfG.
hjf

Re: EventDesigner (All OS)

Verfasst: 15.10.2016 19:09
von mk-soft
Update v1.03
- Bugfix FrameGadget

Etwas aufgeräumt und EnableExplizit im Main hinzugefügt :wink: