Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  Neuling - Button als Wechselschalter

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Neuling - Button als Wechselschalter (3093 mal gelesen)
Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2614
Registriert: 02.10.2006

erstellt am: 04. Nov. 2009 16:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo auch,
ich bin momentan dabei mir ein wenig VB beizubringen, damit ich in SolidWorks meine Macros besser verstehe.

Nun erstelle ich mir mein erstes Projekt.

Ich möchte einen Button als Wechselschalter betätigen. Gibt es eine Einstellung im Button der dies ermöglicht, oder gibt es eine andere Funktion die dies kann?

Ich dachte erst, dass ich es mit einem Merker realisieren kann, dies geht aber so nicht.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If Merker = 0 Then              'erster Durchgang
            Button1.Text = "Nächster Schritt"
            Merker = 1
        End If

        If Merker = 1 Then            'zweiter Durchgang
            Merker = 0
            Button1.Text = "Neues Spiel"
        End If

Kann mir jemand auf die Sprünge helfen, wie ich das hinbekomme?
Ich möchte auf jedenfall vermeiden, dass ich den Merker außerhalb dieser Routine durch eine andere Aktion von 0 auf 1 und zurück setze, weil dann kann ich gleich einen zweiten Button setzen.

Besten Dank auch,
Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 04. Nov. 2009 17:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andi Beck 10 Unities + Antwort hilfreich

Hallo Andi,

mit welchem VB arbeitest du?
Deinem Code nach müsste es irgend was mit .NET sein. Für eine solche Aufgabe stellt die das Framework die CheckBox zur Verfügung. Du musst die Eigenschaft Appearance auf Button ändern. Mit der Eigenschaft Checked kannst du dann abfragen ob deine Button gedrückt ist.
Also ungefähr so:

Code:
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
    If Me.CheckBox1.Checked Then
        Me.CheckBox1.Text = "Nächster Schritt"
    Else
        Me.CheckBox1.Text = "Neues Spiel"
    End If
End Sub

Mit einem Merker kannst du allerdings auch arbeiten. Diesen musst du nur in die Tag Eigenschaft des Buttons speichern:

Code:
Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    If Me.Button1.Tag Is Nothing Then
        Button1.Text = "Nächster Schritt"
        Me.Button1.Tag = 1
    Else
        If CInt(Me.Button1.Tag) = 1 Then
            Button1.Text = "Neues Spiel"
            Me.Button1.Tag = 0
        Else
            Button1.Text = "Nächster Schritt"
            Me.Button1.Tag = 1
        End If
    End If
End Sub

Viel Spaß beim ausprobieren ...

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks API Snippets

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2614
Registriert: 02.10.2006

erstellt am: 05. Nov. 2009 00:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Daniel,
besten Dank für deine Ausführungen und Entschuldige, ich arbeite mit MS Visual Basic 2008 Express Edition.

Ich habe mich für deine 2 Variante entschieden und sogar noch einen dritten Status eingefügt. Es funktioniert soweit alles gut,
bis auf einen Wermutstropfen.

Die beiden Beschriftungen "Neues Spiel" und "Nächster Schritt" sind ja nur Platzhalter für eine überschauliche Fragestellung. Im richtigen Programm kommen in den beiden (jetzt drei) Schritten ne Menge Programmanweisungen hinzu.
Wenn ich das erste Mal den Button drücke, steigt das Prg. ja über die Zeile

If Me.Button1.Tag Is Nothing Then

ein, und anschließend wechselt er bei jedem weiteren Drücken des Buttons zwischen den beiden Else-Anweisungen hin und her. Dort sind auch die ganzen Programmanweisungen vergeben. Das heisst beim ersten drücken des Buttons tut sich erst Mal nichts, außer dass der Tag auf 1 gesetzt wird.
Jetzt müsste ich die ganzen Programmanweisungen der ersten Else-Anweisung  in den ersten Schritt kopieren, was ich unschön finde.

Oder, und nun meine Frage.
Kann man den Tag nicht außerhalb der Routine schon auf 1 setzen und dann direkt in die erste Else-Anweisung einspringen?
Dann würde schon beim ersten Drücken des Buttons eine Aktion ablaufen.

Besten Dank noch mal, du hast mir bereits sehr geholfen.

Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 05. Nov. 2009 11:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andi Beck 10 Unities + Antwort hilfreich

Hallo Andi,

na klar kann man das machen und es ist sogar eine hervorragende Vorgehensweise!
Nutze dazu zum Beispiel einfach das Load Ereignis deines Formulars.
Hier kannst du dann deine Button Tag Eigenschaften mit 1 initialisieren.

------------------
Mfg Daniel

www.MySldWorks.de - SolidWorks API Snippets

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2614
Registriert: 02.10.2006

erstellt am: 06. Nov. 2009 00:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Daniel,
tut mir Leid, so weit bin ich noch nicht, ich verstehe nur Bahnhof.

Entweder du kannst mir nochmals mit mehr Details helfen, oder ich Vertage den kleinen Schönheitsfehler, bis ich mit meinem Selbststudium an den Umgang mit dem Load Ereignis dran bin.
(Ich bin erst auf Seite 230 von 560 Seiten des Buches MS VisualBasic 2008 Schritt für Schritt)

Auf jeden Fall weiss ich nun, dass es Prinzipiell geht.

Besten Dank, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Torsten Niemeier
Ehrenmitglied V.I.P. h.c.
Maschinenbau Ingenieur



Sehen Sie sich das Profil von Torsten Niemeier an!   Senden Sie eine Private Message an Torsten Niemeier  Schreiben Sie einen Gästebucheintrag für Torsten Niemeier

Beiträge: 3815
Registriert: 21.06.2001

"ZUSE I.36", 8 BIT, 32 Lämpchen, Service-Ölkännchen "ESSO-Super", Software: AO auf Kuhlmann-Parallelogramm-Plattform
** CSWP 04/2011 **
** CSWE 08/2011 **

erstellt am: 06. Nov. 2009 00:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Andi Beck 10 Unities + Antwort hilfreich

Hallo Andi,

Du könntest auch in den Eigenschaften des Buttons, also im Entwurfsmodus der Form, den Tag des Buttons auf "1" setzen. Das sollte denselben Effekt haben, wie mittels des Load-Ereignisses.

Gruß, Torsten

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2614
Registriert: 02.10.2006

erstellt am: 06. Nov. 2009 01:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Torsten,
funktioniert bestens, ein Eintrag, dass wars.

Also, Problem gelöst und ich kann nun an meinen restlichen Programmteilen weiter machen.

Besten Dank euch beiden.

Grüße, Andi  

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

[Diese Nachricht wurde von Andi Beck am 15. Nov. 2009 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



Sehen Sie sich das Profil von Andi Beck an!   Senden Sie eine Private Message an Andi Beck  Schreiben Sie einen Gästebucheintrag für Andi Beck

Beiträge: 2614
Registriert: 02.10.2006

Firma: SW 2024-5.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2025-1.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 15. Nov. 2009 13:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo noch mal,
durch mein weiteres Beschäftigen mit der Problematik bin ich doch zu einer einfachen Lösung mittels Merker gekommen. Wichtig dabei ist, dass der Merker als globale und nicht als lokale Variable deklariert wird.
Falls jemand über die Suche auf diesen Thread stößt, dem möchte ich diese Variante nicht vorenthalten.

Public Class Form1
    Dim Merker As Integer = 1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If Merker = 1 Then
            Button1.Text = "1 Schritt"
        ElseIf Merker = 2 Then
            Button1.Text = "2 Schritt"
        ElseIf Merker = 3 Then
            Button1.Text = "3 Schritt"
        ElseIf Merker = 4 Then
            Button1.Text = "4 Schritt"
        End If
        Merker += 1
        If Merker = 5 Then Merker = 1

    End Sub
End Class

Bis dahin, Grüße, Andi 

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz