Hallo Skaletti,
Hallo,
bin ein Stück weiter.
cmdRechnen.Enabled = CBool(Len(txtWareneingangEingabe) > 0 +
CBool(Len(txtRollenEingabe) > 0))
So ist der Button deaktiviert.
Aber sobald in einer Box ein Wert steht, wird der Button
freigegeben.
Er soll aber erst freigegeben werden wenn in beiden TextBoxen
ein
Wert steht. Ist das möglich??
Das ist aber nicht der Weg den ich dir gezeigt habe. Mal ein wenig Theorethie *gg*
Durch cBool wandelst du den Audruck in ein Boolschen Wert um!
Mal ein kleine Bsp:
Dim v1 as integer
Dim v2 as intreger
Dim b as Boolean
V1=0
V2=1
B=cbool(v1) --\> B ist False
B=cbool(V2) --\> B ist True
v2=15
b=cbool(v2) --\> B ist true
Wie du erkennst liefert Cbool mit dem Argument einer Zahl nur dann False wenn dieser 0 ist. Ist dieser aber ungleich 0 so liefert er true.
Nun aber zu deinem Source
> cmdRechnen.Enabled = CBool(Len(txtWareneingangEingabe) \> 0 +
> CBool(Len(txtRollenEingabe) \> 0))
Was machst du hier? Ist txtWareneingangEingabe > 0 dann bekommst du ein True. Das selbe machst du mit txtRollenEingabe. Nun versuchst du 2 Boolsche Werte miteinander zu addieren! Prinbzipiell geht es da True auch als -1 interpretiert wird und False als 0
Gehen wir mal nun von dem Sachverhalt eine der Textboxen ist gefuellt, so versuchst du nun -1 + 0 zu rechnen. Das diese wiederrum -1 ist, ist klar. -1 ist ungleich 0 und ergo TRUE!
Mache es doch so, wie ich es dir beschrieben habe!
Sprich
Control.Enabled= Len(txt1)>0 and len(txt2)>0 and len(txt3)>0)
Was geschieht hier?
Len(Object) liefert dir die Länge. Ist sie Null so bekommst du eine 0. Ist sie länger so bekommst du einen Wert >0
Nun kommt aber das wichtige. Die Verknüpfung!! Du verknüpfst sie mit AND.
Weisst du wie man einen Ausdruck mit AND vergleicht? Also Rechnerisch?
Nein ? Ok hier mal ein Bsp.
Zahlen werden intern Binaer dargestellt.
Binaer schaut die 0 so aus
00000000
Die 1
00000001
und zum Bsp. die 13
00001101
Warum diese nun schauen wir mal. Wir vergleichen die 3 mit and
00000000
AND
00000001
AND
00001101
Binaere Zustaende gibt es nur als 1 oder 0. Sind alle Werte 1 am gleichen Bit, so wird bei einer AND Verknüpfung das Resultat 1! Ansonsten 0!
Nun rechnen wir mal
Bit 7: 1 AND 1 AND 0 -> 0
Bit 6: 0 AND 0 AND 0 --> 0
Bit 5: 1 AND 0 AND 0 -> 0
Das Ergebiniss würde also 0 Sein! O wiederrum ist False. Also bekommst du nun ein False geliefert!
Versuche das nun mal mit deinem Versuch! Eine Negative Zahl wird binaer wiefolgt dargstellt. Das oberste Bit ist eine 1! das sagt das sie negativ ist. Deswegen kannst du nur noch Wert bis 126 darstellen, da das 7 Bit fehlt.
Rechnen wir nun mal
00000000 -> False
+
10000001 -> True
10000001 -> TRUE!!!
So nun hoffe ich mal das du einen kleinen Einblick bekommen hast
Deine Abfragen müssten in den 4 Ereignissen ( 3 mal Change und einmal Initialize) wie folgt lauten.
Ausdruck wird länger *gg* Also makieren und ganz nach rechts ziehen
cmdRechnen.enabled=cBool(len(txtWarenEingangEingabe)\>0 **AND** len(txtWarenAusgangEingabe)\>0 **AND** len(txtRollenEingabe)\>0)
Gruß Skaletti!
MfG Alex