EventDesigner (All OS)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
mk-soft
Beiträge: 3691
Registriert: 24.11.2004 13:12
Wohnort: Germany

EventDesigner (All OS)

Beitrag 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...
Zuletzt geändert von mk-soft am 22.06.2019 15:06, insgesamt 5-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
matbal
Beiträge: 246
Registriert: 30.03.2011 20:53

Re: EventDesigner (All OS)

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3691
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: EventDesigner (All OS)

Beitrag 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
Zuletzt geändert von mk-soft am 15.03.2016 14:56, insgesamt 1-mal geändert.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
matbal
Beiträge: 246
Registriert: 30.03.2011 20:53

Re: EventDesigner (All OS)

Beitrag 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.
Benutzeravatar
mk-soft
Beiträge: 3691
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: EventDesigner (All OS)

Beitrag 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
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
mk-soft
Beiträge: 3691
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: EventDesigner (All OS)

Beitrag von mk-soft »

Neue Version für alle OS Online...

Update v1.02
- Bugfixes
- Added Drop Common files

:wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
hjf
Beiträge: 52
Registriert: 12.02.2014 20:02

Re: EventDesigner (All OS)

Beitrag 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
Benutzeravatar
mk-soft
Beiträge: 3691
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: EventDesigner (All OS)

Beitrag 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:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
hjf
Beiträge: 52
Registriert: 12.02.2014 20:02

Re: EventDesigner (All OS)

Beitrag von hjf »

Hallo mk-Soft,

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

mfG.
hjf
Benutzeravatar
mk-soft
Beiträge: 3691
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: EventDesigner (All OS)

Beitrag von mk-soft »

Update v1.03
- Bugfix FrameGadget

Etwas aufgeräumt und EnableExplizit im Main hinzugefügt :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten