Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Beispielprojekte
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
Pfeil 2 Grundlagen
Pfeil 2.1 Variablen und Datentypen
Pfeil 2.1.1 Namen und Werte
Pfeil 2.1.2 Deklarationen
Pfeil 2.1.3 Datentypen
Pfeil 2.1.4 Gültigkeitsbereich
Pfeil 2.1.5 Konstanten
Pfeil 2.1.6 Enumerationen
Pfeil 2.2 Operatoren
Pfeil 2.2.1 Rechenoperatoren
Pfeil 2.2.2 Vergleichsoperatoren
Pfeil 2.2.3 Logische Operatoren
Pfeil 2.2.4 Verkettungsoperator
Pfeil 2.2.5 Zuweisungsoperatoren
Pfeil 2.2.6 Rangfolge der Operatoren
Pfeil 2.3 Einfache Steuerelemente
Pfeil 2.3.1 Panel
Pfeil 2.3.2 Zeitgeber
Pfeil 2.3.3 Textfelder
Pfeil 2.3.4 Zahlenauswahlfeld
Pfeil 2.4 Verzweigungen
Pfeil 2.4.1 Einzeiliges If...Then...Else
Pfeil 2.4.2 If...Then...Else-Block
Pfeil 2.4.3 Select Case
Pfeil 2.4.4 Funktion IIf
Pfeil 2.4.5 Funktion Choose
Pfeil 2.4.6 Übungen
Pfeil 2.5 Verzweigungen und Steuerelemente
Pfeil 2.5.1 Kontrollkästchen
Pfeil 2.5.2 Optionsschaltfläche
Pfeil 2.5.3 Mehrere Ereignisse in einer Prozedur behandeln
Pfeil 2.5.4 Mehrere Gruppen von Optionsschaltflächen
Pfeil 2.5.5 Prozedur ohne Ereignis, Modularisierung
Pfeil 2.6 Schleifen
Pfeil 2.6.1 For ... Next
Pfeil 2.6.2 Do ... Loop
Pfeil 2.6.3 With
Pfeil 2.6.4 Übungen
Pfeil 2.7 Schleifen und Steuerelemente
Pfeil 2.7.1 Listenfeld
Pfeil 2.7.2 Listenfeld füllen
Pfeil 2.7.3 Wichtige Eigenschaften
Pfeil 2.7.4 Wechsel der Auswahl
Pfeil 2.7.5 Wichtige Methoden
Pfeil 2.7.6 Mehrfachauswahl
Pfeil 2.7.7 Kombinationsfelder

Rheinwerk Computing - Zum Seitenanfang

2.7 Schleifen und SteuerelementeZur nächsten Überschrift

In diesem Abschnitt werden die beiden Steuerelemente Listenfeld und Kombinationsfeld eingeführt. Damit können Sie eine einfache oder mehrfache Auswahl aus mehreren Möglichkeiten treffen. Im Zusammenhang mit diesen Steuerelementen werden häufig Schleifen benötigt, wie sie im vorherigen Abschnitt behandelt wurden.


Rheinwerk Computing - Zum Seitenanfang

2.7.1 ListenfeldZur nächsten ÜberschriftZur vorigen Überschrift

Ein Listenfeld (ListBox) zeigt eine Liste mit Einträgen an, aus denen der Benutzer einen oder mehrere auswählen kann. Enthält das Listenfeld mehr Einträge, als gleichzeitig angezeigt werden können, erhält es automatisch einen Scrollbalken.

Die wichtigste Eigenschaft des Steuerelements ListBox ist die Collection Items. Sie enthält die einzelnen Listeneinträge. Listenfelder können zur Entwurfszeit gefüllt werden, indem der Eigenschaft Items in einem eigenen kleinen Dialogfeld die Einträge hinzugefügt werden. In der Regel werden Sie ein Listenfeld aber zur Laufzeit füllen.


Rheinwerk Computing - Zum Seitenanfang

2.7.2 Listenfeld füllenZur nächsten ÜberschriftZur vorigen Überschrift

Bisher wurden die Eigenschaften und Ereignisse von Steuerelementen behandelt. Darüber hinaus gibt es jedoch auch spezifische Methoden, die auf diese Steuerelemente bzw. auf deren Eigenschaften angewendet werden können. Beim Listenfeld ist dies u. a. die Methode Add() der Eigenschaft Items. Diese wird am sinnvollsten zum Zeitpunkt des Ladens des Formulars genutzt.

Im nachfolgenden Programm im Projekt ListenfeldFüllen wird ein Listenfeld für italienische Speisen zu Beginn des Programms mit den folgenden Werten gefüllt: Spaghetti, Grüne Nudeln, Tortellini, Pizza, Lasagne, siehe Abbildung 2.35.

Abbildung

Abbildung 2.35 Listenfeld mit Scrollbalken

Der zugehörige Code:

Public Class Form1
Private Sub Form1_Load(...) Handles MyBase.Load
lstSpeisen.Items.Add("Spaghetti")
lstSpeisen.Items.Add("Grüne Nudeln")
lstSpeisen.Items.Add("Tortellini")
lstSpeisen.Items.Add("Pizza")
lstSpeisen.Items.Add("Lasagne")
End Sub
End Class

Listing 2.25 Projekt »ListenfeldFüllen«

Zur Erläuterung:

  • Das Ereignis Form1_Load wird ausgelöst, wenn das Formular geladen wird.
  • Die einzelnen Speisen werden der Reihe nach dem Listenfeld hinzugefügt. Lasagne steht anschließend ganz unten.

Rheinwerk Computing - Zum Seitenanfang

2.7.3 Wichtige EigenschaftenZur nächsten ÜberschriftZur vorigen Überschrift

Die folgenden Eigenschaften eines Listenfelds bzw. der Collection Items werden in der Praxis häufig benötigt:

  • Items.Count gibt die Anzahl der Elemente in der Liste an.
  • SelectedItem beinhaltet das aktuell vom Benutzer ausgewählte Element der Liste. Falls kein Element ausgewählt wurde, ergibt SelectedItem nichts.
  • SelectedIndex gibt die laufende Nummer des aktuell vom Benutzer ausgewählten Elements an, beginnend bei 0 für das oberste Element. Falls kein Element ausgewählt wurde, ergibt SelectedIndex den Wert –1.
  • Über Items (Index) können Sie die einzelnen Elemente ansprechen, das oberste Element ist Items(0).

Das folgende Programm im Projekt ListenfeldEigenschaften veranschaulicht alle diese Eigenschaften (siehe auch Abbildung 2.36):

Public Class Form1
[...]
Private Sub cmdAnzeige_Click(...) Handles ...
Dim i As Integer

lblAnzeige1.Text =
"Anzahl: " & lstSpeisen.Items.Count
lblAnzeige2.Text = "Ausgewählter Eintrag: " &
lstSpeisen.SelectedItem
lblAnzeige3.Text = "Nummer des ausgewählten" &
" Eintrags: " & lstSpeisen.SelectedIndex

lblAnzeige4.Text = "Alle Einträge:" & vbCrLf
For i = 0 To lstSpeisen.Items.Count – 1
lblAnzeige4.Text &=
lstSpeisen.Items(i) & vbCrLf
Next
End Sub
End Class

Listing 2.26 Projekt »ListenfeldEigenschaften«

Zur Erläuterung:

  • Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
  • Die Anzahl der Elemente wird über lstSpeisen.Items.Count ausgegeben, in diesem Fall sind es 5.
  • Der ausgewählte Eintrag steht in lstSpeisen.SelectedItem, seine Nummer in lstSpeisen.SelectedIndex.

Abbildung

Abbildung 2.36 Anzeige nach Auswahl eines Elements

  • Eine For-Schleife dient zur Ausgabe aller Elemente. Sie läuft von 0 bis lstSpeisen.Items.Count1. Dies liegt daran, dass bei einer Liste mit fünf Elementen die Elemente mit 0 bis 4 nummeriert sind.
  • Die einzelnen Elemente werden mit lstSpeisen.Items(i) angesprochen. Die Variable i beinhaltet bei der Schleife die aktuelle laufende Nummer.

Rheinwerk Computing - Zum Seitenanfang

2.7.4 Wechsel der AuswahlZur nächsten ÜberschriftZur vorigen Überschrift

Ähnlich wie beim Kontrollkästchen oder bei der Optionsschaltfläche ist das wichtigste Ereignis einer ListBox nicht der Click, sondern das Ereignis SelectedIndexChanged. Dieses Ereignis zeigt nicht nur an, dass die ListBox vom Benutzer bedient wurde, sondern auch, dass sie ihren Zustand geändert hat. Dies kann z. B. auch durch Programmcode geschehen. Eine Ereignisprozedur zu SelectedIndexChanged() wird in jedem Fall durchlaufen, sobald die ListBox (vom Benutzer oder vom Programmcode) geändert wurde.

Allerdings wird der Programmablauf meist so gestaltet, dass bei einem anderen Ereignis die aktuelle Auswahl der ListBox abgefragt wird und anschließend je nach Zustand unterschiedlich reagiert wird.

Das nachfolgende Programm im Projekt ListenfeldEreignis veranschaulicht diesen Zusammenhang, siehe Abbildung 2.37.

Abbildung

Abbildung 2.37 Anzeige nach dem Ereignis

Der Programmcode:

Public Class Form1
[...]
Private Sub cmdEreignis_Click(...) Handles ...
lstSpeisen.SelectedIndex = 3
End Sub

Private Sub lstSpeisen_SelectedIndexChanged(...
) Handles lstSpeisen.SelectedIndexChanged
lblAnzeige.Text = lstSpeisen.SelectedItem
End Sub
End Class

Listing 2.27 Projekt »ListenfeldEreignis«

Zur Erläuterung:

  • Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
  • In der Ereignisprozedur cmdEreignis_Click() wird die Nummer des ausgewählten Elements auf 3 gesetzt. Dadurch wird in der ListBox Pizza ausgewählt. Im Label wird die geänderte Auswahl sofort angezeigt, da das Ereignis lstSpeisen_SelectedIndexChanged ausgelöst wurde.
  • In der zugehörigen Ereignisprozedur lstSpeisen_SelectedIndexChanged() wird die Anzeige des ausgewählten Elements ausgelöst. Dieses wird unmittelbar nach der Auswahl angezeigt. Die Auswahl kann durch einen Klick des Benutzers in der Liste oder auch durch Programmcode ausgelöst werden.

Rheinwerk Computing - Zum Seitenanfang

2.7.5 Wichtige MethodenZur nächsten ÜberschriftZur vorigen Überschrift

Die Methoden Insert() und RemoveAt() können Sie zur Veränderung der Inhalte des Listenfelds nutzen:

  • Mithilfe der Methode Insert() können Sie Elemente zum Listenfeld an einer gewünschten Stelle hinzufügen.
  • Die Methode RemoveAt() löscht ein Element an der gewünschten Stelle.

Im nachfolgenden Programm im Projekt ListenfeldMethoden werden die beiden Methoden eingesetzt, um ein Listenfeld zu verwalten, siehe Abbildung 2.38. Es können Elemente eingefügt, gelöscht und geändert werden. Um sicherzustellen, dass es sich hierbei um sinnvolle Operationen handelt, müssen Sie jeweils bestimmte Bedingungen beachten.

Abbildung

Abbildung 2.38 Verwaltung eines Listenfelds

Public Class Form1
[...]
Private Sub cmdLöschen_Click(...) Handles ...
Dim X As Integer
X = lstSpeisen.SelectedIndex
If X <> –1 Then
lstSpeisen.Items.RemoveAt(X)
End If
End Sub

Private Sub cmdEinfügen_Click(...) Handles ...
If txtNeu.Text = "" Then
Exit Sub
End If
If optAnfang.Checked Then
lstSpeisen.Items.Insert(0, txtNeu.Text)
ElseIf optAuswahl.Checked And
lstSpeisen.SelectedIndex <> –1 Then
lstSpeisen.Items.Insert(
lstSpeisen.SelectedIndex,
txtNeu.Text)
Else
lstSpeisen.Items.Add(txtNeu.Text)
End If
txtNeu.Text = ""
End Sub

Private Sub cmdErsetzen_Click(...) Handles ...
Dim X As Integer
If txtErsetzen.Text <> "" And
lstSpeisen.SelectedIndex <> –1 Then
X = lstSpeisen.SelectedIndex
lstSpeisen.Items.RemoveAt(X)
lstSpeisen.Items.Insert(
X, txtErsetzen.Text)
txtErsetzen.Text = ""
End If
End Sub

Private Sub cmdAllesLöschen_Click(...) Handles ...
lstSpeisen.Items.Clear()
End Sub
End Class

Listing 2.28 Projekt »ListenfeldMethoden«

Zur Erläuterung:

  • Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
  • In der Prozedur cmdLöschen_Click() wird der Wert von SelectedIndex in der Variablen X gespeichert. Anschließend wird untersucht, ob ein Element ausgewählt wurde, ob also der Wert von X ungleich –1 ist. Ist dies der Fall, wird dieses Element mit der Methode RemoveAt() gelöscht. Wurde kein Element ausgewählt, geschieht nichts.
  • In der Prozedur cmdEinfügen_Click() wird zunächst untersucht, ob in der TextBox etwas zum Einfügen steht. Ist dies der Fall, wird untersucht, welcher Einfügeort über die Optionsschaltflächen ausgesucht wurde.
    • Wurde als Einfügeort das Ende der Liste gewählt, so wird der Inhalt mit der bekannten Methode Add()am Ende der Liste angefügt.
    • In den beiden anderen Fällen wird die Methode Insert() zum Einfügen des Inhalts der TextBox vor einem vorhandenen Listeneintrag genutzt. Diese Methode benötigt den Index des Elements, vor dem eingefügt werden soll. Dies ist entweder der Wert 0, falls am Anfang der Liste eingefügt werden soll, oder der Wert von SelectedIndex, falls vor dem ausgewählten Element eingefügt werden soll.
  • Anschließend wird die TextBox gelöscht, damit nicht versehentlich zweimal das gleiche Element eingefügt wird.
  • In der Prozedur cmdErsetzen_Click() wird untersucht, ob in der TextBox etwas zum Ersetzen steht und ob ein Element zum Ersetzen ausgewählt wurde. Ist dies der Fall, wird
    • der Wert von SelectedIndex in der Variablen X gespeichert,
    • das zugehörige Element mit der Methode RemoveAt() gelöscht,
    • der neue Text an der gleichen Stelle mit der Methode Insert() eingefügt
    • und die TextBox gelöscht, damit nicht versehentlich zweimal das gleiche Element eingefügt wird.
  • In der Prozedur cmdAllesLöschen_Click() dient die Methode Clear() zum Leeren der ListBox.

So sieht das Dialogfeld nach einigen Veränderungen aus (Abbildung 2.39).

Abbildung

Abbildung 2.39 Nach einigen Änderungen


Rheinwerk Computing - Zum Seitenanfang

2.7.6 MehrfachauswahlZur nächsten ÜberschriftZur vorigen Überschrift

Sie können es dem Benutzer ermöglichen, gleichzeitig mehrere Einträge aus einer Liste auszuwählen, wie er dies auch aus anderen Windows-Programmen kennt. Dazu wird zur Entwicklungszeit die Eigenschaft SelectionMode auf den Wert MultiExtended gesetzt. Der Benutzer kann anschließend mithilfe der Strg-Taste mehrere einzelne Elemente auswählen oder mithilfe der ª-Taste (wie für Großbuchstaben) einen zusammenhängenden Bereich von Elementen markieren.

Hinweis: Nach dem Einfügen einer neuen ListBox in ein Formular steht die Eigenschaft SelectionMode zunächst auf dem Standardwert One, d. h., es kann nur ein Element ausgewählt werden.

Die Eigenschaften SelectedIndices und SelectedItems beinhalten die Nummern bzw. die Einträge der ausgewählten Elemente. Sie ähneln in ihrem Verhalten der Eigenschaft Items. Das nachfolgende Programm im Projekt ListenfeldMehrfachauswahl verdeutlicht dies, siehe auch Abbildung 2.40.

Abbildung

Abbildung 2.40 Mehrere ausgewählte Elemente

Der Programmcode:

Public Class Form1
[...]
Private Sub cmdAnzeigen_Click(...) Handles ...
Dim i As Integer
lblAnzeige.Text = ""
For i = 0 To lstSpeisen.SelectedItems.Count – 1
lblAnzeige.Text &=lstSpeisen.SelectedItems(i) & vbCrLf
Next
End Sub
End Class

Listing 2.29 Projekt »ListenfeldMehrfachauswahl«

Zur Erläuterung:

  • Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
  • In der Prozedur cmdAnzeigen_Click() werden alle ausgewählten Elemente mithilfe einer Schleife durchlaufen. Diese Schleife läuft von 0 bis SelectedItems.Count1. Die ausgewählten Elemente selbst werden über SelectedItems(i) angesprochen.

Rheinwerk Computing - Zum Seitenanfang

2.7.7 KombinationsfelderZur nächsten ÜberschriftZur vorigen Überschrift

Das Steuerelement Kombinationsfeld (ComboBox) vereinigt die Merkmale eines Listenfelds mit denen eines Textfelds. Der Benutzer kann einen Eintrag aus dem Listenfeldbereich auswählen oder im Textfeldbereich eingeben. Das Kombinationsfeld hat im Wesentlichen die Eigenschaften und Methoden des Listenfelds.

Sie können mithilfe der Eigenschaft DropDownStyle zwischen drei Typen von Kombinationsfeldern wählen:

  • DropDown: Dies ist der Standard – die Auswahl aus einer Liste (Aufklappen der Liste mit der Pfeiltaste) oder Eingabe in das Textfeld. Das Kombinationsfeld hat die Größe einer TextBox.
  • DropDownList: Die Auswahl ist begrenzt auf die Einträge der aufklappbaren Liste, also ohne eigene Eingabemöglichkeit. Dieser Typ Kombinationsfeld verhält sich demnach wie ein Listenfeld, ist allerdings so klein wie eine TextBox. Ein Listenfeld könnte zwar auch auf diese Größe verkleinert werden, aber die Scroll-Pfeile sind dann sehr klein.
  • Simple: Die Liste ist immer geöffnet und wird bei Bedarf mit einer Bildlaufleiste versehen. Wie beim Typ DropDown ist die Auswahl aus der Liste oder die Eingabe in das Textfeld möglich. Beim Erstellen eines solchen Kombinationsfelds kann die Höhe wie bei ListBoxen eingestellt werden.

Die Eigenschaft SelectionMode gibt es bei Kombinationsfeldern nicht. Das folgende Programm im Projekt Kombinationsfeld führt alle drei Typen von Kombinationsfeldern vor, siehe auch Abbildung 2.41.

Public Class Form1
Private Sub Form1_Load(...) Handles MyBase.Load
cmbWerkzeug1.Items.Add("Zange")
cmbWerkzeug1.Items.Add("Hammer")
cmbWerkzeug1.Items.Add("Bohrer")
cmbWerkzeug1.Items.Add("Schraubendreher")

[... Das Gleiche für die beiden anderen Kombinationsfelder ...]

     End Sub

Private Sub cmdAnzeigen1_Click(...) Handles ...
lblAnzeige1.Text = cmbWerkzeug1.Text
End Sub

Private Sub cmdAnzeigen2_Click(...) Handles ...
lblAnzeige2.Text = cmbWerkzeug2.SelectedItem
End Sub

Private Sub cmdAnzeigen3_Click(...) Handles ...
lblAnzeige3.Text = cmbWerkzeug3.Text
End Sub
End Class

Listing 2.30 Projekt »Kombinationsfeld«

Abbildung

Abbildung 2.41 Drei verschiedene Kombinationsfelder

Zur Erläuterung:

  • Das erste Kombinationsfeld hat den DropDownStyle DropDown. Hat der Benutzer einen Eintrag ausgewählt, so erscheint dieser in der TextBox des Kombinationsfelds. Falls er selber einen Eintrag eingibt, wird dieser ebenfalls dort angezeigt. Die Eigenschaft Text enthält den Inhalt dieser TextBox, also immer den Wert des Kombinationsfelds.
  • Das zweite Kombinationsfeld hat den DropDownStyle DropDownList. Es gibt also keine TextBox. Wie beim Listenfeld ermitteln Sie die Auswahl des Benutzers über die Eigenschaft SelectedItem.
  • Das dritte Kombinationsfeld hat den DropDownStyle Simple. Im Programm kann es genauso wie das erste Kombinationsfeld behandelt werden. Die Eigenschaft Text beinhaltet also immer den Wert des Kombinationsfelds.

Übung

Schreiben Sie ein Programm, das zwei Listenfelder beinhaltet, in denen jeweils mehrere Elemente markiert werden können. Zwischen den beiden Listenfeldern befinden sich zwei Buttons, jeweils mit einem Pfeil nach rechts bzw. nach links, siehe Abbildung 2.42. Bei Betätigung eines der beiden Buttons sollen die ausgewählten Elemente in Pfeilrichtung aus der einen Liste in die andere Liste verschoben werden, siehe Abbildung 2.43.

Bei der Lösung kann neben der Eigenschaft SelectedItems z. B. auch die Eigenschaft SelectedIndices genutzt werden. Eine solche Collection beinhaltet dann nicht die ausgewählten Einträge, sondern deren Indizes. Mit dem Löschen mehrerer Einträge aus einem Listenfeld sollten Sie vom Ende der Liste her beginnen. Der Grund hierfür ist: Löschen Sie eines der vorderen Elemente zuerst, stimmen die Indizes in der Collection SelectedIndices nicht mehr.

Abbildung

Abbildung 2.42 Liste vor dem Verschieben

Abbildung

Abbildung 2.43 Liste nach dem Verschieben



Ihre Meinung

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern