class from .....
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
class from .....
Hallo,
wenn ich das hier stehen habe:
class drucker from datenbank, xbpPrinter
....
endclass
wie muß ich eigentlich weiter vorgehen, um an die Methoden von xbpPrinter.
z.B.
oDrucker := drucker():new()
test := oDrucker:cDevname
zu kommen?
Ich denke ich habe die methoden und Membervar durch das from schon erreichbar gemacht? Stattdessen bekomme ich ein NIL zurück.
wenn ich das hier stehen habe:
class drucker from datenbank, xbpPrinter
....
endclass
wie muß ich eigentlich weiter vorgehen, um an die Methoden von xbpPrinter.
z.B.
oDrucker := drucker():new()
test := oDrucker:cDevname
zu kommen?
Ich denke ich habe die methoden und Membervar durch das from schon erreichbar gemacht? Stattdessen bekomme ich ein NIL zurück.
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!!
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!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16511
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
hast Du es mal mit test := oDrucker:xbpPrinter:cDevname versucht?
Viele Grüße,
Martin
hast Du es mal mit test := oDrucker:xbpPrinter:cDevname versucht?
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo,
bei abgeleiteten Klassen kann man auf eindeutige Ivars und Methoden direkt zugreifen:
wenn aber beide Klassen einen gleichen Namen (iVar oder Methode) haben, oder aber in der aktuellen ein gleicher Namen erneut belegt wird, muß man die SUPER Methode direkt ansprechen...
bei abgeleiteten Klassen kann man auf eindeutige Ivars und Methoden direkt zugreifen:
Code: Alles auswählen
CLASS Eins
VAR EinsName
...
CLASS Zwei
VAR ZweiName
...
CLASS Neu FROM Eins,Zwei
...
::EinsName := "EinsName"
::ZweiName := "ZweiName"
...
oNeu := Neu():New()...
? oNeu:EinsName -> das geht
? oNeu:ZweiName -> das geht
Code: Alles auswählen
CLASS Eins
VAR Name
...
::Name := "EinsName"
...
CLASS Zwei
VAR Name
...
::Name := "ZweiName"
...
CLASS Neu FROM Eins,Zwei
...
oNeu := Neu():New()...
? oNeu:Name -> hier steht immer EinsName
? oNeu:Zwei:Name -> das sollte ZweiName stehen.
Gruß
Hubert
Hubert
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Bei deinem Beispiel fällt mir noch auf, dass du cDevName schreibst,oDrucker := drucker():new()
test := oDrucker:cDevname
laut Doku muss es aber einfach devName lauten...
Code: Alles auswählen
XbpPrinter():devName
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
@martin,
das klappt so nicht.
@hubert,
stimmt, es ist devname. War aber ein schreibfehler. Der richtige Name klappt auch nicht.
hier mal mein Versuch:
das klappt so nicht.
@hubert,
stimmt, es ist devname. War aber ein schreibfehler. Der richtige Name klappt auch nicht.
hier mal mein Versuch:
Code: Alles auswählen
CLASS drucker FROM datenbank, XbpPrinter
// Speichervariablen
EXPORTED:
// Feldvariablen in DB
VAR funktion,;
papier,; // Wenn Drucker Einzelblatt verarbeitet
dez_1,;
dez_2,;
dez_3,;
dez_4,;
dez_5,;
dez_6,;
dez_7,;
dez_8,;
dez_9,;
dez_10,;
dez_11,;
dez_12,;
dez_13
METHOD erzeugestruktur
METHOD druck_fehler
METHOD felder
METHOD fett_ein
METHOD fett_aus
METHOD getdrucker
METHOD schmal_druck
METHOD normal_druck
METHOD init
METHOD maske
METHOD pruef
METHOD druckvkfuss
METHOD druckvlfuss
ENDCLASS
********************************************************************************
METHOD drucker:druck_fehler()
MEMVAR cPort
cPort := self:XbpPrinter:devName
SET DEVICE TO PRINTER
SET PRINTER TO OBJECT self
RETURN(SELF)
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!!
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!!
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Manfred,
Hast du denn in der INIT auch einen XbpPrinter() erzeugt und einen physischen zugeordnet ?
Und die Zeile > SET PRINTER TO OBJECT self < gibt es zumindest in der 1.82 so nicht ... und auch in 1.90 kann set printer to nur ein 'LPTx' oder einen Dateinamen enthalten...
> cPort := self:XbpPrinter:devName
cPort würde hier nicht LPTx sondern höchstens den Namen des Druckerobjects (siehe Drucker in Systemsteuerung) enthalten.
das sieht mir aber stark nach drucken nach Clippermanier aus.cPort := self:XbpPrinter:devName
SET DEVICE TO PRINTER
SET PRINTER TO OBJECT self
RETURN(SELF)
Hast du denn in der INIT auch einen XbpPrinter() erzeugt und einen physischen zugeordnet ?
Und die Zeile > SET PRINTER TO OBJECT self < gibt es zumindest in der 1.82 so nicht ... und auch in 1.90 kann set printer to nur ein 'LPTx' oder einen Dateinamen enthalten...
> cPort := self:XbpPrinter:devName
cPort würde hier nicht LPTx sondern höchstens den Namen des Druckerobjects (siehe Drucker in Systemsteuerung) enthalten.
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
ja, ist ein Programm was umgestrickt werden muß, aber langsam.Hallo Manfred,
das sieht mir aber stark nach drucken nach Clippermanier aus.
nein.Hast du denn in der INIT auch einen XbpPrinter() erzeugt und einen physischen zugeordnet ?
Du hast Recht, aber ab 1.90 geht das. Ob es so mit self klappt habe ich noch nicht probiert. Aber sollte eigentlich...Und die Zeile > SET PRINTER TO OBJECT self < gibt es zumindest in der 1.82 so nicht ... und auch in 1.90 kann set printer to nur ein 'LPTx' oder einen Dateinamen enthalten...
Ich muß mit einem alten Programm über das Netzwerk drucken...> cPort := self:XbpPrinter:devName
cPort würde hier nicht LPTx sondern höchstens den Namen des Druckerobjects (siehe Drucker in Systemsteuerung) enthalten.
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!!
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!!
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
> ich muß mit einem alten Programm über das Netzwerk drucken ...
Entweder du programmierst die Druckausgabe komplett auf XbpPrinter(), dann muss dieser auch erzeugt werden (sieh dir hierzu auch meine HBPrinterX - Spezialanwendung an),
oder
du druckst wie bisher über das Netz, in altem Clipper style:
Windows ordnet Drucker zu
NET USE LPT3 \\SERVER\DRUCKER ...
in der Anwendung
set printer to lpt3
oder aber (wenn es jetzt geht - weiß ich nicht) den direkten UNC Namen (ohne NET USE)
set printer to \\SERVER\DRUCKER ...
set printer on - wenn du über ? drucken willst oder
set device to printer - wenn es über @ say geschehen soll...
? cSteuervar+cTextjeZeile... ist dabei meiner Meinung nach die einzig machbare Variante, da @ say beim Drucken auch die Steuerzeichen mitzählt...
Alles andere dazwischen, ist nicht nur umständlich, sonder auch kaum zu beherschen !
nun zu deinem Beispiel, ohne ein XbpPrinter():new():create() ... irgendwo in deiner Klasse, wirst du NIE ein XbpPrinter-Object haben, welches du abfragen kannst.
Entweder du programmierst die Druckausgabe komplett auf XbpPrinter(), dann muss dieser auch erzeugt werden (sieh dir hierzu auch meine HBPrinterX - Spezialanwendung an),
oder
du druckst wie bisher über das Netz, in altem Clipper style:
Windows ordnet Drucker zu
NET USE LPT3 \\SERVER\DRUCKER ...
in der Anwendung
set printer to lpt3
oder aber (wenn es jetzt geht - weiß ich nicht) den direkten UNC Namen (ohne NET USE)
set printer to \\SERVER\DRUCKER ...
set printer on - wenn du über ? drucken willst oder
set device to printer - wenn es über @ say geschehen soll...
? cSteuervar+cTextjeZeile... ist dabei meiner Meinung nach die einzig machbare Variante, da @ say beim Drucken auch die Steuerzeichen mitzählt...
Alles andere dazwischen, ist nicht nur umständlich, sonder auch kaum zu beherschen !
nun zu deinem Beispiel, ohne ein XbpPrinter():new():create() ... irgendwo in deiner Klasse, wirst du NIE ein XbpPrinter-Object haben, welches du abfragen kannst.
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Moin Hubert,
ist mir auch jetzt alles bewußt geworden. Irgendwie habe ich gestern einen Denkfehler produziert. Manchmal hilft es einfach mal darüber zu schlafen.
Danke
ist mir auch jetzt alles bewußt geworden. Irgendwie habe ich gestern einen Denkfehler produziert. Manchmal hilft es einfach mal darüber zu schlafen.
Danke
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!!
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!!
- Manfred
- Foren-Administrator
- Beiträge: 21189
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Wie ich gerade festgestellt habe, habe ich einen viel zu großen Aufwand getrieben. Das geht alles recht einfach über die Bühne.
oPrinter := xbpPrinter():new():create()
SEt PRINTER TO OBJCET oPrinter
SEt DEVICE TO PRINTER
blabla
SET PRINTER TO
SET DEVICE TO SCREEN
Und schon wird der aktuelle Drucker zur Ausgabe genommen.
Das genügt im Moment für die Umstellung.
Wichtig war/ist nur, dass ich einen freigegebenen Drucker eines anderen PC benutzen kann damit.
oPrinter := xbpPrinter():new():create()
SEt PRINTER TO OBJCET oPrinter
SEt DEVICE TO PRINTER
blabla
SET PRINTER TO
SET DEVICE TO SCREEN
Und schon wird der aktuelle Drucker zur Ausgabe genommen.
Das genügt im Moment für die Umstellung.
Wichtig war/ist nur, dass ich einen freigegebenen Drucker eines anderen PC benutzen kann damit.
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!!
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!!