Variablenname ermitteln

  • Hi,

    ich hab mal ne etwas ungewöhnlich Frage:

    über

    local $cfocus= ControlGetFocus ([GUI-Name])
    local $chandle = ControlGetHandle([GUI-Name], "", $cfocus)

    kann ich ja das "Handle" des gerade focussierten Eingabefeldes ermitteln.

    Ist es aber auch möglich, den, hinter dem Eingabefeld stehenden Variablennamen zu ermitteln?

    D.h. wenn ich über

    $test = GUICtrlCreateInput(...)

    ein Feld erzeugt, einer Variable zugewiesen habe und dieses fokussiert ist...
    kann ich dann irgendwie an den Variablenname kommen.
    Ist etwas kompliziert zu erklären, warum ich diese Funktion brauche.

    Ich weiß natürlich, dass das folgende möglich ist:

    local $cfocus= ControlGetFocus ([GUI-Name])
    local $chandle = ControlGetHandle([GUI-Name], "", $cfocus)

    Switch $chandle
    Case GUICtrlGetHandle($test)
    ; Der Variablenname = "test"
    EndSwitch

    Das Problem in meinem Fall ist aber, dass die Variablennamen dynamisch erzeugt werden, d.h. ich kann den oben genannten Switch/Case Vergleich nicht machen, weil ich KEINE Ahnung habe, wie die Variable heißen könnte (die Namen werden aus einer Datenbank gelesen...)

    Bin für jeden Tipp dankbar.

    Viele Grüße

    Daniel

  • Auf die schnelle würde ich vorschlagen, die Variablen beim Erzeugen zusätzlich in ein Array schreiben, und so irgendwie dann das Switch gestalten, oder auch ein For-Loop mit einem if.
    Habe aber keine Ahnung, ob das funktionieren kann.

  • Hi,

    das wäre auch meine letzte Lösung geworden.
    Ist halt noch mal ein Array und ich dacht, wenn man das auch irgendwie anders abfragen kann wär edel.
    Aber dann mach ichs so.

    Dankschee und viele Grüße

    Daniel

  • [autoit]

    Func _GetCtrlID($hCtrl)
    ; $hCtrl = Control Handle
    Local $aID = DllCall("User32.dll", "Int", "GetDlgCtrlID", "HWND", $hCtrl)
    Return $aID[0]
    EndFunc

    [/autoit]