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 »

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: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh »

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 »

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: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh »

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 »

Danke für die Info.

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

mfg.

mkersch
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Anfängerfrage Formdesigner

Beitrag von AUGE_OHR »

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: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh »

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: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Anfängerfrage Formdesigner

Beitrag von Manfred »

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!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Anfängerfrage Formdesigner

Beitrag von brandelh »

Interessant =D>
Gruß
Hubert
Antworten