Einfache GUI-Fragen - für Neuling

  • Hallo AutoIT-Gemeinde,

    Ich bin noch sehr unerfahren in Bezug auf AutoIt und habe ein paar Fragen bezüglich der Programmierung einer GUI:

    1. Ein WIndows Fenster (Titelleiste) trägt normalerweise ein Icon, einen Text und ein "Minimieren"-, "Maximieren"- und ein "Schließen"-Icon.

    z.B.
    $MeineGUI1 = GuiCreate("Titel", 400, 200, -1, -1)
    GuiSetIcon("Name.ico", 0)

    Frage1: Kann man das "X"-Icon für Schließen irgendwie abfragen ?
    Frage2: Kann das Icon ausgeschaltet werden ?

    2. Ich verwende in meinem Programm eine Combobox, die diverse Informationen aus einer INI-Datei einließt. Diese Werte tauchen auch in der Combobox auf, ich kann sie auch auswählen. In der GUI MESSAGE LOOP wird dann nur ein entsprechender Button aufgerufen.

    z.B.
    $combofeld=GUICtrlCreatecombo ("", 5,40,390,100 )
    $var = IniReadSection("Name.ini", "Schlüssel")
    For $i = 1 To $var[0][0]
    if @error = 2 then
    else
    GUICtrlSetData(-1,$var[$i][1])
    endif
    next

    Frage: Wenn ich ein Element aus der Liste auswählen will und diesen in die Zwischenablage bringen will - wie geht so etwas ?

    Anmerkung: Aktuell nutze ich dazu einen Button. Ist mir aber zu umständlich. Vielleicht gibt es ja eine einfachere Lösung.

    3. Es ist in meinem Programm vorgesehen, dass ich ein grafisches Menü aufrufe, dass wiederum ein zweites Fenster (für Einstellungen/Parameter) aufrufen soll. Ähnlich wie bei Excel, wenn man "Extras/Einstellungen" aufruft. Bisher gelang es mir nicht ein Fenster zu erstellen, das man auch wieder schließen kann ohne das Hauptfenster gleichzeitig damit zu schließen.

    z.B.
    $MeineGUI2 = GuiCreate("Optionen", 200, 100, -1, -1, BitOr($WS_SYSMENU, $WS_CAPTION), -1, $MeineGUI1)

    Frage1: Sind dies spezielle Fenster (Clientfenster?) ?
    Frage2: Wie geht man hier sinnvollerweise vor ?

    4. Später einmal soll sich das Programm beispielhaft über einen Fileselektor über das Contextmenü öffnen lassen.

    Frage: Hat hier jemand einen Tip ? Ich recherchiere gerne selber.

    Ich hoffe, die Fragen sind nicht zu einfach. Als Anfänger benötigt man einfach etwas Zeit, um die vielen Befehle auch vernünftig interpretieren zu können.

    Vielen Dank schon einmal und viele Grüße jusuba2009 :)

    Einmal editiert, zuletzt von jusuba2009 (26. April 2009 um 20:58)

  • Frage: Hat hier jemand einen Tip ?

    Da du gerne selber recherchierst: Nimm Deinen Script in Scite und speichere ihn ab. Dann kannst du alles was in der Hilfe erklärt ist (bei mir sind die Bereiche dunkelblau geschrieben) markieren und dann drückst Du F1.

    Damit kannst Du alle Punkte die Du gefragt hast selber lösen und ich finde es super, das Du gleich sagst: " Keine Lsöugn posten, sondern Hilfe das ich selber recherchieren kann". Diese Einstellung freut mich und ich kann Dir dann noch oben links im Forum die Suchfunktion anbieten. Diese hilft mir auch sehr viel, da ich da sehe wie andere mit den Befehlen / Funktionen arbeiten.

    Viel Erfolg und WILLKOMMEN im Forum.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Zu erstens:
    Frage 1
    Ja man kann das X-Icon abfragen! Der Wert für den Button -3!
    Frage 2
    Ja, du musst den Button einfach nicht abfragen ;)

    Um etwas in die Zwichschenablage zu bekommen guck dir mal die Funtion "ClipPut" an

    Zu drittens
    1. Guck dir mal "GUIDelete" an

    4 kapier ich nicht^^

    mfg. Jam00

    • Offizieller Beitrag

    Wilkommen im Forum . Da du kleine direkte Hilfe willst , geb ich dir mal ein paar Schlagworte .

    zu 1)Messages der Fensterbuttons : Hilfe zu GuiGetMsg lesen Stichworte $GUI_EVENT_MINIMIZE,$GUI_EVENT_MAXIMIZE ,$GUI_EVENT_CLOSE
    Wie man das Icon der Gui ausblendet weiß ich auch nicht , hab jedenfalls nichts gefunden .Würde mich auch Interessieren . :rolleyes:
    zu 2) hab nicht verstanden was du in die Zwischenablage kopieren willst, generell geht das mit ClipPut, einfach in die Hilfe schaun
    zu 3) Du kannst auch die Messages der einzelnen Guis auswerte , schau dir dazu mal die Erweiterte GuiGetMsg einstellung an, in der Hilfe.

    Edit zu 1) das Icon läßt sich durch verwendung eines Transparenten Icon´s verstecken. Danke an Schnuffel :thumbup:

  • Und ein Beispiel für Frage 1

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example1()
    Example2()

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

    Func Example1()
    Local $msg
    Local $exit

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

    GUICreate("Form1", 251, 109, 193, 125, BitOR($WS_MINIMIZEBOX,$WS_DLGFRAME,$WS_GROUP,$WS_CLIPSIBLINGS))
    $exit = GUICtrlCreateButton("exit", 80, 40, 65, 33, 0)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    MsgBox (0,"X da","close")
    ExitLoop
    Case $exit
    MsgBox (0,"X-Button","close")
    ExitLoop
    EndSwitch
    WEnd
    EndFunc


    Func Example2()
    Local $msg
    Local $exit
    GUICreate("Form1", 251, 109, 193, 125)
    $exit = GUICtrlCreateButton("exit", 80, 40, 65, 33, 0)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    MsgBox (0,"X","close")
    ExitLoop
    Case $exit
    MsgBox (0,"X-Button","close")
    ExitLoop
    EndSwitch
    WEnd
    EndFunc

    [/autoit]

    MfG
    Der_Doc

  • So erstellt man ein Fenster ohne die Drei Standartbutton in der Titelleiste:

    Spoiler anzeigen
    [autoit]

    #Region ### START Koda GUI section ### Form=
    $hWnd2 = GUICreate("Einstellungen", 633, 447, 193, 125,0x00C00000);Hier der Style ist dafür verantwortlich
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    mfg. Jam00

    • Offizieller Beitrag

    @Jam . Ich denke es ist für einen Anfänger ziehmlich verwirrend wenn du die Wert -3 anstatt $GUI_EVENT_CLOSE verwendest. Und 0x00C00000 als Gui Style ist auch nichtssagend, besser wäre den entsprechenden Syle anzugeben . Die Werte kannst du nicht in der Hilfe soeinfach nachvollziehen . Bedenke immer du hast auch mal angefangen ;)

    Edit: Style 0x00C00000 ist$WS_CAPTION und wie wird dein Beispielscript beendet ? Die $GUi_EVENT_CLOSE abfrage ist für die Füße, wenn der Close Button fehlt. ;)

  • Hallo Raupi,

    stimmt, ist wirklich ziemlich verwirrend. ?(

    Zu deiner Frage: Mein Script wird tatsächlich mit $GUI_EVENT_CLOSE beendet

    Danke, habe es dank der Erklärung aber dennoch verstanden und im Beispielscript von Jam00 sieht man auch wie es eingesetzt werden kann.

    Das Clientfenster mit einer MsgBox zu machen ist auch eine Idee, hätte ich vermutlich nie probiert.

    Nochmals zu Frage 2: Das ich etwas in die Zwischenablage bringen kann ist mir klar => ClipPut, aber mich interessiert wie ich die ComboBox abfragen muss was ich gerade angeklickt habe. Ein zusätzlicher "Übernehmen"-Button löst mein Problem zwar, aber ich wollte es, wenn möglich ohne einen zusätzlichen Button schaffen.

    Nochmals zu Frage 4: Ich benötige eine Funktion, mit der ich z.B. im Explorer das Contextmenü erweitern kann, so dass es Informationen von meinem geschriebenen Programm annehmen kann. Geht so etwas.

    Ich hoffe, damit ist es etwas klarer. :thumbup:

    Einmal editiert, zuletzt von jusuba2009 (15. April 2009 um 23:42)

    • Offizieller Beitrag

    Zu deiner Combobox Frage: Den Indexeintrag des gerade gewählten Eintrages bekommst du mit _GUICtrlComboBox_GetCurSel heraus. Mit dem Indexeintrag kannst du dann mit _GUICtrlComboBox_GetLBText den Text des selektierten Eintrages auslesen . Zu deiner 4. Frage . Dazu brauchst du RegWrite und diesen Thread :https://autoit.de/index.php?page…adID=11309&amp;

    Edit: Habe eben mal wieder vergessen, das du ein Anfänger bist. Du kannst die ComboBox natürlich auch mit GUICtrlRead auslesen . Das ist einfacher und nicht zu technisch .

  • Danke Raupi,

    ich muss mal nach den Hinweisen suchen. :P

    _GUICtrlComboBox_GetCurSel
    _GUICtrlComboBox_GetLBText

    In der Hilfe habe ich die bisher noch nicht geunden. Ich stelle mich evtl. auch einfach zu blöd an. :)

    Den Thread sehe ich mir auch gerne an. Danke nochmals.

    • Offizieller Beitrag

    Das sind UDF Funktionen. Die Beschreibung befindet sich in der UDFs3 Hilfedatei . Schau mal das Edit meines letzten Postes , damit geht´s auch ;)

  • Danke,

    jetzt hat es geklingelt. In den UDFs war ich noch gar nicht drin. ABER: Warum das Rad doppelt erfinden, wenn es auch andere kluge Köpfe gibt. :thumbup:

  • Danke an alle Helfer,

    bin inzwischen ein ganzes Stück weiter gekommen.

    Frage1 muß ich nochmals probieren
    Frage 2 hat sich nun erledigt
    Frage 3 hat sich auch erledigt
    Frage 4 ist erst einmal hinten angestellt, werde dem Tip/Thread auf jeden Fall nachgehen

    Erst einmal vielen Dank und noch eine schöne Zeit. :)

    P.S. Ich muss noch viel lernen. Werde Post erst einmal schließen.

    Einmal editiert, zuletzt von jusuba2009 (26. April 2009 um 20:58)