Alaska Software Inc. - XbpApplication() ... und wie erweitern ?
Username: Password:
AuthorTopic: XbpApplication() ... und wie erweitern ?
Hubert BrandelXbpApplication() ... und wie erweitern ?
on Tue, 09 Dec 2014 09:39:37 +0100
Mit dem Applikationsobjekt soll man ja das ganze Programm verwalten ...
und ich habe Infos die ich bisher an das Main-Window gehängt habe: 
(iVars cUserID, cDrucker etc.)
--------------------------------------------------------------------
XbpApplication() - Klassenfunktion der XbpApplication-Klasse:

XbpApplikation ist eine spezielle Klasse für GUI- und Hybrid 
Modus-Anwendungen. Pro Anwendung existiert jeweils ein solches 
Anwendungsobjekt.
Von der Klasse XbpApplication werden normalerweise keine Instanzen erzeugt.
-------------------------------------------------------------------
Wenn ich aber davon keine Klasse ableiten kann, aus der ich dann mein 
eigenes Objekt erzeuge, wie kann ich dann das Anwendungsobjekt um 
Methoden und iVars erweitern ?

Ich meine schon mal so einen Funktion gesehen zu haben, kann aber nichts 
finden ...

Selbst wenn ich eine Ableitung davon mache, wird mir GetApplication() 
--> oApp aber immer das Original liefern oder ?
Hat jemand damit schon Erfahrungen gemacht ?

Gruß
Hubert
Thomas BraunRe: XbpApplication() ... und wie erweitern ?
on Wed, 10 Dec 2014 10:04:11 +0100
Hubert Brandel wrote:

> Von der Klasse XbpApplication werden normalerweise keine Instanzen erzeugt.
> -------------------------------------------------------------------
> Wenn ich aber davon keine Klasse ableiten kann

Falsch - du kannst eine eigene Klasse erzeugen, das nützt dir aber
nichts...

> aus der ich dann mein 
> eigenes Objekt erzeuge, wie kann ich dann das Anwendungsobjekt um 
> Methoden und iVars erweitern ?

...denn es wird von der Runtime ohnehin keine Instanz dieser Klasse
erzeugt.

> Selbst wenn ich eine Ableitung davon mache, wird mir GetApplication() 
> --> oApp aber immer das Original liefern oder ?

GetApplication gibt dir das Klassenobjekt zurück, keine Instanz der Klasse.

Am besten erzeugst du eine eigene Klasse, die du in einer eigenen INIT
prozedur entpsrechend initialisierst.

grüße
Thomas
Hubert BrandelRe: XbpApplication() ... und wie erweitern ?
on Wed, 10 Dec 2014 13:53:07 +0100
Die Möglichkeit eine bestehende Klasse abzuleiten und zu erweitern ist 
doch ein elementarer Bestandteil von Xbase++, das habe ich probiert:
-----------------------------
CLASS MyApp FROM XppApplication
    EXPORTED
    CLASS VAR Info
ENDCLASS
...
PROCEDURE Main
    ...
    GetApplication( MyApp() )  ist laut Doku nicht vorgesehen
     bis jetzt wurde noch kein Fehler erzeugt
    MyApp():info := "Test"  auch das geht.
    msgbox(MyApp():info,"1")  OK
    msgbox(GetApplication():info,"2")  OK, :info ist bekannt.
     soweit so gut ... aber
    oDlg := XbpDialog():new( AppDesktop(), , {636,703} , aSize, , .F.)
=> XppError-Meldung:
VALTYPE: O CLASS: MyApp
oError:description  : Member-Variable ist fr dieses Objekt unbekannt
oError:operation    : MainForm
Aufgerufen von XBPDIALOG:CREATE(508)
Aufgerufen von MAIN(48)
----------------------------------------------------

Also werden wie bisher die iVars der Anwendung ins Hauptfenster gesteckt 
und das kann man über GetApplication():mainForm abfragen, statt wie 
bisher mit der eigenen Funktion RootWindow() ...

Ich wollte nur sichergehen, dass ich nichts übersehen habe.
Thomas BraunRe: XbpApplication() ... und wie erweitern ?
on Thu, 11 Dec 2014 08:52:42 +0100
Hubert Brandel wrote:

> CLASS MyApp FROM XppApplication

[...]

> Ich wollte nur sichergehen, dass ich nichts übersehen habe.

Du hast was übersehen... bitte lese nochmal GANZ GENAU was oben hinter
FROM steht, es ist nur ein einziger Buchstabe falsch 

Ich habe 'ne Ewigkeit gebraucht den unterschied zu sehen, letztenendes hat
folgender Code (insbesondere die Ausgabe von Classdescribe) mich auf die
Spur gebracht:

   xOld := GetApplication( MyApp() )  ist laut Doku nicht vorgesehen
   ? xOld:Classname()
   ? xOld:ClassDescribe(CLASS_DESCR_ALL )

   xNew := GetApplication( )
   ? xNew:Classname()
   ? xNew:ClassDescribe(CLASS_DESCR_ALL )

grüße
Thomas
Hubert BrandelRe: XbpApplication() ... und wie erweitern ?
on Thu, 11 Dec 2014 10:43:26 +0100
Am 11.12.2014 08:52, schrieb Thomas Braun:
> Hubert Brandel wrote:
>
>> CLASS MyApp FROM XppApplication
>
> [...]
>
>> Ich wollte nur sichergehen, dass ich nichts übersehen habe.
>
> Du hast was übersehen... bitte lese nochmal GANZ GENAU was oben hinter
> FROM steht, es ist nur ein einziger Buchstabe falsch 

GENAU ... im Betreff steht was ich eigentlich wollte ...

XbpApplication()
  -

und so funktioniert es wie gewünscht, auch wenn das so nicht in der Doku 
steht. Danke für den Stupser ...
Thomas BraunRe: XbpApplication() ... und wie erweitern ?
on Thu, 11 Dec 2014 11:43:15 +0100
Hubert Brandel wrote:

> und so funktioniert es wie gewünscht, auch wenn das so nicht in der Doku 
> steht. Danke für den Stupser ...

Gern geschehen