Anfängerfrage Formdesigner
Moderator: Moderatoren
Anfängerfrage Formdesigner
Hallo Forumsmitglieder,
um meine Masken zu erstellen verwende ich den Formdesigner.
Wenn ich mir eine Funktion erzeugen lasse kann ich diese wunderbar nachbearbeiten und den entsprechenden Objekten , die ja immer den Namen oXbp erhalten, einen
neuen Namen geben z.b. oButtonStart usw.
Muss ich aber das Menue erweitern bzw. verändern erhalte ich wieder meine Funktion mit den Standardnamen oXbp.
Was muss ich machen das ich nicht wieder alles mühsam nachbearbeiten muss ?
Bzw. gibt es einen Formdesigner mit dem ich kompfortabel diese Menues für Xbase generieren kann ?
Vielen Dank
mkersch
um meine Masken zu erstellen verwende ich den Formdesigner.
Wenn ich mir eine Funktion erzeugen lasse kann ich diese wunderbar nachbearbeiten und den entsprechenden Objekten , die ja immer den Namen oXbp erhalten, einen
neuen Namen geben z.b. oButtonStart usw.
Muss ich aber das Menue erweitern bzw. verändern erhalte ich wieder meine Funktion mit den Standardnamen oXbp.
Was muss ich machen das ich nicht wieder alles mühsam nachbearbeiten muss ?
Bzw. gibt es einen Formdesigner mit dem ich kompfortabel diese Menues für Xbase generieren kann ?
Vielen Dank
mkersch
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Anfängerfrage Formdesigner
Hi,
Insbesondere die Positionierung der Controls inkl. Größenfestlegung ist mir mit der Maus zu stressig und ohne Undo zu fehlerträchtig.
- CLASS CODE verwenden,
- iVAR Namen sinnvoll ausfüllen, entweder direkt in der Eigenschaftsliste oder
im Menü "Edit- Symbols for iVar" ... der erste Eintrag ist hier übrigens der Klassenname des Dialogfensters.
Insbesondere die Positionierung der Controls inkl. Größenfestlegung ist mir mit der Maus zu stressig und ohne Undo zu fehlerträchtig.
Gruß
Hubert
Hubert
Re: Anfängerfrage Formdesigner
Vielen Dank für die schnelle Info.
Mit CLASS-Code wird für die Namen der Name aus iVarName übernommen.
Wie ist es dann mit :title oder mit :activate diese Punkte müssen dann nach wie vor manuell nachbearbeitet werden ?
Muss ich bei einer "Neuerzeugung" diese Punkte wieder manuell nachziehen ?
//**********************************
Vorgehen in der Vergangenheit:
Habe meine erste Maske mit dem Formdesigner erstellt und die Form dann abgespeichert. z.B. Form_1.xff und Form_1.prg
Das Programm habe ich dann kopiert (Form_1.prg) nach mein_prg.prg.
Mein_prg.prg habe ich dann entsprechen nachbearbeitet (Objektname, title, aktivate usw).
Falls ich nochmal eine Änderung benötigt habe, änderte ich meine Form Form_1.xff. Das geänderte Programm speicherte ich wieder in Form_1.prg ab.
Die Ergänzungen bzw. Änderungen (Positionen usw) kopierte bzw. fügte ich dann in mein aktuelles Programm Mein_prg.prg ein.
// **********************************
Diese Frage stellte ich deshalb, weil ich der Meinung war, das in der Zwischenzeit der Formdesigner kompfortapler wäre. Wenn dies nicht der Fall ist, werde ich
meine altbewährte Methode auch in Zukunft verwenden.
Danke.
mfg
mkersch
Mit CLASS-Code wird für die Namen der Name aus iVarName übernommen.
Wie ist es dann mit :title oder mit :activate diese Punkte müssen dann nach wie vor manuell nachbearbeitet werden ?
Muss ich bei einer "Neuerzeugung" diese Punkte wieder manuell nachziehen ?
//**********************************
Vorgehen in der Vergangenheit:
Habe meine erste Maske mit dem Formdesigner erstellt und die Form dann abgespeichert. z.B. Form_1.xff und Form_1.prg
Das Programm habe ich dann kopiert (Form_1.prg) nach mein_prg.prg.
Mein_prg.prg habe ich dann entsprechen nachbearbeitet (Objektname, title, aktivate usw).
Falls ich nochmal eine Änderung benötigt habe, änderte ich meine Form Form_1.xff. Das geänderte Programm speicherte ich wieder in Form_1.prg ab.
Die Ergänzungen bzw. Änderungen (Positionen usw) kopierte bzw. fügte ich dann in mein aktuelles Programm Mein_prg.prg ein.
// **********************************
Diese Frage stellte ich deshalb, weil ich der Meinung war, das in der Zwischenzeit der Formdesigner kompfortapler wäre. Wenn dies nicht der Fall ist, werde ich
meine altbewährte Methode auch in Zukunft verwenden.
Danke.
mfg
mkersch
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Anfängerfrage Formdesigner
Hi,
der CLASS Code erstellt zwei Dateien:
angenommen du wählst den Namen MeinDialog.PRG, dann wird noch ein _MeinDialog.PRG erstellt.
Vorgesehen ist nun, dass du MeinDialog.PRG nach deinen Wünschen änderst, und _MeinDialog.PRG in Ruhe läßt.
Falls nun der XppFD nochmals aufgerufen wird und nochmals MeinDialog.PRG erstellt wird, ändert der XppFD ausschließlich _MeinDialog.PRG und läßt deine Änderungen in MeinDialog.PRG in Ruhe.
Allerdings hat das einen Schöheitsfehler (zumindest aus meiner Sicht), die Positionsangaben sind nur als fixe Parameter in den NEW() Blöcken hinterlegt.
Um in der eigenen INIT die Controls dynamisch zu positonieren, müsste man diese aber als iVar haben ...
Man kann sie aktuell nur in CREATE oder RESIZE nachträglich verschieben ... ich finde das unschön
der CLASS Code erstellt zwei Dateien:
angenommen du wählst den Namen MeinDialog.PRG, dann wird noch ein _MeinDialog.PRG erstellt.
Vorgesehen ist nun, dass du MeinDialog.PRG nach deinen Wünschen änderst, und _MeinDialog.PRG in Ruhe läßt.
Falls nun der XppFD nochmals aufgerufen wird und nochmals MeinDialog.PRG erstellt wird, ändert der XppFD ausschließlich _MeinDialog.PRG und läßt deine Änderungen in MeinDialog.PRG in Ruhe.
Allerdings hat das einen Schöheitsfehler (zumindest aus meiner Sicht), die Positionsangaben sind nur als fixe Parameter in den NEW() Blöcken hinterlegt.
Um in der eigenen INIT die Controls dynamisch zu positonieren, müsste man diese aber als iVar haben ...
Man kann sie aktuell nur in CREATE oder RESIZE nachträglich verschieben ... ich finde das unschön
Gruß
Hubert
Hubert
Re: Anfängerfrage Formdesigner
Danke für die Info.
Und Entschuldigung für meine super Rechtschreibung (kompfortapler ==> komfortabel)
mfg.
mkersch
Und Entschuldigung für meine super Rechtschreibung (kompfortapler ==> komfortabel)
mfg.
mkersch
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Anfängerfrage Formdesigner
ich weiss was du meinst aber man kann von jedem XbPart mit o:Currentpos() ja die Information bekommen.brandelh hat geschrieben:Um in der eigenen INIT die Controls dynamisch zu positonieren, müsste man diese aber als iVar haben ...
Man kann sie aktuell nur in CREATE oder RESIZE nachträglich verschieben ... ich finde das unschön
Friedhelm erzählte doch auf der Devcon das in einer der Xbase++ DLL schon eine "resize" Routine stecken soll ... ist das die "GroupManager" Class ?
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Anfängerfrage Formdesigner
Hallo Jimmy,AUGE_OHR hat geschrieben:ich weiss was du meinst aber man kann von jedem XbPart mit o:Currentpos() ja die Information bekommen.brandelh hat geschrieben:Um in der eigenen INIT die Controls dynamisch zu positonieren, müsste man diese aber als iVar haben ...
Man kann sie aktuell nur in CREATE oder RESIZE nachträglich verschieben ... ich finde das unschön
da irrst du dich, in :INIT() kann man keine Methode wie :CurrentPos() oder :CurrentSize() ausführen, nach der Definition des Klassenmodells, sollte man aber genau in der eigenen INIT() nach dem SUPER Aufruf die Werte ändern können, bevor man die Resourcen angefordert hat (in create() ).
Was du vermutlich meinst ist, dass man ja auch genausogut in CREATE() oder RESIZE() mit beiden Funktionen hantieren kann, das stimmt und in RESIZE() ist das sogar sehr elegant, weil man sich gleich um die Größenänderung mitkümmern kann (als grundsätzlich erst hier die Größen berechnet).
Dennoch sind Methoden-Aufrufe um Welten langsamer als direkte Variablen Zugriffe und so wäre es nur Folgerichtig, wenn diese Werte (aPos, aSize) als iVars vorliegen würden.
Da bei einem Resize() nicht alle Controls gleich behandelt werden können, muss man entweder das gewünschte Verhalten (SLE wird rechts an den Rand verlängert, MLE nach rechts und unten, Buttons unten bleiben unten, Buttons rechts, bleiben rechts etc.) in einer eigenen Resize() Methode programmieren, oder in einer eigens dafür bestimmten Beschreibungsvariablen festgelegt werden (so macht es WinDev im GUI Editor).AUGE_OHR hat geschrieben:Friedhelm erzählte doch auf der Devcon das in einer der Xbase++ DLL schon eine "resize" Routine stecken soll ... ist das die "GroupManager" Class ?
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Re: Anfängerfrage Formdesigner
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!