vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Erst-Projekt: Multiple Auswahl 
Autor: ModeratorDaveS (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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Erst-Projekt: Multiple Auswahl 
Autor: ModeratorDaveS (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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel