Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

RichText Fonts ändern

48 views
Skip to first unread message

Volker Heil

unread,
Dec 22, 2003, 7:30:54 AM12/22/03
to
Hallo alle,

ich habe ein Problem mit den Fonts bei RichTextBoxen.

Ein Button soll marierten Text Fett schreiben,
ein anderer Button soll ihn unterstreichen können:

B1.Klick:
RTB.SelectionFont = New Font("Arial", FontStyle.Bold)

B2.Klick:
RTB.SelectionFont = New Font("Arial", FontStyle.Underline)

Das klappt soweit auch. Aaaaber:
Dabei werden alle anderen Attribute jeweils wieder gelöscht.
Ich habe auch schon versucht, diese Attribute zwischenzuspeichern
und jeweils neu zu setzen (FontStyle.Underline or FontStyle.Bold).
Spätestens wenn ich Textstellen markiere, die unterschiedliche
Schriften enthalten ist das nicht mehr möglich ...

Mach' ich was flasch ?

Tschüss, Volker

Peter Fleischer

unread,
Dec 22, 2003, 8:29:26 AM12/22/03
to
Volker Heil wrote:
> Hallo alle,
>
> ich habe ein Problem mit den Fonts bei RichTextBoxen.
>
> Ein Button soll marierten Text Fett schreiben,
> ein anderer Button soll ihn unterstreichen können:
>
> B1.Klick:
> RTB.SelectionFont = New Font("Arial", FontStyle.Bold)
>
> B2.Klick:
> RTB.SelectionFont = New Font("Arial", FontStyle.Underline)

Volker,
die FontStyles müssen logisch addiert werden!

Peter

Volker Heil

unread,
Dec 22, 2003, 9:25:34 AM12/22/03
to
Hallo Peter,

Peter Fleischer schrieb:


>> ich habe ein Problem mit den Fonts bei RichTextBoxen.
>> Ein Button soll marierten Text Fett schreiben,
>> ein anderer Button soll ihn unterstreichen können:

^^^^^^^^

> die FontStyles müssen logisch addiert werden!

Wenn der markierte Text jetzt stellenweise Normalschrift und
stellenweise Fettschrift hat, wie kann ich
dann _alles zusammen_ unterstreichen lassen, ohne dass die Fettschrift
verloren geht, oder alles fett wird?

Tschüss, Volker

Herfried K. Wagner [MVP]

unread,
Dec 22, 2003, 10:27:37 AM12/22/03
to
Hallo Peter!

* "Peter Fleischer" <peter.fleis...@gmx.de> scripsit:


>> ich habe ein Problem mit den Fonts bei RichTextBoxen.
>>
>> Ein Button soll marierten Text Fett schreiben,
>> ein anderer Button soll ihn unterstreichen können:
>>
>> B1.Klick:
>> RTB.SelectionFont = New Font("Arial", FontStyle.Bold)
>>
>> B2.Klick:
>> RTB.SelectionFont = New Font("Arial", FontStyle.Underline)
>

> die FontStyles müssen logisch addiert werden!

Spätestens wenn du bei einem Textstück, das zum Teil kursiv und zum Teil
unterstrichen ist, den Font auf die oben beschriebene Weise änderst,
wird die Formatierung entweder auf das gesamte Textstück oder überhaupt
nicht angewandt.

--
Herfried K. Wagner [MVP]
<http://www.mvps.org/dotnet>

Peter Fleischer

unread,
Dec 22, 2003, 10:57:49 AM12/22/03
to

Volker,
da musst du das selektierte Textstück analysieren, um die einzelnen
Teilbereiche zu ermitteln. Jedem Teilbereich musst du dann das betreffende
FontStyle-Bit "dazu-odern".

Peter

Volker Heil

unread,
Dec 22, 2003, 1:19:04 PM12/22/03
to
Hallo Peter (und Herfried),

>> Wenn der markierte Text jetzt stellenweise Normalschrift und
>> stellenweise Fettschrift hat, wie kann ich
>> dann _alles zusammen_ unterstreichen lassen, ohne dass die Fettschrift
>> verloren geht, oder alles fett wird?

> da musst du das selektierte Textstück analysieren, um die einzelnen


> Teilbereiche zu ermitteln. Jedem Teilbereich musst du dann das betreffende
> FontStyle-Bit "dazu-odern".

Das ist doch nicht euer Ernst? ECHT? Das wäre ja ein riesen Aufwand!
Ich meine mich erinnern zu können dass sowas in VB6 einfacher ging.

Das ist doch eine absolut gebräuchliche Anwendung. Buttons um einen
Text zu gestalten.

Gibt es da wirklich keinen Trick? Ich kann's garnicht glauben ...
... selbst wenn, wie kann ich denn die Selection wiederum in die
Teilbereiche zerlegen? Buchstabe für Buchstabe?

Tschüss, Volker

Peter Fleischer

unread,
Dec 23, 2003, 12:26:06 AM12/23/03
to
Volker Heil wrote:
...

>> da musst du das selektierte Textstück analysieren, um die einzelnen
>> Teilbereiche zu ermitteln. Jedem Teilbereich musst du dann das
>> betreffende FontStyle-Bit "dazu-odern".
>
> Das ist doch nicht euer Ernst? ECHT? Das wäre ja ein riesen Aufwand!
> Ich meine mich erinnern zu können dass sowas in VB6 einfacher ging.

Volker,
du hast Recht. Im RichTextBox-Control in VB6 gab es z.B. die SelBold-,
SelUnterline-Eigenschaften

> Das ist doch eine absolut gebräuchliche Anwendung. Buttons um einen
> Text zu gestalten.
>
> Gibt es da wirklich keinen Trick? Ich kann's garnicht glauben ...

Der Trick ist ganz einfach. Leite dir von dem Standard-Control ein eigenes
ab und erweitere es um die gewünschten Eigenschaften. Was hast du gegen eine
primitive Lösung in der folgenden Form?

Dim selstart As Integer = .SelectionStart
Dim sellen As Integer = .SelectionLength
.SelectionLength = 1
For i As Integer = selstart To selstart + sellen
.SelectionStart = i
.SelectionFont = New Font(.SelectionFont, FontStyle.Underline)
Next
.SelectionStart = selstart
.SelectionLength = sellen

> ... selbst wenn, wie kann ich denn die Selection wiederum in die
> Teilbereiche zerlegen? Buchstabe für Buchstabe?

Wo ist das Problem? Man kann den obigen Codeauszug bestimmt noch
verbessern:-)

Peter

Volker Heil

unread,
Dec 23, 2003, 6:09:27 AM12/23/03
to
Hallo Peter,

> Der Trick ist ganz einfach. Leite dir von dem Standard-Control ein eigenes
> ab und erweitere es um die gewünschten Eigenschaften. Was hast du gegen eine
> primitive Lösung in der folgenden Form?

Gute Idee, aber:

> Dim selstart As Integer = .SelectionStart
> Dim sellen As Integer = .SelectionLength
> .SelectionLength = 1
> For i As Integer = selstart To selstart + sellen
> .SelectionStart = i
> .SelectionFont = New Font(.SelectionFont, FontStyle.Underline)

New Font(.SelectionFont, FontStyle.Underline) mag er nicht.
Als ersten Parameter erwartet er _nur_ die Schriftart.
Hier muss ich wohl für absolut jedes Attribut eine Abfrage machen,
und einzeln dazu "odern".

> Next
> .SelectionStart = selstart
> .SelectionLength = sellen

Und diese Prozedur für jedes Attribut das ich setzen
möchte nochmal. (Gut, das ließe sich vereinfachen).
OK, ich hab' ja sonst kein Hobby ;-)

<OT>
Eine der wenigen Stellen, an dene ich mir VB6 zurück wünsche ...
Aber es ist ja bald Weihnachten. Gab es da nicht die Adresse:
weihnachtsmann.gates.com/wishlist.aspx?EintragNr=19493283723
???
</OT>

Vielen Dank für die (wie immer) kompetente Hilfe in dieser Newsgroup.

Tschüss, Volker

Peter Fleischer

unread,
Dec 23, 2003, 11:29:43 AM12/23/03
to
Volker Heil wrote:
...

>> .SelectionFont = New Font(.SelectionFont,
>> FontStyle.Underline)
>
> New Font(.SelectionFont, FontStyle.Underline) mag er nicht.
> Als ersten Parameter erwartet er _nur_ die Schriftart.

Volker,
das verstehe ich nicht. Weshalb mag er das nicht? Bei mir lief es. Die
New-Methode der Font-Klasse hat viele überladene Funktionen!

Peter

Herfried K. Wagner [MVP]

unread,
Dec 23, 2003, 12:05:47 PM12/23/03
to
* Volker Heil <vol...@edv-schule.dasweg.net> scripsit:

>> For i As Integer = selstart To selstart + sellen
>> .SelectionStart = i
>> .SelectionFont = New Font(.SelectionFont, FontStyle.Underline)

Sollte klappen, da es eine überladene Version gibt, die 'prototype As Font' und
danach 'newStyle As FontStyle' erwartet.

> New Font(.SelectionFont, FontStyle.Underline) mag er nicht.
> Als ersten Parameter erwartet er _nur_ die Schriftart.

--

Volker Heil

unread,
Dec 23, 2003, 12:30:02 PM12/23/03
to
Hallo Peter,

>> New Font(.SelectionFont, FontStyle.Underline) mag er nicht.

> das verstehe ich nicht. Weshalb mag er das nicht? Bei mir lief es. Die


> New-Methode der Font-Klasse hat viele überladene Funktionen!

Hmmm.
Ich hatte den Code 1:1 kopiert und ein With - End With
mit meinem Control drumgesetzt.
Dann hatte er irgendwas gemeckert, ich muss nochmal testen was es war.
Moment bitte ...
... Also da isses:

"Überladungsfunktion fehlgeschlagen ...
keine zugreifbare New ohne einschränkende Konvertierung ..."

Was sollte mir das sagen?

Tschüss, Volker

Volker Heil

unread,
Dec 23, 2003, 12:57:50 PM12/23/03
to
Hallo Herfried,

> Sollte klappen, da es eine überladene Version gibt, die 'prototype As Font' und
> danach 'newStyle As FontStyle' erwartet.

Selbst wenn es Funktionieren sollte, ich habe nicht nur vor,
die Schriftattribute zu ändern, sondern auch die Farbe und Art.
Auch bei der SchriftArt werden "Bold's" und Underline's" wieder
zurückgesetzt!

Eben ist mir noch eine andere Idee gekommen.
Ich habe beim hinzufügen von Komponenten zur Toolbox
das COM Control "Microsoft Rich Textbox Control 6.0 (SP4)
gefunden.

Was spricht dagegen, dieses zu verwenden?
Das kann alles was ich brauche!

Gibt es da Lizenz oder "Setup" Probleme?
(XCopy-Install wird da wohl nicht gehen ...)

Tschüss, Volker

Herfried K. Wagner [MVP]

unread,
Dec 23, 2003, 1:41:33 PM12/23/03
to
Hallo Volker!

* Volker Heil <vol...@edv-schule.dasweg.net> scripsit:

Das Control muss registriert werden. Eventuell kann es auch
Lizenzprobleme am Entwicklungsrechner geben, die man aber umgehen kann:

Q318597 - PRB: Errors When You Use Visual Basic 6.0 Controls in Visual Basic .NET
<http://support.microsoft.com/default.aspx?scid=kb;en-us;318597>

Soweit ich weiss, musst du zur Verwendung allerdings im Besitz von VS
6.0 bzw. der entsprechenden VB-Version, in der diese Komponente
enthalten ist, sein.

Allerdings ist von der Verwendung alter ActiveX-Komponenten abzuraten,
wenn es doch eine recht brauchbare "managed"-Version davon gibt. Mir ist
immer noch nicht ganz klar, was dir am .NET-RichTextBox-Control nicht
passt.

Peter Fleischer

unread,
Dec 23, 2003, 1:50:40 PM12/23/03
to
Volker Heil wrote:
...

> Selbst wenn es Funktionieren sollte, ich habe nicht nur vor,
> die Schriftattribute zu ändern, sondern auch die Farbe und Art.
> Auch bei der SchriftArt werden "Bold's" und Underline's" wieder
> zurückgesetzt!

Volker,
mir scheint, dein Programmzonzept erwartet von dir noch eine klitzekleine
Verbesserung:-)

Willst du mit einem Button alles ändern? Dann nimm nicht .SelectionFont als
Basis, sondern erzeuge ein Font-Objekt nach deinen Wünschen. Dort kannst du
Bold's und Underline's nach Belieben setzen. Wo ist das Problem?

> Eben ist mir noch eine andere Idee gekommen.
> Ich habe beim hinzufügen von Komponenten zur Toolbox
> das COM Control "Microsoft Rich Textbox Control 6.0 (SP4)
> gefunden.
>
> Was spricht dagegen, dieses zu verwenden?

Dein Programmkomzept wird dagegen sprechen. Wenn du VB6-Controls nutzen
willst, warum schreibst du dann das Programm nicht in VB6?

> Das kann alles was ich brauche!

Leite von der dotNET-RechTextBox einfach ein neues Control ab, was voll
deinen Wünschen entspricht. Wo ist das Problem?

Peter

Volker Heil

unread,
Dec 23, 2003, 2:34:01 PM12/23/03
to
Hallo zusammen,

> mir scheint, dein Programmzonzept erwartet von dir noch eine klitzekleine
> Verbesserung:-)

Nur eine ?!? :-)

> Willst du mit einem Button alles ändern? Dann nimm nicht .SelectionFont als

Ich sollte vieleicht kurz erläutern, worum es mir geht:
Ich habe auf einem Form 4 RTB's, die zum Teil innerhalb eines
Usercontrols stecken.

Ich möchte nun einfach nur ein paar "Formatier-Buttons" einbauen.
(Die Möglichkeiten sollen bewusst auf 4 Farben, 3 Schriftarten, Fett,
Kursiv und Unterstrichen reduziert werden)
Also ein kleines "Mini-WordPad".

Bin ich der Einzige der sowas macht?

> Dein Programmkomzept wird dagegen sprechen. Wenn du VB6-Controls nutzen
> willst, warum schreibst du dann das Programm nicht in VB6?

Weil für den ganzen Rest .net einfach besser ist!

> Leite von der dotNET-RechTextBox einfach ein neues Control ab, was voll
> deinen Wünschen entspricht. Wo ist das Problem?

Das Problem?
Weil erstens die Programmierung sehr mühsam ist (im Vergleich zu VB6,
aber das würde ich ja in Kauf nehmen)
Zweitens ich den Code von dir nicht zu laufen bekomme
(kann daran liegen, dass ich noch nicht lange mit .net zu tun habe,
und den Spass bisher eher Hobbymässig betrieben habe)
Drittens *sehr kleinlaut* wenn der Code erstmal funzt,
ich hab' noch nie ein Control von einem anderen abgeleitet.
Ist das sehr kompliziert?

Tschüss, Volker

Herfried K. Wagner [MVP]

unread,
Dec 23, 2003, 3:41:38 PM12/23/03
to
Hallo Volker!

* Volker Heil <vol...@edv-schule.dasweg.net> scripsit:

> Ich möchte nun einfach nur ein paar "Formatier-Buttons" einbauen.
> (Die Möglichkeiten sollen bewusst auf 4 Farben, 3 Schriftarten, Fett,
> Kursiv und Unterstrichen reduziert werden)
> Also ein kleines "Mini-WordPad".

Ich verstehe schon das bei .NET damit verbundene Problem des Änderns der
Formatierung eines Textstücks, das selbst bereits verschiedene
Formatierungen auf /Teilen/ dieses Textes aufweist, und mir fällt dazu
auch keine einfache Lösung ein.

> ich hab' noch nie ein Control von einem anderen abgeleitet.
> Ist das sehr kompliziert?

Im einfachsten Fall, wenn das Control z.B. von der Klasse 'Bar'
abgeleitet werden soll:

\\\
Public Class FooBar
Inherits Bar
End Class
///

;-)

Peter Fleischer

unread,
Dec 23, 2003, 3:51:52 PM12/23/03
to
Volker Heil wrote:
...

>> mir scheint, dein Programmzonzept erwartet von dir noch eine
>> klitzekleine Verbesserung:-)
>
> Nur eine ?!? :-)

Volker,
wenigstens den Humor hast du noch nicht verloren:-)

...


> Ich möchte nun einfach nur ein paar "Formatier-Buttons" einbauen.
> (Die Möglichkeiten sollen bewusst auf 4 Farben, 3 Schriftarten, Fett,
> Kursiv und Unterstrichen reduziert werden)
> Also ein kleines "Mini-WordPad".

Farben: RichTextBox.SelectionColor

Schriftarten: neues Font-Objekt zuweisen; wie mit den alten Einstellungen
Fett, Kursiv und Unterstrichen zu verfahren ist, sollte im Pflichtenheft
beschrieben sein. In Word-Pad z.B. wird mit der Funktion Format/Schriftart
sehr unterschiedlich verfahren, wenn diese Formatierungen nicht, teilweise
oder ganz auf den markierten Bereich zutreffen.

Einzelformatierung: s. mein Codeschnipsel

> Bin ich der Einzige der sowas macht?

WordPad neu erfinden? In VB.NET programmieren? Einen Codeschnipsel analog
meinem bzw. besser durchdacht zu nutzen, glaube ich, trifft bestimmt öfter
zu:-)

...


>> Leite von der dotNET-RechTextBox einfach ein neues Control ab, was
>> voll deinen Wünschen entspricht. Wo ist das Problem?
>
> Das Problem?
> Weil erstens die Programmierung sehr mühsam ist (im Vergleich zu VB6,
> aber das würde ich ja in Kauf nehmen)

Solange du VB.NET immer mit VB6 vergleichst, wird das mühsam bleiben. VB.NET
ist eine neue Sprache mit Sprachelementen, die auch in VB6 oder in Modula-2
oder in ALGOL genutzt wurden. Trenne dich einfach von VB6 und denke nur in
Objekten mit Eigenschaften, Methoden und ggf. Ereignissen. Dann bist du
VB.NET viel näher und alles wird einfacher.

> Zweitens ich den Code von dir nicht zu laufen bekomme
> (kann daran liegen, dass ich noch nicht lange mit .net zu tun habe,
> und den Spass bisher eher Hobbymässig betrieben habe)
> Drittens *sehr kleinlaut* wenn der Code erstmal funzt,
> ich hab' noch nie ein Control von einem anderen abgeleitet.
> Ist das sehr kompliziert?

Jeder fängt mal. Nein, das ist nicht kompliziert. Schau dir mal die Hilfe zu
Inherits an oder studiere eines der vielen Bücher zu diesem Thema. Hier mal
ein Beispiel für ein eigenes DataGrid, welches vom DataGrid abgeleitet wurde
und in der Grundeinstellung roten Kopfzeilentext hat:

Friend WithEvents myDataGrid As myDataGridClass

Private Sub DataGridZuweisen()
myDataGrid = New myDataGridClass
With myDataGrid
CType(myDataGrid,
System.ComponentModel.ISupportInitialize).BeginInit()
.Location = New System.Drawing.Point(10, 10)
.Name = "DataGrid1"
.Size = New System.Drawing.Size(Me.Width - 28, Me.Height - 40)
.TabIndex = 0
Me.Controls.AddRange(New System.Windows.Forms.Control() {myDataGrid})
CType(myDataGrid, System.ComponentModel.ISupportInitialize).EndInit()
End With
End Sub

Public Class myDataGridClass
Inherits System.Windows.Forms.DataGrid
Sub New()
Me.DataMember = ""
Me.HeaderForeColor = Color.Red
End Sub
End Class

Peter

Volker Heil

unread,
Dec 23, 2003, 5:09:37 PM12/23/03
to
Hallo Herfried,

Herfried K. Wagner [MVP] schrieb:

> Im einfachsten Fall, wenn das Control z.B. von der Klasse 'Bar'
> abgeleitet werden soll:
>
> \\\
> Public Class FooBar
> Inherits Bar
> End Class
> ///

Endlich mal eine Antwort, die mir richtig gut gefällt
:-)

Wenigstens weiss ich jetzt, was ich in den langweiligen
Ferientagen machen werde ...

Tausendundeinen Dank,

Volker

Volker Heil

unread,
Dec 23, 2003, 5:50:14 PM12/23/03
to
Hallo Peter

> wenigstens den Humor hast du noch nicht verloren:-)

Humor ist ... wenn man trotzdem lacht :)

> Einzelformatierung: s. mein Codeschnipsel
HURAAAAAAAA !!!
Es läuft!
Ich hab den Fehler:

Dim ctlAkt As Object
ctlAkt = Form1.ActiveForm.ActiveControl()
... ' hier wird geprüft ob es eine RTB ist
With ctlAkt
...


.SelectionFont = New Font(.SelectionFont, FontStyle.Underline)

Und da knallt's, weil ctlAkt als Object deklariert ist.
Muss aber so sein, weil ich vorher noch nicht weiss,
welches Objekt gerade den Fokus hat.

Ich hab erstmal ein
Dim ctlAkt2 As RichTextBox
ctlAkt2 = ctlAkt
eingebaut, jetzt gehts.
Kann ich den Typ eleganter (im Nachhinein) festlegen?

> Solange du VB.NET immer mit VB6 vergleichst, wird das mühsam bleiben. VB.NET

Ich programmiere seit dem VC20 (1 Generation vor dem C64) mit
rein prozeduralen Sprachen. (Mehr als Hobby, beruflich auch mal
kurzfristig ein wenig PIC-Assembler)
Ich bin inzwischen aber durchaus begeistert von VB.Net!
Ich habe mich auch schon weitgehend an Objekte gewöhnt,
aber es gibt ein paar Dinge, die mich wirklich zum Schwitzen
bringen. Dazu gehört das Ableiten von Klassen.
Ich glaub' ich werd' zu alt für sowas ;-)
Obwohl ich dein Beispiel durchaus verstanden habe.
Ich glaube das ist doch nicht so schwer wie ich dachte.

Aber eine Frage dazu: Kann ich diese "überarbeitete"
Komponente in der Toolbox unterbringen?
Und dann bequem in meinem Formular verwenden?
War auch die letzte Frage. Bestimmt. Für heute. :-)

Tschüss, Volker

Karsten Sosna

unread,
Dec 24, 2003, 2:15:53 AM12/24/03
to
> Dim ctlAkt As Object
> ctlAkt = Form1.ActiveForm.ActiveControl()
> ... ' hier wird geprüft ob es eine RTB ist
> With ctlAkt
> ...
> .SelectionFont = New Font(.SelectionFont, FontStyle.Underline)
>
> Und da knallt's, weil ctlAkt als Object deklariert ist.
> Muss aber so sein, weil ich vorher noch nicht weiss,
> welches Objekt gerade den Fokus hat.
>
> Ich hab erstmal ein
> Dim ctlAkt2 As RichTextBox
> ctlAkt2 = ctlAkt
> eingebaut, jetzt gehts.
> Kann ich den Typ eleganter (im Nachhinein) festlegen?

IMHO nein, aber Du solltest die Zeile
ctlAkt2 = ctlAkt
so erweitern:
ctlAkt2 = DirectCast(ctlAkt,RichTextBox)
Wenn Du nähmlich Option Strict On schaltest(Projekteigenschaften) bekommst
Du an dieser Stelle(in Deiner Version) einen Fehler.


> Aber eine Frage dazu: Kann ich diese "überarbeitete"
> Komponente in der Toolbox unterbringen?
> Und dann bequem in meinem Formular verwenden?

Füge Deinem Projekt eine Benutzersteuerelement(UserControl) hinzu.
In Quellcode ersetzt Du dann die Zeile
Inherits System.Windows.Forms.UserControl
gegen
Inherits System.Windows.Forms.RichTextBox

Danch erstellst Du das Projekt neu. Das solltest Du auch bei Änderungen am
UserControl machen.

Gruß Karsten

Volker Heil

unread,
Dec 24, 2003, 7:47:39 AM12/24/03
to
Hallo Karstin,

> IMHO nein, aber Du solltest die Zeile
> ctlAkt2 = ctlAkt
> so erweitern:
> ctlAkt2 = DirectCast(ctlAkt,RichTextBox)
> Wenn Du nähmlich Option Strict On schaltest(Projekteigenschaften) bekommst
> Du an dieser Stelle(in Deiner Version) einen Fehler.

Ja, genau so wollte ich das, wegen "Strict" hatte er nämlich erst
nich gewollt, als ich's aus hatte ging es.
So gefällt mir das schon viel besser :-)

> Füge Deinem Projekt eine Benutzersteuerelement(UserControl) hinzu.
> In Quellcode ersetzt Du dann die Zeile
> Inherits System.Windows.Forms.UserControl
> gegen
> Inherits System.Windows.Forms.RichTextBox
> Danch erstellst Du das Projekt neu. Das solltest Du auch bei Änderungen am
> UserControl machen.

Suuper, danke vielstmalst,
schöne Weihnachten,

und
Tschüss, Volker

0 new messages