| |
VB.NET - Ein- und UmsteigerRe: Erst-Projekt: Multiple Auswahl | | | Autor: ReneGade | Datum: 25.09.12 11:32 |
| OK, bei den Fachtermini hapert's wohl noch. ;)
Hier kann man sehen, was ich bis jetzt gemacht habe.
http://www.freeimagehosting.net/gzgay
Durch Anklicken der einzelnen Felder und/oder Spalten und Reihen kann man hier die Auswahl treffen. Das Speichern im Textformat etc. habe ich schon alles fertig.
Bequemer wäre das einfach nur, wenn man statt des Herumhantierens mit den Buttons für Zeilen/Spalten einfach die Felder durch Mehrfachmarkierung mit der Maus an- und abwählen könnte (ich wiess nicht, wie ich das anders nennen soll). Um beispielsweise nur die linke Hälfte der Matrix zu aktivieren braucht es in meinem Beispiel mal mind. 6 Mausklicks. | |
Erst-Projekt: Multiple Auswahl | | | Autor: ReneGade | Datum: 24.09.12 10:53 |
| Hallo,
ich habe meine ersten Schritte in vb.net - Programmierung gerade erst hinter mir. Jetzt habe ich da ein kleines Programm im Sinn, bin mir aber nicht sicher, wie ich das prinzipiell anfangen soll. Kurze Beschreibung meiner Anforderung:
Das Programm soll eine Auswahl (JA/BEIN) ermöglichen. Insgesamt brauche ich 96 Felder in einer 12x8 - Matrix (Spalten x Zeilen). Die Auswahl soll durch Mouseklick auf ein Feld änderbar sein, aber auch durch "Ziehen" mit der Maus. Die Auswahl wird dann abschließend in einem Textformat gespeichert.
Ich habe das Ganze teilweise schon durch Checkboxen einem TableLayoutPanel realisiert bekommen, allerdings ist die Handhabung so mehr als umständlich.
Wie würde das der Profi angehen?
MfG,
RG | |
Re: Erst-Projekt: Multiple Auswahl | | | Autor: Manfred X | Datum: 24.09.12 13:03 |
| Hallo!
Keine Ahnung wie Profis das machen ... die brauchen womöglich eine
genauere Spezifikation Auswahl? Ziehen mit der Maus? Textformat?
Ich würde eine Datatable nehmen und 8 oder 12 boolsche Spalten
definieren. Die Table an ein Datagridview binden und den Inhalt in
einer XML-Datei speichern. Das wären bloß ca. ein/zwei Dutzend
Code-Zeilen. | |
Re: Erst-Projekt: Multiple Auswahl | | | Autor: DaveS (Moderator) | Datum: 25.09.12 12:41 |
| Du kannst die Maus einfach rüberziehen, linke Taste setzt und rechte (andere) Taste setzt zurück (hier habe ich die Buttons direkt auf der Form).
Dim spos As Point
Dim md As Boolean
Dim lb As Boolean
Private Sub Form1_MouseDown(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
lb = e.Button = Windows.Forms.MouseButtons.Left
spos = PointToClient(Cursor.Position)
md = True
End Sub
Private Sub Form1_MouseUp(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
md = False
End Sub
Private Sub Form1_MouseMove(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If md Then
Dim mp As Point = PointToClient(Cursor.Position)
Dim r As New Rectangle(Math.Min(spos.X, mp.X), Math.Min(spos.Y, _
mp.Y), Math.Abs(spos.X - mp.X), Math.Abs(spos.Y - mp.Y))
For Each c As Button In Controls
If c.Bounds.IntersectsWith(r) Then
If lb Then
c.BackColor = Color.Red
Else
c.BackColor = Me.BackColor
End If
End If
Next
End If
End Sub Ändern mit Mausklick
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
Handles MyBase.Load
For Each c As Button In Controls
AddHandler c.Click, AddressOf Button_Click
Next
End Sub
Private Sub Button_Click(sender As System.Object, e As System.EventArgs)
Dim b As Button = CType(sender, Button)
If b.BackColor = Color.Red Then
b.BackColor = Me.BackColor
Else
b.BackColor = Color.Red
End If
End Sub ________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: Erst-Projekt: Multiple Auswahl | | | Autor: ReneGade | Datum: 25.09.12 13:45 |
| Hi,
danke erstmal für die Hilfe. Ich habe den ersten Abschnitt jetzt mal ausprobiert, aber so ganz funktioniert die Auswahl noch nicht:
1. Das Rectangle wird nicht gezeichnet/dargestellt. Zwar passiert da im Hintergrund anscheinend etwas (s. 2.), aber zu sehen ist die Auswahl nicht.
2. Ich bekomme einen Fehler "Unable to cast object of type 'System.Windows.Forms.Label' to type 'System.Windows.Forms.Button'.", wenn ich über die Checkbox-Felder hinaus markiere, und zwar in dieser Line:
For Each c As Button In Controls Ich habe schon probiert, ob es evtl. so heißen müßte:
For Each c As CheckBox In TableLayoutPanel1.Controls ... um die Abfrage auf die wesentlichen Controls zu beschränken. Endet dann aber auch mit "Unable to cast object of type 'System.Windows.Forms.Button' to type 'System.Windows.Forms.CheckBox'.", wenn ich über die Checkboxes hinaus z.B. die Buttons markiere.
Was mache ich falsch?
Beitrag wurde zuletzt am 25.09.12 um 13:46:34 editiert. | |
Re: Erst-Projekt: Multiple Auswahl | | | Autor: DaveS (Moderator) | Datum: 25.09.12 15:11 |
| Der Code ist nur ein Beispiel und es gab in meinem Fall nur einige Buttons auf der Form. Wenn andere Controls vorhanden sind brauchst du etwa If TypeOf c Is ..., wenn es um CheckBoxen geht musst du CheckBox statt Button benutzen, und wenn du etwa ein Panel hast musst du panel.Controls benutzen und auch panel.PointToClient(), sonst stimmen die Vierecke nicht. Man kann ein "Rubber Band" im Prinzip auch zeichnen (Beipiele findest du im Forum), allerdings leuchten die Buttons wenn man die Maus mit gedrückter Taste rüberzieht, ich fand es deswegen nicht wirklich notwendig. Es ging nicht darum zuerst auswählen, dann ein- oder ausschalten, obwohl das natürlich auch möglich wäre.
________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist | |
Re: Erst-Projekt: Multiple Auswahl | | | Autor: ReneGade | Datum: 25.09.12 15:34 |
| Ok, danke für die Erläuterung. Ich denke, ich verstehe das jetzt. Werde noch ein wenig damit herumexperimentieren und sehen, ob ich den Fehler selbst finde. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|