Calculator

  • Hi Leutz

    Also Ich versuch grad einen einfacen rechner zu basteln.

    Ich hab versucht das über GUI zu machen aber ich kenn mich null aus.

    Ich hab da also mein fenster dann 3 inputs (

    $Res = GuiCtrlCreateInput("R Input Box", 235, 225, 130, 20)
    $Uvol = GuiCtrlCreateInput("U Input Box", 235, 245, 130, 20)
    $Icur = GuiCtrlCreateInput("I Input Box", 235, 265, 130, 20)

    etc.

    und einen Button.

    Also das soll so funzen: Die formel is immer fix nach der die eingaben aufgelöst werden.. ( U=R*I) kennen ja die meisten.

    Das soll jetzt so arbeiten.:

    Ich geb 2 der werte ein und der 3te steht dann in seinem eingabe fenster. Also ich geb u und i ein und nach r wird aufgelöst, wenn aber u und r dann wird nach i aufgelöst etc.

    Gibts da schon was oder kann mir da jemand einen tipp geben wie man sowas macht . Ich hab dann auch vor das auf andere Formeln auszuweiten.

    zb.: P=U*I*cos Phi ... etc.

    Besten Dank für eure Infos. :rock:

  • Aha Elektriker, gefällt mir :D !!

    [autoit]

    $U = GUICtrlRead($Uvol)
    $R = GUICtrlRead($Res)
    $I = GUICtrlRead($Icur)

    [/autoit][autoit][/autoit][autoit]

    If (IsFloat($U) Or IsInt($U)) And (IsFloat($R) Or IsInt($R)) Then GUICtrlSetData($Icur, $U / $R)
    If (IsFloat($U) Or IsInt($U)) And (IsFloat($I) Or IsInt($I)) Then GUICtrlSetData($Res, $U / $I)
    If (IsFloat($R) Or IsInt($R)) And (IsFloat($I) Or IsInt($I)) Then GUICtrlSetData($Uvol, $R * $I)

    [/autoit]
    • Offizieller Beitrag

    So z.B., Zahlen eingeben - mit Enter oder Tab nach der (zweiten) Zahl - das löst das Event aus.

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstants.au3>
    Opt('GUIOnEventMode', 1)
    Global $isR = False, $isU = False, $isI = False

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate('Test')
    GUISetOnEvent($GUI_EVENT_CLOSE, 'ende')
    GUICtrlCreateLabel('R: ', 15, 15, 30)
    $R = GUICtrlCreateInput('', 50, 15, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    GUICtrlSetOnEvent(-1, '_R')
    GUICtrlCreateButton('clear', 120, 15, 40, 20)
    GUICtrlSetOnEvent(-1, '_cR')
    GUICtrlCreateLabel('U: ', 15, 45, 30)
    $U = GUICtrlCreateInput('', 50, 45, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    GUICtrlSetOnEvent(-1, '_U')
    GUICtrlCreateButton('clear', 120, 45, 40, 20)
    GUICtrlSetOnEvent(-1, '_cU')
    GUICtrlCreateLabel('I: ', 15, 75, 30)
    $I = GUICtrlCreateInput('', 50, 75, 60, -1, BitOR($ES_RIGHT, $ES_AUTOHSCROLL))
    GUICtrlSetOnEvent(-1, '_I')
    GUICtrlCreateButton('clear', 120, 75, 40, 20)
    GUICtrlSetOnEvent(-1, '_cI')
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func ende()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _R()
    If GUICtrlRead($R) <> '' Then
    $isR = True
    Else
    $isR = False
    EndIf
    If $isR And $isU Then
    _calcI()
    ElseIf $isR And $isI Then
    _calcU()
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _U()
    If GUICtrlRead($U) <> '' Then
    $isU = True
    Else
    $isU = False
    EndIf
    If $isU And $isR Then
    _calcI()
    ElseIf $isU And $isI Then
    _calcR()
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _I()
    If GUICtrlRead($I) <> '' Then
    $isI = True
    Else
    $isI = False
    EndIf
    If $isI And $isU Then
    _calcR()
    ElseIf $isI And $isR Then
    _calcU()
    EndIf
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _calcR()
    GUICtrlSetData($R, StringFormat('%.2f', GUICtrlRead($U)/GUICtrlRead($I)))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _calcU()
    GUICtrlSetData($U, StringFormat('%.2f', GUICtrlRead($R)*GUICtrlRead($I)))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _calcI()
    GUICtrlSetData($I, StringFormat('%.2f', GUICtrlRead($U)/GUICtrlRead($R)))
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _cR()
    GUICtrlSetData($R, '')
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _cU()
    GUICtrlSetData($U, '')
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _cI()
    GUICtrlSetData($I, '')
    EndFunc

    [/autoit]
  • Besten Dank erst mal . Ich fang erst an mit Autoit. Also Ihr werdet noch von mir hören. Aber , es ist auch noch kein Meister vom Himmel gefallen. ( Auch wenn das manche von sich denken. Gruß an meine Professoren) :thumbup:

  • Hi nochmal

    Jetzt weis ich zwar wie das so aufgebaut gehört aber wenn ich das ganze jetzt erweitern möchte mit einem Menue ? :?:

    Also GuiCtrlCreateMenu("Ber.URI") GuiCtrlCreateMenu("Ber.PQS") GuiCtrlCreateMenu("R Farbcode")....etc.Da muss ich dann das ganze GUI neu zaubern oder? Ausserdem Sind die Variablen isR...etc global ( macht das was? )

    Ich hab mir das ja so vorgestellt das man : Programm aufruft Schönes Bild ( Beschreibung der einzelnen Menüpunkte), dann in das jeweilige menü geht und dort seine Berechnungen macht.

    Ich hab nur Absolut keinen Blassen Dunst Wie man so eine Auswahl macht. ?(

    Also mit Autoit Programme automatisch installieren is irgendwie besser beschrieben als so richtige Programme und Oberflächen zu machen

    Besten Dank fürs helfen. Ich muss das nur einmal kappieren dann kann ich es eh selber weiterbauen.

    Sorry wenn ich Euch irgendwie auf die Nerven geh mit meiner Fragerei. :S

  • Also ich such was wie ich eine variable mit mehreren strings vergleichen kann und je nachdem was zutrifft einer anderen Variable einen Wert zuordnen kann.

    Ich hab mal was versucht aber irgendwie gehts nicht.


    Ich bekomm immer nur den Error Wert ?(

    Wieso wird der Wert nicht auf die Variable geschrieben? $isR1 sollte doch zb. bei "sw " den wert 0 oder bei "br" den Wert 1 annehmen.

    Das möcht ich 5 mal machen für jeden Ring, und dann Eben den Wert zusammenstellen.