Hallo alle zusammen^^
In diesem Beitrag will ich euch ein kleines Beispielprojekt zeigen wie man eine Listbox relativ einfach erweitern kann. Ich tue dies am beispiel einer Liste mit Filmen. Über die Listbox soll der Titel, das Genre, eine Bewertung und ob man den Film bereits gesehen hat ersichtlich sein UND benutzerfreundlich veränderbar. In meinem Fall ist Schritt 1 zum erstellen einer solchen Listbox:
Schritt 1: Wissen was man will
Als erstes sollte man sich bewusst machen was die Listbox tun soll, da die listbox wie der namen schon sagt items auflistet macht man sich gedanken wie man ein Item gestalten möchte und welche funktionen sich dahinter verbergen sollen. Hier ein bild meines fertigen Controls mit erklärungen. Ein skizze ist übrigens immer ein kluger zug!
Schritt 2: Welche Daten sollen angezeigt werden??
Ohne Daten (also Filmtitel, Bewertung, etc) ist die eigene Listbox ja nutzlos. Man könnte diesen schritt eigentlich vor den 1. setzten aber heute zählt ja nur noch das design xD In meinem Beispiel habe ich eine Klasse "Movie" erstellt. Diese enthält alle relevanten Daten. mehr sollte es dazu nicht zu sagen geben.
Schritt 3: Das Control vorbereiten
In meinem Beispielprojekt geschieht dies überwiegend im Sub New der klasse MovieListbox. Da dort alles gut kommentiert ist belasse ich es dabei.
Zur vorbereitung gehört auch eine maske für die anordnung der informationen im item. Die fertige Listbox ähnelt stark einer Tabelle wesshalb feste abstände unabdinglich sind.
Schritt 4: Ein Item zeichnen
So, kommen wir nun zu der wahrscheinlich wichtigsten funktion, dem zeichnen der items. Da man sich bereits gedanken gemacht hat wie die einzelnen informationen auf einem item angeordnet sind muss man lediglich im DrawItem-sub des Controls "beschreiben" wie das ganze hinterher aussehen soll. Ich habe in meinem Beispielprojekt denke ich die groben Möglichkeiten abgedeckt, nämlich: Text zeichenen, einfache Grafische Darstellung der Bewertung zeichnen und das laden einer Grafik aus einer Datei (für komplexere grafiken die sich mit GDI+ schwer realisieren lassen). Seht euch den Sub an und versucht alles nachzuvollziehen..
Komplexere Grafiken lädt man am besten aus seperaten Dateien oder den Ressourcen
Das erstellen der Bewertungsanzeige erfordert GDI+, mathematik und wirrwarrverständnis
Schritt 5: Der User will mit den Daten arbeiten!
Eigentlich wäre das Control soweit fertig, da eigentlich aber eigentlich ein sch***-wort ist verbessern wir das ganze: Der User soll mittels Mausklicks informationen der Items manipulieren können. In meinem Beispielprojekt geschieht dies über mehrere Wege: eigenen Dialog anzeigen lassen (das ist bei komplexeren Datenstrukturen sinnvoll), Verwendung eines Kontextmenüs, einfaches klicken um die Bewertung zu verändern und den "Schon gesehen?" Status zu verändern. Dieser Schritt macht eigentlich die gesamte Benutzerfreundlichkeit aus, je schneller und einfacher man die informationen anpassen kann desto besser ist es! Zu sagen wäre hier noch, dass die Verwendung von Properties und eigenen Events das Programmhandling stark verbessern könnnen.
Das wäre auch schon alles. Mein Beispielprojekt findet ihr im Dateianhang. Wer das Control in seinem Projekt verwenden will kann dies gerne tun, eine kleine PN mit dankeschön und eine namentliche erwähnung sind mir genug xD
In diesem Beitrag will ich euch ein kleines Beispielprojekt zeigen wie man eine Listbox relativ einfach erweitern kann. Ich tue dies am beispiel einer Liste mit Filmen. Über die Listbox soll der Titel, das Genre, eine Bewertung und ob man den Film bereits gesehen hat ersichtlich sein UND benutzerfreundlich veränderbar. In meinem Fall ist Schritt 1 zum erstellen einer solchen Listbox:
Schritt 1: Wissen was man will
Als erstes sollte man sich bewusst machen was die Listbox tun soll, da die listbox wie der namen schon sagt items auflistet macht man sich gedanken wie man ein Item gestalten möchte und welche funktionen sich dahinter verbergen sollen. Hier ein bild meines fertigen Controls mit erklärungen. Ein skizze ist übrigens immer ein kluger zug!
Schritt 2: Welche Daten sollen angezeigt werden??
Ohne Daten (also Filmtitel, Bewertung, etc) ist die eigene Listbox ja nutzlos. Man könnte diesen schritt eigentlich vor den 1. setzten aber heute zählt ja nur noch das design xD In meinem Beispiel habe ich eine Klasse "Movie" erstellt. Diese enthält alle relevanten Daten. mehr sollte es dazu nicht zu sagen geben.
Schritt 3: Das Control vorbereiten
In meinem Beispielprojekt geschieht dies überwiegend im Sub New der klasse MovieListbox. Da dort alles gut kommentiert ist belasse ich es dabei.
Zur vorbereitung gehört auch eine maske für die anordnung der informationen im item. Die fertige Listbox ähnelt stark einer Tabelle wesshalb feste abstände unabdinglich sind.
Schritt 4: Ein Item zeichnen
So, kommen wir nun zu der wahrscheinlich wichtigsten funktion, dem zeichnen der items. Da man sich bereits gedanken gemacht hat wie die einzelnen informationen auf einem item angeordnet sind muss man lediglich im DrawItem-sub des Controls "beschreiben" wie das ganze hinterher aussehen soll. Ich habe in meinem Beispielprojekt denke ich die groben Möglichkeiten abgedeckt, nämlich: Text zeichenen, einfache Grafische Darstellung der Bewertung zeichnen und das laden einer Grafik aus einer Datei (für komplexere grafiken die sich mit GDI+ schwer realisieren lassen). Seht euch den Sub an und versucht alles nachzuvollziehen..
Komplexere Grafiken lädt man am besten aus seperaten Dateien oder den Ressourcen
Das erstellen der Bewertungsanzeige erfordert GDI+, mathematik und wirrwarrverständnis
Schritt 5: Der User will mit den Daten arbeiten!
Eigentlich wäre das Control soweit fertig, da eigentlich aber eigentlich ein sch***-wort ist verbessern wir das ganze: Der User soll mittels Mausklicks informationen der Items manipulieren können. In meinem Beispielprojekt geschieht dies über mehrere Wege: eigenen Dialog anzeigen lassen (das ist bei komplexeren Datenstrukturen sinnvoll), Verwendung eines Kontextmenüs, einfaches klicken um die Bewertung zu verändern und den "Schon gesehen?" Status zu verändern. Dieser Schritt macht eigentlich die gesamte Benutzerfreundlichkeit aus, je schneller und einfacher man die informationen anpassen kann desto besser ist es! Zu sagen wäre hier noch, dass die Verwendung von Properties und eigenen Events das Programmhandling stark verbessern könnnen.
Das wäre auch schon alles. Mein Beispielprojekt findet ihr im Dateianhang. Wer das Control in seinem Projekt verwenden will kann dies gerne tun, eine kleine PN mit dankeschön und eine namentliche erwähnung sind mir genug xD