Drucken mit HBPrinter - Was geht wie warum ???

Moderator: Moderatoren

Wer kennt, nutzt oder verabscheut HBPrinterX ?

Ich nutze HBPrinterX ausschließlich
6
14%
Ich nutze HBPrinterX gelegentlich bzw. zusätzlich
10
24%
HBPrinterX habe ich früher mal genutzt
1
2%
geprüft, aber für mich ungeeignet
1
2%
der Schrott gehört verboten
0
Keine Stimmen
In nutze grundsätzlich keine Fremdprodukte
0
Keine Stimmen
Noch nie gehört oder kein Interesse
2
5%
Ich nutze Reportgeneratoren oder ähnliches
11
26%
Ich nehme XbpPrinter() pur
11
26%
 
Insgesamt abgegebene Stimmen: 42

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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Hi,

ich denke dass die Verschachtelung meine interne Zählung durcheinander bringt, bitte teste mal so:

Code: Alles auswählen

nY += oMeinDrucker:LineFeed()
oMeinDrucker:PrintMemo(nLinkerRand, nY, left(cText, len(cText) - 3),,RANDRECHTS - nLinkerRand)
nY += oMeinDrucker:LineFeed()
oMeinDrucker:PrintText(nLinkerRand, nY, "blablabla")
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

da ist doch kein Unterschied! Die Zuweisung an nY erfolgt in beiden Fällen vor Aufruf Deiner Methode.
LineFeed gibt doch nur die Anzahl an Y-Pixel der aktuellen Schrift zurück, oder hab ich da was falsch verstanden? Kann nicht sein, da es einwandfrei funktioniert.
Die Print-Methoden sollten einfach die Anzahl an Y-Pixel zurückgeben oder ein interner Wert müsste abfragbar sein.
Gibts das?

Danke!
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Nachtrag: In Deinem Test.prg ist das Memo leider am Ende des Textes, oder Du gibts einfach nur feste Y-Werte vor, da hätte ich schon nachgesehen.
Wie machst Du das in Deinen Quältexten? :?:
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Hallo Werner,

da hast du mich doch glatt erwischt =D>

Ich zähle die "Zeilenzahl" nicht intern mit und kann diese somit auch nicht intern erhöhen. (Intern arbeite ich mit 1/10 mm, nicht mit Zeilen).
Auch ::LineFeed() kennt den aktuellen Zustand nicht.
Dass PrintMemo() die Anzahl der gedruckten Zeilen zurückgibt, das hat was, würde aber meinen meinem bisherigen Modell widersprechen.
:angry5: :angry4: :angry7: :angry1: :angry3: :angry2: :banghead: angry9: :color: :confused2: :coffee: :coffee: :coffee: :coffee: :coffee: :coffee:

Ich könnte eine Instanzvariable füllen, die die Anzahl der Zeilen enthält ... :? keine Code Änderungen ...
Wahrscheinlich hat aber eh niemand abgefragt ob die Methode .t. zurückgeliefert hat ... ich muss darüber nachdenken, wie eilig ist es dir ? ;-)
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,
ohne Deinen Quelltext näher angeschaut zu haben, intern wird aber z. B. die X-Koordinate schon berücksichtigt, ein printText(,nY) macht an der letzten X-Pos weiter.
PrintMemo sollte einfach so wie lineFeed() die Anzahl an Y-Pixel zurückgeben.
Ist nicht so eilig, behelfe mir aktuell mit einem geschätzten Zeilenvorschub. Ist halt ungenau.

Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Hi,

die Gra-Funktionen wissen wo die letzte Zeichenoperation war, dieses nutze ich intern aus ;-)

Richtige Zeilen habe ich ja nur bei der SAY Methode ....
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

habs auf dem kurzen Dienstweg gelöst und die printmemo-Methode geändert:

Code: Alles auswählen

//return lSuccess
return nPosY
Läuft einwandfrei, hab gesehen, Du benutzt ja in der printmemo einfach Deine printtext-Methode, bis alles gedruckt ist. Da zählst Du ja sauber die Y-Pixel Zeile für Zeile hoch. :happy7:
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

versuche seit geraumer Zeit, mittels PrintBox() eine farbige Box zu drucken, mir gelingt aber der Farbwechsel nicht.
Kannst Du mir bitte ein kurzes (2zeiliges?) Code-Beispiel zeigen, wo die Farbe für die Box gesetzt wird? Dazu dient wohl Deine Methode SetAttrLine()?

Danke!
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Hi,

grundsätzlich sind alle Druckmethoden intern Gra...Funktionen.
Deren Aussehen (Attribute) kann man über die Methoden :SetAttr...() ändern, für Flächen (also Box, Arc etc.) ist das ::SetAttrArea().

SetAttrArea( aAttribNeu ) ruft intern GraSetAttrArea() auf. Daher verweise ich bei allen diesen Funktionen direkt auf die Hilfe von Xbase++.
Allerdings mache ich es mir mit den Parametern einfacher, ich übergebe nur das Array mit den GEÄNDERTEN Werten, intern wird das eingearbeitet.
Bei den Flächenfunktionen muss man dann noch mit nFill (=> Xbase++ Handbuch) einstellen, ob man nur die Umrandung, nur die Füllung oder beides zeichnen will ...

Ich sehe, dass ich das in dem TEST.PRG etwas genauer zeigen sollte ;-)

Hier ist das Beispiel:

Code: Alles auswählen

 // Box in aktueller Farbe, also schwarz - this box will be printed with the current color => black
   ::PrintBox(700,900,50,50,"R", GRA_FILL ) // Parameter nFill => GraBox()
   // Box in ROT - this box in RED
   aAttribAlt := ::SetAttrArea( {{ GRA_AA_COLOR, GRA_CLR_RED }} )   // mehrere GRA_AA_ möglich ... - many GRA_AA_ possible
   ::PrintBox(700,950,50,50,"R", GRA_FILL ) // Parameter nFill => GraBox()
   ::ReSetAttrArea( aAttribAlt )
   // Box in alter Farbe, also schwarz - this box will be printed with the saved color => black
   ::PrintBox(700,1000,50,50,"R", GRA_FILL ) // Parameter nFill => GraBox()
Es druckt von oben nach unten je eine schwarze, rote und wieder schwarze Box.
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

danke, jetzt gehts einwandfrei. =D>
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Werner_Bayern hat geschrieben:Servus Hubert,
habs auf dem kurzen Dienstweg gelöst und die printmemo-Methode geändert:

Code: Alles auswählen

//return lSuccess
return nPosY
Läuft einwandfrei, hab gesehen, Du benutzt ja in der printmemo einfach Deine printtext-Methode, bis alles gedruckt ist. Da zählst Du ja sauber die Y-Pixel Zeile für Zeile hoch. :happy7:
Für dich kannst du das natürlich gerne so machen, aber grundsätzlich muss man mehr beachten, da andere Anwender eventuell den alten Rückgabewert benötigen und weil man die Schrift ja auch gedreht drucken kann, dann braucht man nicht die neu Y sondern die neue X Position. Ich habe die Ändurungen eingearbeitet und nun 3 neue Instanzvariablen eingebaut, die von ::PrintMemo() gefüllt werden:
1.35 - 20.05.2011 (= 2011-05-20)
::PrintMemo() speichert nun die Anzahl der gedruckten Zeilen in ::PrintMemoLineCount
::PrintMemo() speichert nun die GRA-Position der letzten gedruckten Zeilen in ::PrintMemoLinePosX und ::PrintMemoLinePosY
In der Test.PRG habe ich die Anwendung für den normalen Fall dargestellt:

Code: Alles auswählen

   ::PrintMemo(  1500, nPosY, cTxt, "B" , 500 )
   nPosY := ::PrintMemoLinePosY + ::LineFeed()
   ::PrintText( 1500, nPosY , "Anzahl Zeilen: "+ntrim(::PrintMemoLineCount))
Ich denke, dass ich die 1.35 noch heute Abend auf meinen Server lade.

PS: Durch die Änderungen bin ich noch auf einen Fehler in PrintMemo() gestoßen.
Nach CRLF+CRLF im Text wurden zwar noch alle Zeilen hochgezählt, aber nicht mehr gedruckt.
Das muss schon einmal funktioniert haben. :?

PPS: Wer sich noch nicht bei der Abstimmung am Anfang des Threads beteiligt hat, soll das bitte tun ;-)
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

brandelh hat geschrieben:PPS: Wer sich noch nicht bei der Abstimmung am Anfang des Threads beteiligt hat, soll das bitte tun ;-)
Danke!

Wink ist angekommen und umgesetzt ;-)
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

leidiges Thema, drucken mit PrintMemo.
Wie machst Du das, bzw. wie ist das vorgesehen? Ich muss A4-Seiten bedrucken und u. a. auch mit Memo-Feldern. Deren Inhalt ist ja bekanntlich variabel. Ich kann aber mit Deinen Methoden vorab nicht feststellen, ob der Ausdruck eines Memo-Feldes noch auf die aktuelle Seite (abzüglich unterer Rand) passt oder nicht. Deine Methode druckt ja (bei entsprechenden Parametern) bis zum unteren Rand und bricht dann korrekt ab, gibt dann auch ein .f. zurück.

Jetzt bräuchte ich aber was um festzustellen, wieviele Zeilen (mit Deiner Function WordwrapAT!) bereits gedruckt wurden, um den Rest (wie zu ermitteln?) auf der nächsten Seite drucken zu können. #-o
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

so wie es aussieht, gibt das PrintMemoLinePosY ein NIL zurück, wenn das Memofeld nur 1 Zeile enthält?
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Hallo Werner,

zunächst die Frage, welche Version setzt du ein ? Aktuell ist 1.35 !

Dass ein einzeiliges Memofeld NIL zurückliefert ist ein Fehler, hier habe ich nicht richtig initialisiert.
Bei MemoPrint() hingegen müsste sobald der Text nicht mehr in das vorhandene Fenster passt
ganz unten eine neue Seite aufgerufen und auch bedruckt werden:

Code: Alles auswählen

if lNeedNewPage
  ::NewPage()
  ::PrintForm()
  lNeedNewPage := .f.
endif
Dies ist z.B. dann sinnvoll, wenn man den Fließtext als Memo komplett drucken will.
Für komplexere Seiten mag das eventuell nicht passen.

Du könntest die fixen und variablen Texte in ::PrintForm() für jede Seite einzeln festlegen (die Seitennummer ist da ja bekannt.).
Dann würde PrintMemo() innerhalb seines Rahmens drucken und die anderen Bestandteile würde z.B. in einer DO Case Abfrage :PrintForm() zusteuern.

Code: Alles auswählen

oMyClass:PrintForm()
    * Drucke Bestandteile für alle Seiten ...
    ...
    do case
         case ::nPageNo=1
         case ::nPageNo=2
         case ::nPageNo=3
         case ::nPageNo>1
...
Sicherlich würde aber auch eine zusätzliche Methode Sinn machen, ich versuche das möglichst bald einzubauen:

PrintMemoPage( nPosX, nPosY, cTxt, cAusrichtung, nMaxLen, cArt, nFarbe, cHochQuer, nMaxBis,nLineFeed ) => cRestNochZuDrucken
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

1.35.

Ich hatte ::nFirstline nicht gesetzt, Danke für den Hinweis, jetzt wird der Rest "korrekt" gedruckt.

Es ist offensichtlich noch ein Fehler in der PrintMemo Methode: Enthält eine Zeile nur 1 Zeichen, wird diese Zeile komplett nicht gedruckt:

Code: Alles auswählen

Dies ist ein Memofeld
Zeile 1
2
3
Zeile 4
Ergibt bei mir den Ausdruck:

Code: Alles auswählen

Dies ist ein Memofeld
Zeile 1
Zeile 4
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Ich sehe es mir an.
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

brandelh hat geschrieben:Ich sehe es mir an.
Servus Hubert,

hattest Du schon Gelegenheit?
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Sorry, im Moment habe ich viel um die Ohren, aber ich denke diese Woche wird es noch was ;-)
Gruß
Hubert
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Danke, mach Dir keinen Stress. Wollte nur dran erinnert haben.

2 Flaschen Bio-Rotwein sind unterwegs... :wink:
es grüßt

Werner

<when the music is over, turn off the lights!>
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: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von brandelh »

Das hört sich gut an, aber dass ich nach dem Genuß schneller programmiere wage ich zu bezweifeln ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21150
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Manfred »

schneller nicht, aber sicherlich viiiel lustiger... :lol:
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
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

brandelh hat geschrieben:Das hört sich gut an, aber dass ich nach dem Genuß schneller programmiere wage ich zu bezweifeln ;-)
Ok, hier die Gebrauchsanweisung dazu: 1 halbes Glas vorab zum warm werden und erst nach Erfolg den Rest der ersten Flasche mit Deiner Frau genießen. Die 2. Flasche ist dann genauso zu gebrauchen bei evtl. Nachbesserungsarbeiten :angel12:
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Werner_Bayern hat geschrieben:Servus Hubert,

so wie es aussieht, gibt das PrintMemoLinePosY ein NIL zurück, wenn das Memofeld nur 1 Zeile enthält?
oder auch eine falsche yPos...
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Drucken mit HBPrinter - Was geht wie warum ???

Beitrag von Werner_Bayern »

Servus Hubert,

leider noch was: Ich schaffe es nicht, printMemo (druckt ja über printText) oder printText zu zentrieren. Kann es sein, dass das nicht funktioniert? Es steht auch im Quelltext bei Dir diesbezüglich was drin.

Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten