In der Größe veränderbare GUI erstellen

  • Hallo an alle,

    ich möchte gerne ein GUI erstellen, welches in der Größe anpassbar sein muss. Das ist soweit kein Problem.

    [autoit]

    GUICreate("Notiz", 200, 200, -1, -1, $WS_SIZEBOX, $WS_EX_TOOLWINDOW)

    [/autoit]

    Nun mein Problem:

    Auf der GUI soll nun ein Edit Feld (mehrzeilig, aber das bitte automatisch, nicht etwa durch drücken der Enter taste) sein, welches sich dann auch automatisch der Größe des GUIs anpasst...

    danke schonmal für die hilfe! über sufu hab ich leider nichts entsprechendes gefunden...

    Einmal editiert, zuletzt von oliverh (29. Januar 2009 um 16:42)

  • da ich das GUI über eine Funktion erstellen lasse, kann ich das Control nicht über eine variable ansprechen, so wie es diese funktion erfordert...

    • Offizieller Beitrag

    Wo ist der Code ? Sollen wir raten ? Ist nicht böse gemeint, aber wenn man was Schwarz auf Weiß hat ist es einfacher .

  • da die funktion mehrmals aufgerufen wird, weiß ich gar nicht wieviele GUIs erstellt werden - ergo: ich weiß auch nicht wieviele edit controls erstellt werden... kann ja nicht einfach auf verdacht mal eben 100 variablen global definieren

  • habs... hier der code von meinem noch gaaanz unfertigen script, welches mal ein notiztool, erinnerungstool usw werden soll...

    lösung

    [autoit]

    Opt("GUIResizeMode", 0)

    [/autoit][autoit]


    #Include <WindowsConstants.au3>
    #Include <File.au3>
    #Include <EditConstants.au3>
    #NoTrayIcon
    Opt("TrayMenuMode", 1)
    Opt("GUIResizeMode", 0)
    If Not FileExists(@ScriptDir & "\data.ini") Then
    _FileCreate(@ScriptDir & "\data.ini")
    $sectionSystem="AnzahlNotizen=0" & @LF & "AnzahlErinnerungen=0" & @LF & "DesktopWidth=" & @DesktopWidth & @LF & "DesktopHeight=" & @DesktopHeight
    IniWriteSection("data.ini", "SYSTEM", $sectionSystem)
    Else
    ; Daten lesen...
    EndIf
    $new=TrayCreateMenu("Neu")
    $newNote=TrayCreateItem("Notiz", $new)
    $newReminder=TrayCreateItem("Erinnerung", $new)
    TrayCreateItem("")
    $deleteAllItems=TrayCreateItem("Alle Einträge löschen")
    TrayCreateItem("")
    $exitTray=TrayCreateItem("Beenden")
    TraySetState()
    While True
    __checkDesktopSize(@DesktopWidth, @DesktopHeight)
    $msg = TrayGetMsg()
    Select
    Case $msg=0
    ContinueLoop
    Case $msg=$exitTray
    ExitLoop
    Case $msg=$newNote
    __createNewNote()
    EndSelect
    WEnd
    Exit
    Func __createNewNote()
    GUICreate("Notiz", 200, 200, -1, -1, $WS_SIZEBOX, $WS_EX_TOOLWINDOW)
    GUICtrlCreateEdit("", 0, 0, 198, 198, $ES_MULTILINE)
    GUISetState()
    EndFunc
    Func __checkDesktopSize($dWidth, $dHeight)
    If $dWidth<>IniRead(@ScriptDir & "\data.ini", "SYSTEM", "DesktopWidth", "") Or $dHeight<>IniRead(@ScriptDir & "\data.ini", "SYSTEM", "DesktopHeight", "") Then
    MsgBox(0, "Test", "Größe des Desktops hat sich geändert!!!")
    ; Fenster an neue Desktopgröße anpassen
    EndIf
    EndFunc
    #cs
    [GUI1]
    PosX= --Position des GUIs auf der X Achse
    PosY= --Position des GUIs auf der Y Achse
    Width= --Breite des GUIs
    Heigh= --Höhe des GUIs
    Text= --Notiztext
    OnTop= --1 für ja 2 für nein
    #ce

    [/autoit]
  • frage: für was brauchst du des resize wenn du nich mal ne gui hast???

    Padmak

    Edit: Und was hat es für einen sinn die änderung des desktops zu überprüfen (ändert sich doch gar net...)

  • klar hab ich die :) werden über diese funktion erstellt:

    [autoit]


    Func __createNewNote()
    GUICreate("Notiz", 200, 200, -1, -1, $WS_SIZEBOX, $WS_EX_TOOLWINDOW)
    GUICtrlCreateEdit("", 0, 0, 198, 198, $ES_MULTILINE)
    GUISetState()
    EndFunc

    [/autoit]

    die funktion wird aufgerufen wenn ich im traymenü auf "neu" -> "notiz" klicke... ich kann so mehrere notizen erstellen usw... die positionen etc. werden später dann in einer ini gespeichert und beim nächsten starten des programms, werden die notizen wieder neu an der selben position auf dem desktop erstellt. das ganze will ich dann noch dahingehend ausbauen, dass sich bei veränderung der desktopgröße auch die entsprechenden guis prozentual zur änderung der desktopgröße sich enstprechend neu auf diesem anordnen usw...

    hoffe das gelingt mir alles so, ansonsten gibt es ja aber dieses forum hier, wo man geholfen wird *g*

  • warum sollte man die desktopgröße ändern???
    naja egal
    warum machen alle eig GuiSetState() und net GuiSetState(@SW_SHOW)?^^

    Padmak

  • ok hier ein beispiel *lach*

    ich bin auf der arbeit

    -> diockingstation + 24" auflösung: 1920 x 1200
    -> so, dockingstation wieder weg - auflösung: 1680 x 1050 (lap)

    ergebnis = meine guis hängen irgendwo in der luft, oder irgendwo in meiner kaffeetasse neben meinem laptop... und ich mag keinen kaffee mit guis... trink den mit milch und zucker :rofl:

    außerdem wird es dadurch nachher möglich, das komplette programm einfach auf einen anderen rechner zu kopieren indem man einfach die ini mitkopiert... und tadaa die in der ini gespeicherten notizen passen auch auf jedem anderen rechner :)

    EDIT: weiß von euch jemand, wie windows es handhabt, wenn mehrere bildschirme angeschlossen werden??!?

    Einmal editiert, zuletzt von oliverh (29. Januar 2009 um 16:39)

  • naja das muss einem auch mal wer sagen :D
    danke :D:D
    aber das macht ja nich wirklich was aus wenn mans schreibt oder^^

    Padmak

  • also ich hab auch das problem, das meine listview überhaupt nicht auf das rezize reagiert, das bleibt immer gleich...

    [autoit]


    $hListView = _GUICtrlListView_Create($Form1,"", 8, 192, 777, 393)
    GUICtrlSetResizing($hListView, $GUI_DOCKLEFT+ $GUI_DOCKBOTTOM + $GUI_DOCKTOP)

    [/autoit]

    bei allen anderen ctrl funktioniert es einwandfrei

    gruß

    nova