hilfe mit projekt / button namen und aktionen ändern /

  • VB6

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von painboarder.

    hilfe mit projekt / button namen und aktionen ändern /

    morgen

    ich schildere euch kurz mein programm.
    und zwar habe ich diese buttons:


    das was ihr hier seht ist die standardmaske.
    wenn ich jetzt auf den button "'Ändern" klicke soll sich der name und die funktion des "Ändern"-Buttons ändern.
    ebenso die des beenden buttons.
    ich hab aber keine ahnung wie ich das hinbekomme...

    ich habe es mir so gedacht:
    ich setzte zum programmstart die standardmaske auf 0
    und bei den buttons
    neuanlage auf 1
    ändern auf 2...

    aber irgendwie gibt er nichts aus wenn ich auf die jeweiligen buttons klicke...

    Visual Basic-Quellcode

    1. Dim FK_Funktion As String
    2. 'Standtartmaske
    3. FK_Funktion = 0

    Visual Basic-Quellcode

    1. If FK_Funktion = 0 Then
    2. MsgBox "test1"
    3. ElseIf FK_Funktion = 1 Then
    4. MsgBox "test2"
    5. ElseIf FK_Funktion = 2 Then
    6. MsgBox "test3"
    7. ElseIf FK_Funktion = 3 Then
    8. MsgBox "test4"
    9. End If


    ich hoffe ihr könnt mir weiterhelfen
    danke schonmal :)

    mfg pain
    So könnte man es machen, allerdings halte ich es für übersichtlicher wenn du die jeweiligen Masken fertig anlegst, mit den entsprechenden Funktionen und sie dann lediglich ein und aus blendest.

    Also alle Buttons + Funktionen in ein Panel für die erste Maske. Danach ein weiteres Panel mit den Buttons für die zweite Maske. So muss t du lediglich Maske 1 ausblenden (Visible = False) und Maske 2 einblenden (Visible = True).
    ok, nur mein projektleiter hat zu mir gemeint er möchte es so haben wie ich es geschildert habe.
    ich bin zur zeit praktikant in einer firma und ich muss dieses projekt für meine abschlussprüfung machen...
    also bin ich an gewisse vorgaben gebunden... :thumbdown:

    ich bin noch nicht ganz drauf gekommen wo ich das abfragen könnte mit dem If FK_Funktion....

    bisher habe ich es in meinem Form_Load()

    aber da ich FK_Funktion direkt davor auf 0 setze geht er ja nie in die anderen rein.
    im code habe ich bei die jeweiligen button zb bei Ändern

    Visual Basic-Quellcode

    1. Public Sub b_aendern_Click()
    2. FK_Funktion = 2
    3. End Sub
    Nunja, dann musst es wohl über die Variablen machen, wobei deine Deklaration


    Visual Basic-Quellcode

    1. Dim FK_Funktion As String
    2. 'Standtartmaske
    3. FK_Funktion = 0


    alles andere als Sinnvoll ist. Du Deklarierst einen String und weist ihm dann ein Integer zu O.o
    Also deklariere sie dann schon als Integer

    Visual Basic-Quellcode

    1. Sub ButtonAendern_Click
    2. Select Case FK_Funktion
    3. Case 0:
    4. FK_Funktion = 1
    5. ButtonAendern.Caption = "Neuer Text"
    6. ButtonBeenden.Caption = "Bla bla"
    7. 'hier noch Code
    8. Case 1:
    9. ' hier anderer Code
    10. End Sub


    so in etwa, aber das äußerst unsauber und schwierig nachzuvollziehen. Beim Beenden Button natürlich ebenfalls eine Case Abfrage ob die Variable auf 0 oder 1 ist.

    painboarder schrieb:

    aber wie ändere ich dann auf die funktionen der button?

    Ich würde einfach die "FunktionsID" im .Tag speichern. Alle Buttons in ein ControlArray und dann im EventHandler einfach abfragen, welchen Tag der gedrückte Button (MeinButton(index)) hat. Dann diese Funktion ausführen.

    EDIT: Man kann dann die Funktionen und Beschriftungen der Buttons auch aus ner DB o.ä. ziehen. Hab ich vor Jahren (ups, schon eher ein Jahrzehnt ;) ) schn mal so gemacht, um "frei" konfigurierbare Oberflächen zu erlauben, die einfach aus ner Datenbank den Workflow definieren.
    Vielleicht könntest du für die Maskennamen auch eine Enum anlegen. Dann kannst du mit lesbaren Namen arbeiten statt mit nichtssagenden Integers. Und des Speichern der Funktion in der Tag-Eigenschaft des Button dürfte auch kein Problem sein, da die vom Typ Object ist.
    Abfrage denn mit Select Case... (wenns in VB6 geht...)

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Ich habe doch schon geschrieben wie es machst. Deine 2 Verschiedenen Codes einfach in die entsprechenden Cases packen.

    Visual Basic-Quellcode

    1. Sub ButtonAendern_Click
    2. Select Case FK_Funktion
    3. Case 0:
    4. FK_Funktion = 1
    5. ButtonAendern.Caption = "Neuer Text"
    6. ButtonBeenden.Caption = "Bla bla"
    7. Call Funktionbutton1()
    8. Case 1:
    9. Call FunktionButton2()
    10. End Sub
    11. Sub Funktionbutton1()
    12. ' der eine Code
    13. End sub
    14. Sub FunktionButton2()
    15. ' der andere Code
    16. End Sub


    Mein ersten Click des ändern Buttons wird der Text der beiden Buttons geändert, das Flag gesetzt und die erste Funktion ausgeführt. Klickst du nochmals auf den Button wird die zweite Funktion ausgeführt.
    ich habs jetzt so gemacht wie dus geschrieben hast es probelm ist aber dabei
    wenn ich den ändern button drücke macht er direkt die aktion und nicht wenn ich den geänderten drücke..

    Visual Basic-Quellcode

    1. Public Sub ButtonAendern_Click()
    2. Select Case FK_Funktion1
    3. Case 0:
    4. ButtonAendern.Caption = "Speichern"
    5. ButtonBeenden.Caption = "abbrechen"
    6. Call FunktionButton1_Click
    7. Case 1:
    8. Call FunktionButton2_Click
    9. End Select
    10. Sub FunktionButton1_Click()
    11. MsgBox "test"
    12. End Sub
    13. Sub FunktionButton2_Click()
    14. End Sub
    15. End Sub
    ääähm naja kommt drauf an was du willst, soll bei Ändern schon was passieren an Code, in deinem Fall die MessageBox? wenn nur die Namen geändert werden sollen, dann musst du natürlich einfach den Funktions Aufruf in Case 1 packen, das sollte aber der normale logische Menschenverstand schon sichtbar machen.

    In Case 0 wird der Code ausgeführt wenn das erste Mal klickst, in Case 1 beim zweiten Klick. Zudem hast du das Setzten der Variablen in Case 0 vergessen, so wird natürlich immer nur Case 0 ausgeführt.