GUI Probleme

  • Ich habe ein paar Probleme mit meiner GUI...

    =========================================================================================================
    #Region ### START Koda GUI section ### Form=
    $Mainform = GUICreate("NoteIt", 640, 480, -1, -1,$WS_POPUPWINDOW, $GUI_WS_EX_PARENTDRAG)
    GUISetIcon("\Images\NoteIt - Icon.ico")
    $Datei = GUICtrlCreateMenu("Datei")
    $Speichern = GUICtrlCreateMenuItem("Speichern", $Datei)
    $Beenden = GUICtrlCreateMenuItem("Beenden", $Datei)
    $Bearbeiten = GUICtrlCreateMenu("Bearbeiten")
    $Kopieren = GUICtrlCreateMenu("Kopieren", $Bearbeiten)
    $KopierenAll = GUICtrlCreateMenuItem("Alles kopieren", $Kopieren)
    $KopierenMark = GUICtrlCreateMenuItem("Nur makierung kopieren", $Kopieren)
    $Einfuegen = GUICtrlCreateMenuItem("Einfügen", $Bearbeiten)
    $Backmake = GUICtrlCreateMenuItem("Rückgängig", $Bearbeiten)
    $Hilfe = GUICtrlCreateMenu("Hilfe")
    $UberNoteIt = GUICtrlCreateMenuItem("Über", $Hilfe)
    $UberTab = GUICtrlCreateTab(0, 0, 643, 433, $TCS_BOTTOM)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $Tab1 = GUICtrlCreateTabItem("Notizen")
    $Edit1 = GUICtrlCreateEdit("", 4, 5, 632, 397)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $Tab2 = GUICtrlCreateTabItem("Zwischenablage")
    $Edit2 = GUICtrlCreateEdit("", 4, 5, 632, 397)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $Tab3 = GUICtrlCreateTabItem("Sonstiges")
    $Edit3 = GUICtrlCreateEdit("", 4, 5, 632, 397)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    $Tab4 = GUICtrlCreateTabItem("To-Do")
    $Edit4 = GUICtrlCreateEdit("", 4, 5, 632, 397)
    GUICtrlCreateTabItem("")
    $Header = GUICtrlCreatePic("\Images\Header.jpg", 0, 455, 640, 25, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    =========================================================================================================



    1. Lässt sich das Fenster nicht verschieben, sollte es durch "$GUI_WS_EX_PARENTDRAG" aber.
    2. Ist die Schriftart im 4ten Tab (wenn man die GUI startet) anders. Bug?
    3. Zeigt sich "Header.jpg" nicht. Ich finde aber nicht raus wieso nicht.

    (gehört nicht zur GUI)
    4. Wenn ich einen Text über Send( "^v") in eins der Edit Felder einfüge kommt dieses
    immer am Ende, nicht dort wo der Mauszeiger ist. Kann man dies ändern?

    Das Bild Header.jpg hab ich mal angehängt.
    Zum testen etc.

    autoit.de/wcf/attachment/4656/

    • Offizieller Beitrag

    Hallo

    1.: WS_EX_PARENTDRAG ist nicht für die GUI sondern für Controls gedacht (z.B. Labels oder Pics)
    2.: ? Was meinst du damit?
    3.: Naja, du hast den "Header" sehr sehr weit unten gesetzt (top: 455px) - ist das beabsichtigt?
    4.: Versteh ich auch nicht ;P Erklär mal genauer, evtl. mit Beispiel

    Mfg Spider

  • 1.: WS_EX_PARENTDRAG ist nicht für die GUI sondern für Controls gedacht (z.B. Labels oder Pics)
    --> Hab ich grad gesehen.. sollte auch eigentlich nicht ans GUI Fenster :wacko:

    2.: ? Was meinst du damit?
    --> Wenn ich die GUI öffne ist im 4ten Tab eine andere Schriftgröße 8|

    3.: Naja, du hast den "Header" sehr sehr weit unten gesetzt (top: 455px) - ist das beabsichtigt?
    --> Sollte an der Unteren Bildschirmkante anliegen, da das Bild 25px ist sollte das mit 455 hinkommen? (455+25=480)

    4.: Versteh ich auch nicht ;P Erklär mal genauer, evtl. mit Beispiel
    --> Hab über dieses Script:
    ======================================

    Switch GUICtrlRead($UberTab,1)
    Case $Tab1
    Guictrlsetstate($Edit1, $GUI_FOCUS)
    Send( "^v" )
    Case $Tab2
    Guictrlsetstate($Edit2, $GUI_FOCUS)
    Send( "^v" )
    Case $Tab3
    Guictrlsetstate($Edit3, $GUI_FOCUS)
    Send( "^v" )
    Case $Tab4
    Guictrlsetstate($Edit4, $GUI_FOCUS)
    Send( "^v" )
    EndSwitch
    ======================================

    Eine simple "Bearbeiten -> Einfügen" gebastelt. (Mit Hilfe des Boards, danke nochmal ;) )
    Der Text wird aber immer an das Ende gesetzt, nicht dort wo sich der Mauszeiger gerade befindet ?(

    • Offizieller Beitrag

    Zu 2. Du bist ein Scherzbold. In den anderen 3 Tabs hast du ja auch einen anderen Font gesetzt.

  • Ehm.. bin ich blind?
    Es ist bei allen 4 Tabs die gleiche Font ?(

    Ich glaube meine Augen spinnen heute ihrgendwie
    Zu 2. Bei mir sind alle Fonts gleich, immer "GUICtrlSetFont(-1, 10, 400, 0, "Arial")"
    Zu 3. Das Bild ist 25 pixel hoch, deswegen die 455. Damit das Bild auch exact unten abschließt, 430 geht bei mir ebenfalls nicht.
    Zu 4. Hatte nen Fehler im Code, hat sich gelöst =/

  • Okay tritt mich mal einer..
    ich sehs selbst grad..
    Gott muss ich am We gefeiert haben :rofl:

    3 will trotzdem nich =/

    Und dann die frage:
    Ist es möglich den Hintergrund oben bei den Tabs auf "FFFFFF" zu setzen
    oder sogar transparent zu machen?

    • Offizieller Beitrag

    Hm, scheinbar biste Blind 8|

    Spoiler anzeigen
    [autoit]

    $Tab4 = GUICtrlCreateTabItem("To-Do")
    $Edit4 = GUICtrlCreateEdit("", 4, 5, 632, 397)
    GUICtrlCreateTabItem("")
    $Header = GUICtrlCreatePic("\Images\Header.jpg", 0, 455, 640, 25, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

    [/autoit]

    Wo hast du in dem Abschnitt

    Spoiler anzeigen
    [autoit]

    GUICtrlSetFont(-1, 10, 400, 0, "Arial")

    [/autoit]


    stehen ?

    In den anderen Tabs benutzt du Arial .

    Shit viel zu Spät, sollte den Post acuh abschicken wenn ich Ihn schon getippt habe :D

    Edit: hast dich bestimmt verzählt weil du im 1. Tab 1 mal Arial auf das Tab und 1 mal auf das Edit setzt .

    Spoiler anzeigen
    [autoit]

    $UberTab = GUICtrlCreateTab(0, 0, 643, 433, $TCS_BOTTOM)
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")
    GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
    $Tab1 = GUICtrlCreateTabItem("Notizen")
    $Edit1 = GUICtrlCreateEdit("", 4, 5, 632, 397)
    GUICtrlSetData(-1, "")
    GUICtrlSetFont(-1, 10, 400, 0, "Arial")

    [/autoit]
  • So alles behoben.
    Das einzige das noch nicht will:

    1. Header.jpg wird weiterhin nicht angezeigt.
    --> Pfad stimmt
    --> Bild vorhanden
    --> Gleicher Code funktioniert in anderem Script

    2. Beim Einfügen kommt der Text immer am Ende des vorhandenen Textes, nicht dort wo der Mauszeiger ist.
    --> Einfügen selbst funktioniert

    3. Style von den Tabs will sich nicht ändern lassen (Hintergrundfarbe + entfernen des "Rahmens")
    --> Tab und Menü übernehmen die Hintergrundfarbe nicht
    --> Rahmen entfernen möglich?

  • Moinsen,

    Also, zu deinem "Header" Problem ...

    Wenn Du ein Fenster erzeugst, bezieht sich die Angabe der Größe, in deinem Falle 640x480, auf das gesamte Fenster, also inklusive Rahmen.

    Für Steuerelemente bezieht sich die Angabe der Position auf den Anwendungsbereich des (Eltern-)Fensters.
    Das ist grob gesagt die Fensterfläche ohne Rahmen und Menüleiste/Statusleiste, sofern vorhanden. ;)

    Du kannst nun natürlich die Pixel zählen und diese dann vom Gesamtmaß abziehen, das ist aber erstens sehr unelegant und zweitens setzt Du dabei immer voraus, dass alle Fenster diese Rahmengröße besitzen.
    Was machst Du aber, wenn jemand den visuellen Stil deaktiviert hat, oder Win2000, Vista oder XP nutzt ?

    Daher empfiehlt es sich bei solchen Positionsberechnungen immer den Anwendungsbereich zu ermitteln.

    [autoit]


    $iHeight = 25 ; Höhe des Pic-Steuerelements

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

    ; Größe des Anwendungsbereichs ermitteln.
    $aClientSize = WinGetClientSize ($hWndMain )

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

    ; Anfangsposition des Pic-Steuerelements errechnen.
    $cyHeaderTop = $aClientSize[1] - $iHeight

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

    ; Steuerelement erzeugen.
    $Header = GUICtrlCreatePic("\Images\Header.jpg", _
    0, $cyHeaderTop , 640, $iHeight, _
    BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))

    [/autoit]

    EDIT:
    Was das Erscheinungbild der Registerkartenelemente angeht, versuche mal $TCS_FLATBUTTONS.


    Greenhorn


    2 Mal editiert, zuletzt von Greenhorn (4. Mai 2009 um 21:21)

  • Script:

    ===========================================================================================================================

    $Mainform = GUICreate("HastyNotes", 640, 480, -1, -1)
    GUISetBkColor(0xFFFFFF)
    GUISetIcon("\Images\HastyNotes - Icon.ico")

    $BannerHigh = 25
    $FensterHigh = WinGetClientSize ( $Mainform )
    $VAchse = $FensterHigh[1] - $BannerHigh

    $Header = GUICtrlCreatePic(@ScriptDir & "\Images\Header.jpg", 0, $VAchse, 640, $BannerHigh, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    ===========================================================================================================================


    Warum zeigt er das Bild nicht? Wärend er es mit

    "$BannerHigh = 50" zeigt? Das Bild ist doch nur 25 hoch ?( ?(

  • Hast Du schon geprüft, was dir WinGetClientSize zurückgibt ?

    Also, so ist's bei mir zu sehen ...
    (Dateipfad musst Du noch anpassen)

    Spoiler anzeigen
    [autoit]


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

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

    $hWndMain = GUICreate ("NoteIt", 640, 480, -1, -1, _
    $WS_POPUPWINDOW, $GUI_WS_EX_PARENTDRAG)

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

    GUISetIcon ("\Images\NoteIt - Icon.ico")

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

    ; Menü
    $Datei = GUICtrlCreateMenu ("&Datei")
    $Speichern = GUICtrlCreateMenuItem ("&Speichern", $Datei)
    $Beenden = GUICtrlCreateMenuItem ("Be&enden", $Datei)

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

    $Bearbeiten = GUICtrlCreateMenu ("&Bearbeiten")
    $Einfuegen = GUICtrlCreateMenuItem ("&Einfügen", $Bearbeiten)
    $Backmake = GUICtrlCreateMenuItem ("&Rückgängig", $Bearbeiten)

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

    $Kopieren = GUICtrlCreateMenu ("&Kopieren", $Bearbeiten)
    $KopierenAll = GUICtrlCreateMenuItem ("&Alles kopieren", $Kopieren)
    $KopierenMark = GUICtrlCreateMenuItem ("&Nur Makierung kopieren", $Kopieren)

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

    $Hilfe = GUICtrlCreateMenu ("&Hilfe")
    $UberNoteIt = GUICtrlCreateMenuItem ("Über", $Hilfe)

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

    ; Registerkarte
    $UberTab = GUICtrlCreateTab (0, 0, 643, 433, $TCS_BOTTOM)

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

    $Tab1 = GUICtrlCreateTabItem ("N&otizen")
    $Edit1 = GUICtrlCreateEdit ("", 4, 5, 632, 397)
    GUICtrlSetData (-1, "")
    ;~ GUICtrlSetFont (-1, 10, 400, 0, "Arial")
    $Tab2 = GUICtrlCreateTabItem ("Z&wischenablage")
    $Edit2 = GUICtrlCreateEdit ("", 4, 5, 632, 397)
    GUICtrlSetData (-1, "")
    ;~ GUICtrlSetFont (-1, 10, 400, 0, "Arial")
    $Tab3 = GUICtrlCreateTabItem ("Sons&tiges")
    $Edit3 = GUICtrlCreateEdit ("", 4, 5, 632, 397)
    GUICtrlSetData (-1, "")
    ;~ GUICtrlSetFont (-1, 10, 400, 0, "Arial")
    $Tab4 = GUICtrlCreateTabItem ("To-&Do")
    $Edit4 = GUICtrlCreateEdit ("", 4, 5, 632, 397)
    GUICtrlCreateTabItem ("")

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

    ; Footer
    $aClientSize = WinGetClientSize ($hWndMain)

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

    If IsArray ($aClientSize) Then
    ConsoleWrite (StringFormat ("Width : %d\r\nHeight: %d\r\n", _
    $aClientSize[0], $aClientSize[1]))

    EndIf

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

    $cyTop = $aClientSize[1] - 25
    $Header = GUICtrlCreatePic (".\Header.jpg", _
    0, $cyTop, 640, 25, _
    BitOR ($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))

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

    GUICtrlSetFont ($UberTab, 10, 400, 0, "Arial") ; Schrift für Registerkarte
    GUICtrlSetResizing ($UberTab, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)

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

    GUISetState (@SW_SHOW)

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

    While True

    Switch (GUIGetMsg ( ))

    Case $GUI_EVENT_CLOSE ; wegen Alt+F4
    ExitLoop

    Case $Beenden ; Menüelement Beenden
    ExitLoop

    EndSwitch
    WEnd

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


    Gruß
    Greenhorn


    Einmal editiert, zuletzt von Greenhorn (4. Mai 2009 um 22:46)

  • $FensterHigh[1] = 480

    Somit sollte er mir die Grafik doch mit
    $BannerHigh = 25
    anzeigen und nicht mit

    $BannerHigh = 50
    was nicht der Fall ist.
    oder?

  • Mit $FensterHigh[1] = 480 meinte ich das mir das ganze in einer MsgBox:

    msgbox(48, "Test", $FensterHigh[1])


    den Wert 480 wiedergibt ;)

    Trotzdem verstehe ich nicht wieso "$BannerHigh = 50" sein muss

  • Hm okay, ihrgendwas stimmt nicht.

    Bei mir zeigt er das Bild in deiner Version nicht an.
    URL's etc alles geändert.

    Bei meiner Version mit $BannerHigh = 50 gehts.

    Ich verstehe nur nicht warum, da das Bild ja nur 25px ist.