Name von Instanzvariablen zur Laufzeit abfragen ?

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Name von Instanzvariablen zur Laufzeit abfragen ?

Beitrag von brandelh »

Ich habe ein eigenes Hilfesystem (ähnlich wie eine Statusbar feldbezogen direkt im Programm) und verzweige bisher etwas umständlich:

Code: Alles auswählen

method MyClass:ZeigHilfe(oXbp)
   local cSuchBeg
   do case 
        case oXbp = ::Name
                cSuchBeg = "FensterName"
        case oXbp = ::Telefon
                cSuchBeg = "FensterTelefon"
...
wenn ich nun direkt den Namen meiner aktuellen Instanzvariable auslesen könnte ...

Code: Alles auswählen

cSuchBeg := "Fenster"+oXbp:IVarName

könne ich mir jede Menge Arbeit sparen, leider finde ich aber keine Möglichkeit, Var2Char() gibt auch nur den Klassennamen zurück.

Hat jemand eine Idee ?
Gruß
Hubert
rassekst
UDF-Programmierer
UDF-Programmierer
Beiträge: 97
Registriert: Mi, 01. Feb 2006 23:49
Wohnort: Glauchau
Kontaktdaten:

Beitrag von rassekst »

Hallo Hubert,

Du könntest den Namen in der cargo Variablen mitführen.

Code: Alles auswählen

cSuchBeg := "Fenster"+oXbp:cargo

Hast Du für ein Hilfesystem schon mal die Klasse

Code: Alles auswählen

oXbpHelp := XbpHelp():New( , PRG_NAME+'.chm' )
oXbpHelp:Create()

oXbp := XbpPushButton():new( oGrp,, {oGrp:currentSize()[1]-60,190}, {50,24} )
oXbp:caption      := "Neu"
oXbp:helpLink     := MagicHelpLabel():New('neuen Aktioneintrag anlegen')
oXbp:create()

von XBase++ angesehen.

Gruss Steffen
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo,

richtige Hilfedateien habe ich nur einmal erstellt, aber genauso wie die unter Clipper erstellten Hilfebildschirme liest die kein Anwender (ich entwickle nur Inhouse). Deshalb habe ich am unteren Bildrand ein MLE (2 bis 3 zeilig), welches von jedem Control beim oControl:SetInputFocus() über eine Funktion mit dem jeweiligen Hilfetext geladen wird. Das kann man dann kaum übersehen 8) zumindest nicht mehr behaupten, das gar nicht gewußt zu haben :D - das mit dem Cargo könnte ich versuchen, den habe ich noch frei.
Gruß
Hubert
Greenhorn
Rookie
Rookie
Beiträge: 5
Registriert: Di, 01. Dez 2009 9:08

Re: Name von Instanzvariablen zur Laufzeit abfragen ?

Beitrag von Greenhorn »

Hallo Hubert,
bin zwar extrem spät dran mit einer Antwort, hatte aber zufällig heute das gleiche Problem.

Gelöst habe ich das mit Hilfe der Methode :classDescribe().
Die liefert u.a. eine Liste aller Variablen eines Objekts.

Viele Grüße
Peter
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Name von Instanzvariablen zur Laufzeit abfragen ?

Beitrag von brandelh »

Hi,

in meiner Funktion kommt nur das Control selbst an und :ClassDescribe() gibt in seinem Array die Klasse,
den Klassenbaum und alle möglichen Werte aus, nur nicht den Namen im Quellcode (woher soll es den auch wissen ... ;-) )

Ich hatte oben aber "den Namen meiner Instanzvariablen ..." geschrieben, was falsch ist.
Ich meinte eigentlich den Namen des Objekts im Quellcode, also der Instanzvariablen des Fensters,
das dieses Objekt verwaltet ... :wink:
Gruß
Hubert
Antworten