events mit parameter?

  • Hallo Forum

    Ich habe 124 Label’s welche alle ein Klick-Event hat.

    Frage; ist es möglich dem Event-Verweis, Parameter mit zu geben? ?(
    Also zb:

    Code
    GUICtrlSetOnEvent($F,_Pos_melden($F))
    ;---------------------------------
    Func _Pos_melden($F)
    ToolTip($F)
    EndFunc

    Das es mit einem jeweils einzelnen Verweis auf die dafür definierte Function klappt ist mir bekannt.

    Dafür erscheinen mir aber Verweise für 124 Label’s zu aufwendig, da ich nur den Namen bzw. Position von dem angeklickten Label bräuchte.
    Info: Name = Position s. “ _ArrayDisplay($aWerte)“


    Danke für eure Hilfe
    Eugen


    Zum Testen:

    Spoiler anzeigen


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ColorConstants.au3>
    #include <GDIPlus.au3>
    #Include <Array.au3>
    Opt("GUIOnEventMode", 1)
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1",250, 250, 100, 100)
    ;$Pic1 = GUICtrlCreatePic("", 0, 0, 0, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Dim $aWerte[10][15]
    $FeldAnzW= 14
    $FeldAnzS=9
    $FeldB=15
    $GuiX=$FeldB*$FeldAnzW
    $GuiY=$FeldB*$FeldAnzS
    WinMove ($Form1,"",10,20,$GuiX+8,$GuiY+26)


    _Labelgitter()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit


    EndSwitch
    WEnd
    ;-----------------------
    Func _Labelgitter()
    Local $i=0
    Local $y=0
    ;GUICtrlSetImage ($Pic1, @Scriptdir&"\temp.bmp","",0)
    ;GUICtrlSetPos($Pic1,0.2,0.2,$GuiX+2,$Guiy+2)
    For $z=1 To $FeldAnzS
    For $x=1 To $FeldAnzW
    $F= GUICtrlCreateLabel("", $i, $y, $FeldB, $FeldB, $SS_SUNKEN)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetOnEvent($F,"_Pos_melden") ;DAS SOLLTE NOCH EIN PARAMETER MITTGEGEBEN WERDEN
    $aWerte[$z][$x]=$F
    $i=$i+$FeldB
    Next
    $i=0
    $y=$y+$FeldB
    Next
    ;GUICtrlSetBkColor ( 23, $COLOR_RED )
    _ArrayDisplay($aWerte)


    EndFunc
    ;-----------------------
    Func _Pos_melden()
    ToolTip("...")
    EndFunc

  • Mit @GUI_WinHandle kannst du abfragen welchen GUI-Element als letzten angeklickt wurde. Sprich du ruft mit allen Labels die Funktion ganz normal mit OnEvent auf und Prüfst dann mit @GUI_WinHandle welches Label geklickt wurde.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Alternativ geht auch @GUI_CtrlId oder @GUI_CtrlHandle. (Ersteres gibt die ID (also die Nummer) des Ctrls zurück, welches das Event ausgelöst hat und Letzteres das dazugehörige Handle)

    Edit: Wobei "alternativ" Falsch ist. Ergänzend wäre besser, da es um Labels geht...

    M

  • Einen großen Dank an chip und Mars
    Das war genau das richtige! :klatschen:
    Ich sollte die Hilfe genauer durchlesen, da ist es auch unter „GUICtrlSetOnEvent“ beschrieben.
    Zum Glück gibt es da ein tolles Forum mit super Mitglieder :thumbup:
    Danke euch beiden
    Eugen

  • Zu früh gefreut.
    Es hat zwar geklappt aber doch nicht. :S
    Nach dem ich ein Bild.bmp in den Picture (Pic1) als Hintergrund eingefügt hatte konnte ich das Label-Event nicht mehr ausführen.
    Wisst Ihr vielleicht dazu einen Tip?

    Nach Grafik setzen in Zeile 34-35, ist der Label-Evend nicht erreichbar. :huh:

    Zum testen sende ich auch die besagte Grafik im Anhang