GUI: Get Button Labels from Ini file

Hilfe & Unterstützung für das ISN AutoIt Studio
Antworten
spongioblast
Beiträge: 4
Registriert: Do 9. Feb 2017, 22:13
Kontaktdaten:

GUI: Get Button Labels from Ini file

Beitrag von spongioblast »

Hi

Could somebody point me in the right direction on how to get the gui button labels from an ini file? I saw the text from func. Option but I'm not sure how to use it. Further I would like to assign all the button labels with one function. I am fully aware on how to read the ini file into variables. Auch auf Deutsch natürlich =)

Thanks!
Benutzeravatar
ISI360
Administrator
Beiträge: 322
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: GUI: Get Button Labels from Ini file

Beitrag von ISI360 »

Hallo!

Wie du schon richtig erkannt hast, musst du zuerst "Text from Func" aktivieren. Das bedeutet die angegebene Funktion liefert den Text für deinen Button Zurück.

Zum Beispiel:
Im Formstudio wird folgendes bei Text from Func eingetragen: _Textfunc("inikey")

In deinem Skript legt du dann folgende Funktion an:

Code: Alles auswählen

func _Textfunc($inikey)
return iniread("C:\temp\test.ini","sektion",$inikey,"fehlerwert")
endfunc
Wie gesagt die Funktion _Textfunc gibt also mit return das Ergebnis von iniread an den Button zurück. In diesem Fall der Text aus einer INI Datei.

Hoffe das Hilft dir!
spongioblast
Beiträge: 4
Registriert: Do 9. Feb 2017, 22:13
Kontaktdaten:

Re: GUI: Get Button Labels from Ini file

Beitrag von spongioblast »

Hallo!

Super vielen Dank, funktioniert auch einwandfrei.

Gerne würde ich jetzt noch die Buttens verstecken, welche kein text im ini file hinterlegt haben. Jedoch funktioniert

Code: Alles auswählen

	GUICtrlSetState (@GUI_CtrlId, $GUI_HIDE )
nicht da die Labelfunction ja nicht direkt vom Label aufgerufen wird und somit @GUI_CtrlId nicht definiert ist. Gibt es einen weg, diese zu verstecken?

Folgendes funktioniert, leider nur für die front oberfläche und nicht bei mehreren Tabs:

Code: Alles auswählen

Func _HideEmptyButtons()
    Local $aWin = _WinAPI_EnumChildWindows($GUIHandle)
    _ArrayDelete($aWin, 0)
    Local $aFinal[UBound($aWin)][4]
    For $1 = 0 To UBound($aWin) - 1
        $aFinal[$1][0] = $aWin[$1][0]
        $aFinal[$1][1] = $aWin[$1][1]
        $aFinal[$1][2] = _WinAPI_GetWindowLong($aFinal[$1][0], $GWL_ID)
        $aFinal[$1][3] = ControlGetText('', '', $aFinal[$1][2])
    Next
	For $b = 1 to UBound($aFinal) - 1
		IF $aFinal[$b][1]= "Button" AND $aFinal[$b][3]= ""  Then
			GUICtrlSetState($aFinal[$b][2], $GUI_HIDE);control id
		EndIf
	Next
    ;_ArrayDisplay($aFinal, 'Active Window Control Enumeration', '', 0, Default, 'HWND|CLASS|CTLID|TEXT')
EndFunc   ;==>_Show
Danke und Gruss

PS: Gibt es auch einen Donate Button irgendwo?
Benutzeravatar
ISI360
Administrator
Beiträge: 322
Registriert: Fr 11. Okt 2013, 13:06
Kontaktdaten:

Re: GUI: Get Button Labels from Ini file

Beitrag von ISI360 »

Freut zu hören ;)

Hmm nunja hier führen sicher mehrere Wege zum Ziel. Du könntest zb. den betroffenen Controls im Formstudio etwas Extracode hinzufügen.

Zb.:

Code: Alles auswählen

_my_hide_func($control_handle) ;Du kannst hier durchaus $control_handle stehen lassen. Das Formstudio ersetzt das ganze später selbst ;)
Und hier die Funktion:

Code: Alles auswählen


func _my_hide_func($handle)
if guictrlread($handle) = "" then GUICtrlSetState ($handle, $GUI_HIDE) ;Wenn Text = "", dann verstecke das Control
endfunc

Nachteil ist natürlich hier, dass du jedem Control diesen Extracode anhängen müsstest. Wie gesagt..mehrere Wege...


Ups, da hab ich direkt den Spenden Button auf der neuen Homepage vergessen. :P
Sollte nun auch wieder da sein. (Links unter dem Menü) Alternativ geht´s auch direkt im ISN unter Hilfe -> Spenden.
Danke <3
Antworten