Werte der Variablen "verschwunden"??

  • Hallo,
    ich bin grad dabei, mir ein nettes Tool mit Autoit neu aufzubauen. Hab alle Formeln etc. bisher mit Excel gebastelt, jetzt soll das ganze aber ne eigenständige Software werden.
    Aber entwederbin ich zu blöd oder blind..oder seh nach zweit Tagen suchen einfach wirklich nichts mehr.
    Der erste Schritt soll sein, die Werte zweier Slider zu addieren, wobei der Wert von Slider 1 verdoppelt wird. Damit ich mit den Werten weiterarbeiten kann, sollen diese praktischerweise einer Variablen zugewiesen werden.
    Soweit, das die Slider den Wert in eine Inputbox schreiben bin ich dann schon. Ebenso, dass sich der Slider der Eingabe in der Inputbox anpasst und die Limits einhält. Sogar mit der Maus gehts ;)
    Und dieser Logik folgend, wollte ich mit GUICTRLREAD den jeweiligen Wert auslesen und als Variable weiterbenutzen.
    Aber entweder bekomm ich gar nix angezeigt oder die ID des Controls...
    Ich habe auch schon fleissig die Liste aller Variablen, die drinstecken aufgebaut um Sie mir anzeigen zu lassen...Ergebnis dito. Das Ding muß doch jetzt erstmal nicht viel machen...Werte in Variable schreiben, nach Formel zusammenrechnen und das Ergebnis als sich dynamisch änderner Wert in einem Label anzeigen...das kann doch nicht so schwer sein...

    Hab das gefrickel mal mit drangehängt...und so ein Schubs in die richtige Richtung wäre echt hilfreich!

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <Constants.au3>
    #include <DateTimeConstants.au3>
    #include <ListboxConstants.au3>
    #include <ListviewConstants.au3>
    #include <ProgressConstants.au3>
    #include <TabConstants.au3>
    #include <TreeviewConstants.au3>
    #include <UpdownConstants.au3>
    #include <Math.au3>
    #include <String.au3>
    #include <GuiSlider.au3>

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

    Opt("MustDeclareVars", 1)

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

    ; Globale Variablen und Konstanten
    Global $oldSliderValue1, $oldinputValue1, $oldSliderValue2, $oldinputValue2
    Global $fs_Slider, $fs_input, $fs_wert, $fs, $hfs_Slider, $fs_Limit
    Global $mw_Slider, $mw_input, $mw_wert, $mw, $hmw_Slider, $mw_Limit
    Global $hWnd, $Msg, $wParam, $lParam
    Global $mp_Label

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

    ; Hauptfenster
    GUICreate("SDMultitool by Alexander Knapp", 800, 600, 321, 129)
    ; Bedienelemente
    GUICtrlCreateLabel("Gewebewerte eingeben:", 15, 50, 171, 20)
    GUICtrlCreateLabel("Fadenstärke:", 15, 73, 83, 20)
    GUICtrlCreateLabel("Maschenweite:", 15, 93, 93, 20)

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

    ;Wert für Fadenstärke - Slider, direkte Eingabe, Mausrad oder Cursortasten möglich
    $fs_Slider = GUICtrlCreateSlider(180, 70, 100, 20, BitOR($TBS_NOTICKS, $TBS_TOOLTIPS, $TBS_ENABLESELRANGE))
    $fs_Limit = GUICtrlSetLimit(-1, 300, 0) ; change min/max value
    $hfs_Slider = GUICtrlGetHandle(-1)
    $fs_input = GUICtrlCreateInput ("0", 140, 70, 30, 20, $ES_NUMBER)

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

    ;Slider für Maschenweite - Slider, direkte Eingabe, Mausrad oder Cursortasten möglich
    $mw_Slider = GUICtrlCreateSlider(180, 90, 100, 20, BitOR($TBS_NOTICKS, $TBS_TOOLTIPS, $TBS_ENABLESELRANGE))
    $mw_Limit = GUICtrlSetLimit(-1, 999, 0) ; change min/max value
    $hmw_Slider = GUICtrlGetHandle(-1)
    $mw_input = GUICtrlCreateInput ("0", 140, 90, 30, 20, $ES_NUMBER)

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

    $mp_Label = GUICtrlCreateLabel ("Mindestpunktgröße:" & $fs_wert*2+$mw_wert , 15, 120)
    $fs_wert = GUICtrlRead($fs_Slider)
    $mw_wert = GUICtrlRead($mw_Slider)

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

    ;Systeminformationen
    GUICtrlCreateLabel ("aktuelle IP: " & @IPAddress1, 650, 585)

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

    ;GUI: Anzeigen bei Start
    GUISetState(@SW_SHOW)

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

    ; Sliderwert auslesen und in Inputfeld schreiben

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

    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

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

    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $fs_Slider
    GUICtrlSetData($fs_input, GUICtrlRead($fs_Slider))
    Case $fs_input
    GuiCtrlSetData($fs_Slider, GUICtrlRead($fs_input))
    GUICtrlSetData($fs_input, GUICtrlRead($fs_Slider)) ; für ungültige Werte
    Case $mw_Slider
    GUICtrlSetData($mw_input, GUICtrlRead($mw_Slider))
    Case $mw_input
    GuiCtrlSetData($mw_Slider, GUICtrlRead($mw_input))
    GUICtrlSetData($mw_input, GUICtrlRead($mw_Slider)) ; für ungültige Werte
    EndSwitch
    WEnd

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

    Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
    If $lParam = $hfs_Slider Then
    GUICtrlSetData($fs_Input, GUICtrlRead($fs_Slider))
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Einmal editiert, zuletzt von Pixelwizard (31. Januar 2012 um 11:18) aus folgendem Grund: Das Hauptanliegen hat sich ja bereits längsthin gelöst, der Rest tangiert ja andere Themen.

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    #include <EditConstants.au3>
    #include <SliderConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <AVIConstants.au3>
    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <Constants.au3>
    #include <DateTimeConstants.au3>
    #include <ListboxConstants.au3>
    #include <ListviewConstants.au3>
    #include <ProgressConstants.au3>
    #include <TabConstants.au3>
    #include <TreeviewConstants.au3>
    #include <UpdownConstants.au3>
    #include <Math.au3>
    #include <String.au3>
    #include <GuiSlider.au3>

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

    Opt("MustDeclareVars", 1)

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

    ; Globale Variablen und Konstanten
    Global $oldSliderValue1, $oldinputValue1, $oldSliderValue2, $oldinputValue2
    Global $fs_Slider, $fs_input, $fs_wert, $fs, $hfs_Slider, $fs_Limit
    Global $mw_Slider, $mw_input, $mw_wert, $mw, $hmw_Slider, $mw_Limit
    Global $hWnd, $Msg, $wParam, $lParam
    Global $mp_Label

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

    ; Hauptfenster
    GUICreate("SDMultitool by Alexander Knapp", 800, 600, 321, 129)
    ; Bedienelemente
    GUICtrlCreateLabel("Gewebewerte eingeben:", 15, 50, 171, 20)
    GUICtrlCreateLabel("Fadenstärke:", 15, 73, 83, 20)
    GUICtrlCreateLabel("Maschenweite:", 15, 93, 93, 20)

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

    ;Wert für Fadenstärke - Slider, direkte Eingabe, Mausrad oder Cursortasten möglich
    $fs_Slider = GUICtrlCreateSlider(180, 70, 100, 20, BitOR($TBS_NOTICKS, $TBS_TOOLTIPS, $TBS_ENABLESELRANGE))
    $fs_Limit = GUICtrlSetLimit(-1, 300, 0) ; change min/max value
    $hfs_Slider = GUICtrlGetHandle(-1)
    $fs_input = GUICtrlCreateInput("0", 140, 70, 30, 20, $ES_NUMBER)

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

    ;Slider für Maschenweite - Slider, direkte Eingabe, Mausrad oder Cursortasten möglich
    $mw_Slider = GUICtrlCreateSlider(180, 90, 100, 20, BitOR($TBS_NOTICKS, $TBS_TOOLTIPS, $TBS_ENABLESELRANGE))
    $mw_Limit = GUICtrlSetLimit(-1, 999, 0) ; change min/max value
    $hmw_Slider = GUICtrlGetHandle(-1)
    $mw_input = GUICtrlCreateInput("0", 140, 90, 30, 20, $ES_NUMBER)

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

    $mp_Label = GUICtrlCreateLabel("Mindestpunktgröße:" & $fs_wert * 2 + $mw_wert, 15, 120, 200, 17)

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

    ;Systeminformationen
    GUICtrlCreateLabel("aktuelle IP: " & @IPAddress1, 650, 585)

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

    ;GUI: Anzeigen bei Start
    GUISetState(@SW_SHOW)

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

    ; Sliderwert auslesen und in Inputfeld schreiben

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

    GUIRegisterMsg($WM_HSCROLL, "WM_HSCROLL")

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

    While True
    $fs_wert = GUICtrlRead($fs_Slider)
    $mw_wert = GUICtrlRead($mw_Slider)
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $fs_Slider
    GUICtrlSetData($fs_input, GUICtrlRead($fs_Slider))
    GUICtrlSetData($mp_Label, "Mindestpunktgröße:" & $fs_wert * 2 + $mw_wert)
    Case $fs_input
    GUICtrlSetData($fs_Slider, GUICtrlRead($fs_input))
    GUICtrlSetData($fs_input, GUICtrlRead($fs_Slider)) ; für ungültige Werte
    GUICtrlSetData($mp_Label, "Mindestpunktgröße:" & $fs_wert * 2 + $mw_wert)
    Case $mw_Slider
    GUICtrlSetData($mw_input, GUICtrlRead($mw_Slider))
    GUICtrlSetData($mp_Label, "Mindestpunktgröße:" & $fs_wert * 2 + $mw_wert)
    Case $mw_input
    GUICtrlSetData($mw_Slider, GUICtrlRead($mw_input))
    GUICtrlSetData($mw_input, GUICtrlRead($mw_Slider)) ; für ungültige Werte
    GUICtrlSetData($mp_Label, "Mindestpunktgröße:" & $fs_wert * 2 + $mw_wert)
    EndSwitch
    WEnd

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

    Func WM_HSCROLL($hWnd, $Msg, $wParam, $lParam)
    If $lParam = $hfs_Slider Then
    GUICtrlSetData($fs_input, GUICtrlRead($fs_Slider))
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_HSCROLL

    [/autoit]


    Ich versteh net was du genau machen willst und hab mal geraten.
    Du hast in deinem Script erst das Label mit der Ausrechnunbg der Vriablen erstellt und dann die Variablenwerte ausgelesen und das bevor die GUI überhaupt abgefragt wird.
    Somit ist der Wert des Label fest auf 0 :!:

  • Naja was erwartest du was da nun passiert? Deine Formel / Rechnung erfolgt ja bereits ganz am Anfang, noch bevor überhaupt Werte gesetzt wurden.

    [autoit]


    $mp_Label = GUICtrlCreateLabel ("Mindestpunktgröße:" & $fs_wert*2+$mw_wert , 15, 120) ; fs_wert und mw_wert sind nur deklariert, haben also eine 0 als Wert
    $fs_wert = GUICtrlRead($fs_Slider) ; schön nun hast du eine 0 gespeichert, weil dein slieder noch keinen Wert hat
    $mw_wert = GUICtrlRead($mw_Slider) ; same here

    [/autoit]


    Pack das ganze in eine Funktion:

    [autoit]


    ;Gui:
    $mp_Label = GUICtrlCreateLabel ("Mindestpunktgröße:", 15, 120)

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

    while
    case $blabla ; hier eben in jeden case einbauen der die werte Veränderung registriert
    rechnung()
    wend

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

    ;nach deiner while Schleife:

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

    func rechnung()
    $fs_wert = GUICtrlRead($fs_Slider)
    $mw_wert = GUICtrlRead($mw_Slider)
    $ergebnis=$fs_wert*2+$mw_wert
    guictrlsetdata($mp_label,"Mindestpunktgröße: " & $ergebnis)
    endfunc

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]
  • Ja, so sollte das werden--- hmpf...
    Also wenn ich das jetzt richtig verstanden habe, hab ich fröhlich Variablen definiert, die aber gar nix machen konnten...
    Da hab ich mich wohl etwas irritieren lassen, das die Werte ja vom Slider ins inputfeld geschrieben werden - und ja damit eigentlich irgenwo hätten dirnstecken müssen...
    Das werd ich mir jetzt einfach nochmal genau anschauen. Wohl zu einfach gedacht ;)
    Danke erstmal!

  • Soooo...

    So ein Schubs in die richtige Richtung wirkt doch manchmal. Noch ein bischen zusätzlich gelesen, da hat sich allerdings noch eine Frage nebenbei ergeben...

    Wie bringe ich einem Slider bei, mit zwei Nachkommastellen zu arbeiten? ....

    Werd mich mal durch die Hilfen hangeln, soll ja schließlich Lerneffekt dabei rauskommen.

    So long und gute Nacht!

  • Soooo...

    So ein Schubs in die richtige Richtung wirkt doch manchmal. Noch ein bischen zusätzlich gelesen, da hat sich allerdings noch eine Frage nebenbei ergeben...

    Wie bringe ich einem Slider bei, mit zwei Nachkommastellen zu arbeiten? ....

    Werd mich mal durch die Hilfen hangeln, soll ja schließlich Lerneffekt dabei rauskommen.

    So long und gute Nacht!

    slider selbst können glaub ich nur integerwerte, da musste manuell umrechnen.
    ich steuere mit einem slider z.b. die gammafunktion von irfanview, die geht ja von 0.01 bis 1.00
    mein slider geht von 1 bis 100 und anwenden tu ich es dann so:

    PHP
    /gamma="&GUICtrlRead($slider)/100&
  • Ja, das mit dem Slider stell ich derzeit mal noch hinten an. Denn selbst wenn die eigentliche Ausgabe Nachkommastellen enthält, muss ich da doch noch so einige Dinge "fressen".
    Die Schrittweite im Slider muss ja dann auch entsprechend angepasst werden, dh. Schritt wäre dann nicht 1 sondern 0,01...
    Ich denke mal, das Input-Feld wird da auch nicht so das Problem. Naja, im Augenblick funktioniert das ganze schon -fast- so wie ich es gerne hätte, das Feintuning tu ich mir dann später an ;).
    Zeitweise hab ich mal bei QT Creator quergeschaut, da kann man das wohl direkt angeben.
    Andererseits hat auch Excel nicht direkt die Möglichkeit, die Slider mit Nachkommastellen zu verarbeiten, da habe ich ja auch ein ähnliches Konstrukt mit Teiler verwendet. Ergo hiesse das ja, wenn ich zwei Nachkommastellen haben will, das ganze /100 und das SliderLimit entsprechend *100 - dann sollte das Inputfeld ja den beabsichtigten Wert korrekt anzeigen...
    Tooltip raus, dann sieht das ganze auch sauber aus, falls dieser nicht entprechend mitmacht ,)

    Also bisher bin ich mit den kleinen Schubsern gut weitergekommen, wenn das Teil fertig ist (das wird ein "Taschenrechner" für Druckvorstufenparameter) stell ich es gerne mal hier rein zu begutachtung. Das wird aber noch etwas dauern, ich knabber mich eben Frage für Frage durch, probiere aus, Lerne also by doing. Obwohl die Dauercoder wahrscheinlich vieles viel simpler lösen könnten (würden) -das ist dann aber erstmal der nächste Schritt.

    Derzeit habe ich eher das Problemchen, dass es ewig dauert, auf die Slider zugreifen zu können, so als ob das Programm etliche Sekunden braucht, sich zu "initialisieren". Oder irgendwas läuft doppelt oder so. Daher werden jetzt erstmal die vier Slider "schnell" gemacht, bevor noch mehr Funktionen eingebaut werden ,)

    Das ganze muß sauber und schnell laufen, denn es solen noch wesentlich komplexere Funktionen eingebaut werden, für die die jetzt ermittelten Parameter die Grundalge bilden. Ist ne formelsache, aber wenn das 2 Minuten dauert bis das Prog einsatzbereit ist, ein KO-Kriterium.

    Jetzt erstmal Prototyp bauen, dann tunen ;)

    • Offizieller Beitrag

    Wie bringe ich einem Slider bei, mit zwei Nachkommastellen zu arbeiten?


    Das geht nur grob. Du kannst den Slider nicht auf Hunderstel bewegen (so groß sind Monitore i.A. nicht ;)). Die kleinste Bewegung eines Sliders ist ein Pixel und die Angaben sind in Prozent erforderlich. Hat der Slider eine Länge von 100 px, so steht jedes Pixel für den Wert 1.
    Ist er 200 px lang, kannst du also mit der Schrittweite: 100% / 200 px = 0,5 arbeiten. D.h. ab einer Sliderlänge von 10.000 px hast du eine Schrittweite von 0,01. :D

    Das kannst du aber recht simpel lösen: Das Uhr-Prinzip. Ein Wert läuft auf Maximum und erhöht den nächsten Zähler, setzt sich selbst zurück, usw. Einfach mit Zahlenlabel/Input arbeiten und für Feinjustierung Slider verwenden.

  • C.O.O.L:

    Sliderthema hat sich soweit erledigt
    Und das mit dem Speed auch - lag daran, das das Labelfeld die anderen Felder überlagert hat....so simpel.
    Jetzt geht das ganze mit Karacho, die Rechenwerte stimmen soweit auch - that's what i like.

    So, damit kann ich jetzt zuschaun, die anderen Parameter korrekt zu berechnen un Ausgeben zu lassen.
    ...und dann wirds bunt ;)

    Danke für die Tipps!

  • Also, nur nochmal kurz zur Parameterlösung Nachkommastellen:
    Da ich für den Slider, resp. den Wert,den er zurückgibt, die Nachkommastellen brauche, bin ich der Variante gefolgt, den eigentlichen Wert /100 und das Limit *100 - damit erzeuge ich genau die Wertausgabe die ich brauche. Mit den Cursortasten lässt sich dann der Wert in 0.01-Schritten ohne weiteres erhöhen.
    Das ist beim ersten anklicken noch leicht "unrund", daher habe ich dann schonmal einen festen ausgangswert reingeschrieben. Kosmetik und noch nicht perfekt, aber im Augenblick locker ein 95%er ;)
    Den Tipp mit der Sliderbreite werde ich mal ausprobieren - derzeit ist das ding 80px breit, dann sollte ich ja doch eine bessere Sklaierung hinkriegen wenn ich das Ding auf 100px einstelle.

  • Hallo Gemeinde, und lustig gehts weiter ;)

    Jetzt soll das ganze bunt werden, sprich ich möchte den Hintergrund der Labels einfärben. Habe jetzt schon diverse Konstrukte ausprobiert, die grundsätzlich auch das tun, was ich möchte, nur leider nicht in gänze.
    Aaaalso...über verschiedene Berechnungen errechne ich mir einen Wert, den ich in die Variable $mp setze.
    Weiterhin berechne ich 99 Werte, die in den Variablen $p1 bis $p99 landen. bis dahin auch alles im grünen Bereich. In meinem GUI bekomme ich die Werte korrekt angezeigt.
    Im Konstrukt habe ich für die Hintergrundfarbe der jeweiligen Label jetz letztendlich folgende Bauweise reingebastelt:
    $pcolor = GUICTrlSetBKcolor(-1, $white)
    diese Zeile findet sich unter jedem Label, welches ich einfärben möchte.

    Damit man jetzt erkennen kann, ob ein Wert OK --> grün ist, soll jetzt der $pXX mit dem $mp verglichen werden. Ist $pXX größer als $mp soll der Hintergrund grün werden, im anderen Falle rot.

    Hierzu dachte ich an folgende Konstruktion:

    If $p1 > $mp Then GUICtrlSetData($pcolor, GUICTrlSetBKColor(1,0x00ff00))
    If $p1 < $mp Then GUICtrlSetData($pcolor, GUICtrlSetBKColor(1,0xff0000))
    ...
    If $p99 > $mp Then GUICtrlSetData($pcolor, GUICTrlSetBKColor(1,0x00ff00))
    If $p99 < $mp Then GUICtrlSetData($pcolor, GUICtrlSetBKColor(1,0xff0000))

    Komischerweise funktioniert das immer nur für die jeweils letze Label, ich würde doch aber annehmen, das überall, wo später $pcolor steht, die entsprechende Bedingung greift?

    Oder überseh ich da wieder eine Kleinigkeit?

    Mit if..else hab ich auch schon gebastelt, das Ergebnis ist entsprechend...es greift immer nur für das letzte Label.

    alternativ werde ich jetzt mal die $pcolor ebenfalls fortlaufend numerieren...

    Mal sehen wies inner Stunde aussieht ,) So long!

    • Offizieller Beitrag

    99 Label die immer in $pcolor gespeicht werden geht nicht.
    Solltest du alle Label mit dieser Variable erstellt haben, dann befindet sich in $pcolor das ControlId des letzen erstellten Labels.
    Das rumraten kannst du uns aber auch ersparen, wenn du deinen aktuellen Quellcode in Thread postest.

    PS: Für die Anzeige der Werte in 99 Labels, solltest du dein Script auf ein Array umbauen, genau wie die zu vergleichenden Werte.
    Es ist wesentlich einfacher alle Werte eines Array abzufragen und die Werte der 99 verbundenen Labels zu setzen.

    Solch eine Abfrage ist eine Sache von wenigen Zeilen, im Gegensatz zu deinen min. 300 Zeilen die deine Abfrage jetzt schon haben muß.

  • Naja, der Code ist schon enorm gewachsen, deswegen nicht gepostet. Mir gings ja ums Verständnis und die Erklärung mit der ID hilft ja denn auch entsprechend weiter und erklärt ja das - jetzt nicht mehr - seltsame Verhalten.

    Das kommt davon, wenn Typographen anfangen zu Programmieren ,)

    Dann werd ich jetzt mal fröhlich Nummern vergeben bzw. mir ne andere Variante einfallen lassen ,) - damit geht das Proggi denn auch ins Finale, ich packs dann gerne mal komplett hier rein, damit ihr auch sehen könnt was aus den Tipps geworden ist.

    • Offizieller Beitrag

    Na dann bastel mal schön weiter.

    Ich denke dein Script kannst du mit Arrays um 90 % kürzen.
    Sell dir mal vor: 99 Labels erstellen und dazugehörende Hintergundfarbzuteilung sind 198 Zeilen Code.
    Das selbe kann man auch locker in 10 Zeilen Code bewältigen.
    Wenn du z.B. die Farbe der Labels ändern willst und es nur 2 Abfragewerte gibt, dann sind es wieder unter 10 Zeilen Code im
    Gegensatz zu 198 Zeilen Code, nur um Werte an 99 Labels abzufragen und zu setzen.
    Ich kenne die Grundangst fast aller "Neulinge" was Arrays angeht, aber die sind nix anderes als ein Stapel von Variablen.

    Edit: Ich sehe gerade das du dich am 11. Dezember 2008 registriert hast, also net angegriffen fühlen, wenn ich "Neuling" geschrieben habe :rolleyes:
    Deine Fragestellung und Grundwissen deuten auf einen Frischling hin. :D

  • Jau, das mit der Anmeldung ist schon ne Weile, hatte damals so die ersten Versuche gemacht,
    deswegen ist das mit Neuling trotzdem durchaus korrekt ;)
    Zeigt eigentlich auch die Geschichte des Tools - für den Anfang wars zuviel, dann erstmal in Excel gebaut bis alles soweit im grünen Bereich - und erst jetzt die Umsetzung. Das hat mir eigentlich auch jede Menge arbeit gespart, weil das Konzept ja fertig ist (über die Entwicklungszeit ,mit Excel).

    Das mit den Arrays werde ich mir ganz sicher antun, dennoch habe ich das ganze erstmal zu Fuß gestrickt - damit ich hinterher auch kapiere, welche Funktionen sich wie durch die Arraymethode vereinfacht haben.

    Ich schieb mal das bisherige Ergebnis rein... ich weiß, da lässt sich mit Sicherheit sehr vieles wesentlich einfacher machen - aber letztlich will ich ja auch lernen.

    ..z. B. das das Teil gleich die Ergebnisse der voreingestellten Werte anzeigt und nicht erst, wenn man eine Control verändert hat.
    Das sind aber Feinheiten, die es Spaß macht herauszufinden. damit kann man Methoden verfeinern und ist besser für die nächsten Schritte gerüstet ,). Das sind dann Fragen bzw. da geht es nicht unbedingt um eine fertige Lösung, sondern z. B. darum, ob dann der Weg über das Stichwort onEvent zum Ziel führt oder nicht...

    So long!