Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Anfängerfrage Formdesigner

Alles rund um Editoren, visuelle Entwicklungshilfen und Form-Designer

Moderator: Moderatoren

Antworten
mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Anfängerfrage Formdesigner

Beitrag von mkersch » Mo, 25. Jun 2012 11:40

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

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh » Mo, 25. Jun 2012 12:30

Hi,
  1. CLASS CODE verwenden,
  2. 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.
PS: ich verwende den XppFD nur um groß die nötigen Controls zu erhalten und arbeite danach nur noch mit dem Quellcode.
Insbesondere die Positionierung der Controls inkl. Größenfestlegung ist mir mit der Maus zu stressig und ohne Undo zu fehlerträchtig.
Gruß
Hubert

mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Re: Anfängerfrage Formdesigner

Beitrag von mkersch » Mo, 25. Jun 2012 13:21

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

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh » Mo, 25. Jun 2012 13:35

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 ;-)
Gruß
Hubert

mkersch
UDF-Programmierer
UDF-Programmierer
Beiträge: 89
Registriert: Fr, 12. Mai 2006 13:26
Wohnort: Wünricht

Re: Anfängerfrage Formdesigner

Beitrag von mkersch » Mo, 25. Jun 2012 13:55

Danke für die Info.

Und Entschuldigung für meine super Rechtschreibung (kompfortapler ==> komfortabel)

mfg.

mkersch

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 10522
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Anfängerfrage Formdesigner

Beitrag von AUGE_OHR » Mo, 25. Jun 2012 20:05

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 ;-)
ich weiss was du meinst aber man kann von jedem XbPart mit o:Currentpos() ja die Information bekommen.

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

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh » Di, 26. Jun 2012 8:54

AUGE_OHR hat geschrieben:
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 ;-)
ich weiss was du meinst aber man kann von jedem XbPart mit o:Currentpos() ja die Information bekommen.
Hallo Jimmy,
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.
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 ?
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).
Gruß
Hubert

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 16897
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel

Re: Anfängerfrage Formdesigner

Beitrag von Manfred » Di, 26. Jun 2012 9:10

Gruß Manfred
Mitglied der XUG Leverkusen
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 13753
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh » Di, 26. Jun 2012 9:28

Interessant =D>
Gruß
Hubert

Antworten