Button Position abhängig von anderem button

  • Hallo erstmal
    Ich wollte mir grade ein kleines Tool zum starten von Software bauen.
    Ich wollte so gut wie möglich alles Variabel machen da ich es nachher auch Public machen wollt bzw. andere es auch nutzen können sollen.
    Also habe ich auch den Start Button name Variabel und den Settings Button name Variabel.

    Somit verändern sich ja die Größen der Buttons, dh. wiederum das ich die Positionen nicht festlegen kann/darf

    Wie kann ich es nun am besten lösen?
    Gibts da etwas für?

    Hier mien bissheriges Script (ist nur der Anfang wird noch viel drin gedreht)

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <array.au3>

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

    ;GUICtrlSetPos
    ;globals
    Global $label1
    Global $gui
    Global $startbutton
    ;settings
    $ininame="data.ini"
    $breite=500
    $hoehe=250
    $guititle="Mein auswahlfenster"
    $labeltext="Progauswahl:"
    $starttext="Starten"
    $settingtext="Einstellungen"

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

    If FileExists(@ScriptDir&"\"&$ininame) Then
    $programms=IniReadSectionNames(@ScriptDir&"\"&$ininame)
    Else
    _addprogramm()
    EndIf

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

    _gui($guititle)
    Func _gui($guititle)
    $gui=GUICreate($guititle,$breite,$hoehe)
    $label1=GUICtrlCreateLabel($labeltext, 10, 10)
    GUICtrlSetFont (-1,8.9,460,4,"arial")
    $grafik=GUICtrlCreatePic(@Scriptdir&"\pics\nopic.*",185,10,50,50) ;Bild erstellen

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

    ;BUTTONS
    $startbutton=GUICtrlCreateButton($starttext,70,70)
    $settings=GUICtrlCreateButton($settingtext,150,70)
    $combo=GUICtrlCreateCombo($programms[1],20,40,155)
    If UBound($programms) > 2 Then
    GuiCtrlsetdata(-1,_ArrayToString($programms,"|", 2))
    EndIf

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

    ;GUI
    GUISetState()
    ;Schleife
    While 1
    $msg = GUIGetMsg()
    ;Switch $msg
    Switch $msg
    Case -3
    Exit
    EndSwitch
    WEnd
    EndFunc

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

    Func _addprogramm()
    ;Func for Addprogramm Button
    EndFunc

    [/autoit]

    Hoffe Ihr könnt mir helfen
    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

    Einmal editiert, zuletzt von blackdeath911 (22. August 2010 um 01:22)

  • Ich hab dir mal ein schnelles Beispiel gemacht. Der Feinschliff fehtl zwar aber ich denke dir wird das Wie dadurch verständlich.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    $GUI = GUICreate("", 420, 300, -1, -1)
    $Input1 = GUICtrlCreateInput("", 8, 16, 121, 21)
    $Button1 = GUICtrlCreateButton("", 8, 64, Default, 25)
    $Button2 = GUICtrlCreateButton("neu setzen", 98, 64, 75, 25)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button2
    _neu()
    EndSwitch
    WEnd

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

    Func _neu()
    GUICtrlSetData($button1, GUICtrlRead($Input1))
    $aSize = _GUICtrlButton_GetIdealSize($button1)
    _GUICtrlButton_SetSize($button1, $aSize[0] , 25)
    GUICtrlSetPos($button2, $aSize[0] + 34, 64)
    EndFunc

    [/autoit]
  • Hat super geklappt doch irgendwie komm ich grad bei einem Fehler nicht weiter...

    Könnt ihr mir grad mal helfen? ich sehs einfach nicht?
    Er meint das die Variable nicht deklariert ist, was aber der Fall ist wenn in der data.ini folgendes steht:

    Zitat

    [progname1]
    progpfad=picpfad
    [progname2]
    progpfad=picpfad
    [progname3]
    progpfad=picpfad

    Hier mein Quelltext:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <array.au3>
    #include <EditConstants.au3>
    #Include <GuiButton.au3>
    #include <ListboxConstants.au3>

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

    ;GUICtrlSetPos
    ;globals
    Global $label1
    Global $gui
    Global $startbutton
    Global $aSize
    Global $buttonhigh=70
    Global $button1widht=10 ;startbutton
    Global $mainguititle,$maininitext,$mainlabeltext,$mainsettingstext,$mainstarttext,$savebutton

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

    ;settings
    $ininame="data"
    $breite=300
    $hoehe=105
    $guititle="Mein auswahlfenster"
    $labeltext="Progauswahl:"
    $starttext="Starten"
    $settingtext="Einstellungen"

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

    If FileExists(@ScriptDir&"\"&$ininame) Then
    $programms=IniReadSectionNames(@ScriptDir&"\"&$ininame&".ini")
    Else
    _addprogramm()
    EndIf

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

    _gui($guititle)
    Func _gui($guititle)
    $gui=GUICreate($guititle,$breite,$hoehe)
    $label1=GUICtrlCreateLabel($labeltext, 10, 10)
    GUICtrlSetFont (-1,8.9,460,4,"arial")
    $grafik=GUICtrlCreatePic(@Scriptdir&"\pics\nopic.jpg",185,10,50,50) ;Bild erstellen

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

    ;BUTTONS
    $startbutton=GUICtrlCreateButton($starttext,$button1widht,$buttonhigh)
    $settings=GUICtrlCreateButton($settingtext,0,$buttonhigh)
    ;Combo box + Inhalte
    $combo=GUICtrlCreateCombo($programms[1],10,38,155,Default,$LBS_STANDARD)
    If UBound($programms) > 2 Then ;If nur 1 Programm eingetragen
    GuiCtrlsetdata(-1,_ArrayToString($programms,"|", 2))
    EndIf
    ;Button 2 Setzen
    $aSize = _GUICtrlButton_GetIdealSize($startbutton)
    GUICtrlSetPos($settings, $aSize[0] + $button1widht+10,$buttonhigh)

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

    ;GUI
    GUISetState()
    ;Schleife
    While 1
    $msg = GUIGetMsg()
    ;Switch $msg
    Switch $msg
    Case -3
    Exit
    Case $settings
    GUIDelete()
    _settings()
    EndSwitch
    WEnd
    EndFunc

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

    Func _settings()
    GUICreate("Einstellungen",300,200)
    GUICtrlCreateLabel("Name des Hauptfensters:",5,10)
    $mainguititle=GUICtrlCreateInput($guititle,135,8,157)
    GUICtrlCreateLabel("Name des oberen Textes:",5,40)
    $mainlabeltext=GUICtrlCreateInput($labeltext,135,38,157)
    GUICtrlCreateLabel("Name des Startbuttons:",5,70)
    $mainstarttext=GUICtrlCreateInput($starttext,135,68,157)
    GUICtrlCreateLabel("Name des Settingsbuttons:",5,100)
    $mainsettingstext=GUICtrlCreateInput($settingtext,135,98,157)
    GUICtrlCreateLabel("Name der Speicherdatei:",5,130)
    $maininitext=GUICtrlCreateInput($ininame,135,128,140)
    GUICtrlCreateGraphic(5,160,290,1)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlCreateGraphic(0,159,5,3)
    GUICtrlSetBkColor(-1, 0x000000)
    GUICtrlCreateGraphic(295,159,5,3)
    GUICtrlSetBkColor(-1, 0x000000)
    $savebutton=GUICtrlCreateButton("Einstellungen Speichern und Übernehmen",46,170)

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

    ;GUI

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

    GUISetState()
    ;Schleife
    While 1
    $msg = GUIGetMsg()
    ;Switch $msg
    Switch $msg
    Case -3
    Exit
    Case $savebutton
    ;einstellungen in die INI schreiben
    If $ininame=Guictrlread($maininitext)Then
    sleep(1)
    Else
    If FileExists(@ScriptDir&"\"&$ininame)Then
    Filemove(@ScriptDir&"\"&$ininame,@ScriptDir&"\"&Guictrlread($maininitext)&".ini")
    EndIf
    EndIf
    ;Iniwrite(
    EndSwitch
    WEnd

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

    EndFunc

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

    Func _addprogramm()

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

    EndFunc

    [/autoit]

    Und wie schon gesagt falls ihrs testen wollt müsst ihr nur die sachen in die data.ini im scriptverzeichniss packen...

    Danke für die Hilfe

    EDIT:
    Fehler Behoben... Hab die data.ini Variabeln ein bisschen verändert und dann Funktionierte es... Aber kann mir mal einer sagen warum das so nicht funktionierte? mag der die 3 &´s nicht?

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

    Einmal editiert, zuletzt von blackdeath911 (21. August 2010 um 22:20)