Seite 1 von 1

Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Do, 15. Okt 2015 11:56
von Wonderer
Hallo,

beim Debuggen ist mir aufgefallen, dass wenn ein Objekt in einer Variable gespeichert ist der Typ als Name angezeigt wird also z.b. XbpSle, XbePushButton usw..

Kann ich das mit einer Funktion oder Eigenschaft auch zur Laufzeit abfragen und verwenden?

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Do, 15. Okt 2015 12:10
von Manfred
Hi,

paßt evtl. :isDerivedFrom() ??

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Do, 15. Okt 2015 12:35
von Wonderer
hmm.. ich glaub nicht - da müsste ja dann für das XbpSle als Ergebnis XbpWindow als Ergebnis zurückgegeben werden?

woher hast du diesen Funktionsnamen - ich bin jetzt bis XbpPartHandler zurück gegangen im Referenz-Handbuch und da war diese nicht mit dabei.
huch.. 'DataRef' steht ja auch als Superklasse in der Referenz - Mehrfachvererbung? :?
Scheint ich muss mir erstmal anschauen wie das mit der Vererbung in XBase funktioniert.
Mehrfachvererbung hatte ich glaube noch nicht verfügbar in einer Sprache - habe bisher hauptsächlich mit PHP, C# und ein wenig Java programmiert.

oh, Seite 2 im Klassen-Referenz-Handbuch: Abstract():classDescribe( CLASS_DESCR_CLASSNAME ) - das klingt gut - werd ich gleich mal versuchen :)

EDIT: Abstract():className() gibt es auch :blob8:

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Do, 15. Okt 2015 12:37
von georg
Versuche es mal mit :className()

Weitere Informationen dazu findest Du in der Dokumentation unter der Klasse Abstract(). :classDescribe() beschreibt die komplette Klasse, also Methoden, iVars etc.

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Do, 15. Okt 2015 12:41
von Wonderer
Danke, das zeigt man sollte auch in einem Referenz-Handbuch mal von ganz vorn ein wenig durchblättern :D

Aber ich schieb es mal auf die fehlende Erwähnung der Superklasse Abstract im Abschnitt XbpPartHandler
es sah so aus als wäre diese in der Hierarchie ganz am Anfang - keine Superklasse(n) angegeben...

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Fr, 16. Okt 2015 3:46
von AUGE_OHR
Wonderer hat geschrieben:Aber ich schieb es mal auf die fehlende Erwähnung der Superklasse Abstract im Abschnitt XbpPartHandler es sah so aus als wäre diese in der Hierarchie ganz am Anfang - keine Superklasse(n) angegeben...
Die Class Abstract und XbpPartHandler ist für einen normalen Xbase++ User nicht interessant ... es sind die fertigen Controls auch XbPart genannt.

wenn du anfängst GUI Code zu erstellen dann kann dir dabei der Formdesigner XPPFD.EXE helfen.
dort hast du auch die XbParts zur Verfügung und in der Property Box kannst du die wichtigsten iVAR Einstellungen schon vornehmen.
zu Schluss solltest du dir Class Code generieren lassen ... der Einstieg in die Xbase++ OOP Welt.

Tip : zwischendurch im Formdesigner immer wieder "speichern unter" damit nicht alles weg ist wenn XppFD abstürzt.

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Di, 20. Okt 2015 7:25
von Wonderer
Danke, ich habe nach einer halben Stunde mit dem Form-Designer dieses 'Tool' verworfen und schreibe jetzt alles per Hand.
Das hat auch den Vorteil, dass ich es verstehe und mir merke.

Die Klassen Abstract und XbpPartHandler sind für mich schon interessant und wichtig.
Da sind viele vererbte Eigenschaften usw. die man braucht für das Bauen einer GUI.

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Di, 20. Okt 2015 8:20
von Jan
Ich muß gestehen, das ich den Formdesigner niemals benutze. Eine Zeitlang nur, um von ActiveX-Anwenungen die CLSID zu erfahren. Ansonsten schreibe ich auch alles von Hand. Viel flexibler, schneller, individueller. Aber da denken hier natürlich andere Entwickler anders drüber. Jeder hat da halt seine eigenen Vorlieben.

Jan

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Di, 20. Okt 2015 8:55
von Wonderer
Jan hat geschrieben:Ansonsten schreibe ich auch alles von Hand. Viel flexibler, schneller, individueller.
Naja, anfangs dauerte es bei mir schon länger denke ich.
Aber wenn man so die Zahlwerte sieht dann bekommt man eine Vorstellung wie das proportional aufgebaut ist und das kann später mal hilfreich sein.

Was noch sehr hilfreich sein kann ist meiner Meinung nach, dass man durch das Abtippen ganz allgemein schneller wird beim Schreiben von Code.
Zehn-Finger-Schreiben kann ich das zwar nicht nennen was ich mache, aber ich denke es ist schon ziemlich effektiv mittlerweile - nach den vielen
Zeilen Code die ich in meinem Leben getippt habe.. :)

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Di, 20. Okt 2015 9:27
von brandelh
Ich nehme den Formdesigner um mir Controls mit verschiedenen Eigenschaften grob anzuordnen, erzeuge Classcode
und ändere die beiden dateien so wie ich sie brauche, z.B. mit local variablen für nPos und nSize ...
die dynamisch (zeilenweise) erhöht werden oder fixe Werte (Spalten) verwenden.
So kann ich zwischen 2 Controls eine neue Zeile mit neuen einfügen und es passt automatisch.
Das Ändern eine Spaltenvariable ändert alle der gleichen Spalte etc.

Mit der neueren (1.90.?) Instanzvariable :clientSize kann man in INIT berechnen was man an Platz braucht.
Vorher habe ich in Create die Breiten von anderen abgefragt und gesetzt, das war umständlicher.

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Di, 20. Okt 2015 9:47
von AUGE_OHR
Wonderer hat geschrieben:Danke, ich habe nach einer halben Stunde mit dem Form-Designer dieses 'Tool' verworfen und schreibe jetzt alles per Hand.
Das hat auch den Vorteil, dass ich es verstehe und mir merke.
kennst du schon die Syntax, iVar und Presentation Parameter der einzelnen XbParts ?
XppFD.EXE kann dir ja "richtigen" Class Code generieren den du per Copy/Paste weiter verarbeiten kannst.
Wonderer hat geschrieben:Die Klassen Abstract und XbpPartHandler sind für mich schon interessant und wichtig.
Da sind viele vererbte Eigenschaften usw. die man braucht für das Bauen einer GUI.
wenn du zu "XbpPartHandler" was sucht siehe dir c:\ALASKA\XPPW32\Source\samples\solution\Resize\GroupMgr.prg an.
zu "Abstract" habe ich noch nirgends wo was gefunden ...

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Di, 20. Okt 2015 12:04
von Wonderer
brandelh hat geschrieben:erzeuge Classcode
und ändere die beiden dateien so wie ich sie brauche, z.B. mit local variablen für nPos und nSize ...
die dynamisch (zeilenweise) erhöht werden oder fixe Werte (Spalten) verwenden.
Ach na klar, da hätte ich auch gleich dran denken können. Werd ich dann eh brauchen wenn ich das Formular an verschiedene FontGrößen anpasse.
Danke, im Moment war ich händisch dabei das erste Layout zu 'basteln'.
Mit den Variablen das wird dann der nächste Schritt, mit nun etwas Mehrarbeit da nicht gleich zuende gedacht...
Mit der neueren (1.90.?) Instanzvariable :clientSize kann man in INIT berechnen was man an Platz braucht.
Vorher habe ich in Create die Breiten von anderen abgefragt und gesetzt, das war umständlicher.
Die Anwendung hier hat XBPDLG_DLGBORDER also nicht veränderbar vom User.
Ich werde dann lediglich auf das Programm-Setting der Schrift reagieren für die Inhalte.

Re: Objekt-Typ aus Debugger verfügbar im Code?

Verfasst: Di, 20. Okt 2015 12:18
von Wonderer
AUGE_OHR hat geschrieben:kennst du schon die Syntax, iVar und Presentation Parameter der einzelnen XbParts ?
iVar weiß ich noch nichts mit anzufangen..
PP nutze ich schon zum Initialisieren - siehe mein anderer Thread im GUI-Forum..
wenn du zu "XbpPartHandler" was sucht siehe dir c:\ALASKA\XPPW32\Source\samples\solution\Resize\GroupMgr.prg an.
zu "Abstract" habe ich noch nirgends wo was gefunden ...
Danke, beim kurzen Durchblättern der Referenz zu Abstract sind mir :eval und :notify aufgefallen die interessant und sicher nützlich sind..