Pic's in Gui's erscheinen/verschwinden lassen

  • Moin leute

    ist es möglich, in einem geladeten GUI noch ein Bild dort auftauchen zu lassen, durch buttondruck ?
    mit GuiCtrlDelete kann man es ja wieder löschen, aber wie holt man neue bilder auf die Oberfläche?

    sollte das nicht gehen, wir wäre es dann mit dem überlappen?
    möglich bilder vorher zu laden (unter einem anderen Bild) und per knopfdruck diesen hervorheben und
    wieder unter das andere bild erstellen?

  • sehr ausführlich -,-
    hab was mit guictrlsetimage versucht
    funktioniert auch, dass er das alte pic in ein neues umwandelt
    hab aber mal was gelesen, das man einer variablen nur ein neues pic zuweisen muss, und es dann irgendwie in den vordergrund bringen muss dafür (refresh)
    funktioniert das auch mit Labels?

  • Vielleicht so,
    ein Beispiel aus IGRv8017. ;)

    Spoiler anzeigen
    [autoit]


    ; by Ritzelrocker04 ==> IGRv8017.au3

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

    #include <GUIConstants.au3>

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

    Dim $_Ergebnis_BMI
    Dim $_EingabeGew , $_EingabeGro
    Dim $_Ergebnis_Klasse
    Dim $_Smileys

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

    $ico_Normalgew = "IGRsys\Normalgew.ico"
    $ico_Untergew = "IGRsys\Untergew.ico"
    $ico_Uebergew = "IGRsys\Uebergew.ico"
    $ico_StarkUebergew = "IGRsys\StarkUebergew.ico"
    $ico_Zwink = "IGRsys\Zwink.ico"
    $ico_Zwink2 = "IGRsys\Zwink2.ico"
    $ico_ZwinkY = "IGRsys\ZwinkY.ico"

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

    $var1 = IniRead(@ScriptDir & "\IGR.ini", "Settings", "maennlich", "0")

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

    $GUI = GUICreate("IGR & BMI v 8.0", 258, 322, -1, -1)
    $gb_Eingaben = GUICtrlCreateGroup("Ihre Eingaben", 16, 16, 225, 120)
    $tb_Gewicht = GUICtrlCreateInput("Gewicht in kg", 32, 48, 73, 21, $ES_NUMBER)
    GUICtrlSetState(-1, $GUI_FOCUS)
    $tb_Groesse = GUICtrlCreateInput("Größe in cm", 32, 88, 73, 21, $ES_NUMBER)
    $rb_Maennlich = GUICtrlCreateRadio("&männlich", 144, 56, 65, 17)
    $rb_Weiblich = GUICtrlCreateRadio("&weiblich", 144, 88, 65, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $ico_Icon = GUICtrlCreateIcon($ico_Normalgew, 0, 200, 160, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP))
    $lb_BMI = GUICtrlCreateLabel("Willkommen,", 16, 160, 180, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    $lb_Klasse = GUICtrlCreateLabel("ich errechne Ihren BMI", 16, 192, 210, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    $lb_IGR = GUICtrlCreateLabel("und das Idealgewicht !", 16, 224, 210, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x800000)
    $bn_About = GUICtrlCreateButton("&About", 16, 256, 65, 25, 0)
    $bn_Hinweis = GUICtrlCreateButton("&Hinweis", 96, 256, 65, 25, 0)
    $bn_Close = GUICtrlCreateButton("&Beenden", 176, 256, 65, 25, 0)
    $bn_Rechnen = GUICtrlCreateButton("&Rechnen", 16, 290, 225, 25, 0)
    GUICtrlSetState(-1,$GUI_DEFBUTTON)

    Switch $var1
    Case 0
    GUICtrlSetState($rb_Maennlich, $GUI_CHECKED)
    Case 1
    GUICtrlSetState($rb_Weiblich, $GUI_CHECKED)
    EndSwitch

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    If $nMsg <> 0 Then
    $_EingabeGew = GUICtrlRead($tb_Gewicht)
    $_EingabeGro = GUICtrlRead($tb_Groesse)
    $_Er = GUICtrlRead($rb_Maennlich)
    Select
    Case $nMsg = $bn_Rechnen
    If $_EingabeGro >= 100 And $_EingabeGro <= 230 Then
    $_Ergebnis_BMI = Round($_EingabeGew / ($_EingabeGro / 100) ^ 2, 0)

    If $_Er = 1 Then
    Switch GUICtrlRead($rb_Maennlich)
    Case $GUI_CHECKED
    IniWrite(@ScriptDir & "\IGR.ini", "Settings", "maennlich", "0")
    Case $GUI_UNCHECKED
    IniWrite(@ScriptDir & "\IGR.ini", "Settings", "maennlich", "1")
    EndSwitch

    $_Ergebnis_IGR = ($_EingabeGro - 100) * 0.9

    Switch $_Ergebnis_BMI
    Case 0 To 20
    $_Ergebnis_Klasse = "Sie haben Untergewicht ,"
    $_Smileys = $ico_Untergew
    Case 20 To 25
    $_Ergebnis_Klasse = "Sie haben Normalgewicht ,"
    $_Smileys = $ico_Normalgew
    Case 25 To 30
    $_Ergebnis_Klasse = "Sie haben Übergewicht ,"
    $_Smileys = $ico_Uebergew
    Case 30 To 50
    $_Ergebnis_Klasse = "Sie haben starkes Übergewicht ,"
    $_Smileys = $ico_StarkUebergew
    Case Else
    $_Ergebnis_BMI = "erstaunlich"
    $_Ergebnis_Klasse = "es bleibt besser unser Geheimnis ,"
    $_Smileys = $ico_ZwinkY
    EndSwitch
    Else
    Switch GUICtrlRead($rb_Maennlich)
    Case $GUI_CHECKED
    IniWrite(@ScriptDir & "\IGR.ini", "Settings", "maennlich", "0")
    Case $GUI_UNCHECKED
    IniWrite(@ScriptDir & "\IGR.ini", "Settings", "maennlich", "1")
    EndSwitch

    $_Ergebnis_IGR = ($_EingabeGro - 100) * 0.85

    Switch $_Ergebnis_BMI
    Case 0 To 19
    $_Ergebnis_Klasse = "Sie haben Untergewicht ,"
    $_Smileys = $ico_Untergew
    Case 19 To 24
    $_Ergebnis_Klasse = "Sie haben Normalgewicht ,"
    $_Smileys = $ico_Normalgew
    Case 24 To 30
    $_Ergebnis_Klasse = "Sie haben Übergewicht ,"
    $_Smileys = $ico_Uebergew
    Case 30 To 50
    $_Ergebnis_Klasse = "Sie haben starkes Übergewicht ,"
    $_Smileys = $ico_StarkUebergew
    Case Else
    $_Ergebnis_BMI = "erstaunlich"
    $_Ergebnis_Klasse = "es bleibt besser unser Geheimnis ,"
    $_Smileys = $ico_ZwinkY
    EndSwitch
    EndIf
    GUICtrlSetImage($ico_Icon, $_Smileys)
    GUICtrlSetData($lb_BMI, "Ihr BMI ist " & $_Ergebnis_BMI & " und")
    GUICtrlSetData($lb_Klasse, $_Ergebnis_Klasse)
    GUICtrlSetData($lb_IGR, "das Idealgewicht beträgt : " & $_Ergebnis_IGR & " kg .")
    Else
    GUICtrlSetData($lb_BMI, "Sorry ,")
    GUICtrlSetData($lb_Klasse, "aber Ihre Größe bitte nur in")
    GUICtrlSetData($lb_IGR, "cm von 100 bis 230 eingeben !")
    GUICtrlSetImage($ico_Icon, $ico_Zwink2)
    EndIf
    If $_EingabeGew = 0 Then
    GUICtrlSetData($lb_BMI, "Sorry ,")
    GUICtrlSetData($lb_Klasse, "Sie müssen noch")
    GUICtrlSetData($lb_IGR, "Ihr Gewicht in kg eingeben !")
    GUICtrlSetImage($ico_Icon, $ico_Zwink)
    EndIf
    Case $nMsg = $bn_About
    Run("About_008_CSJRE_W9x_3281.exe")
    Case $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $bn_Close
    Exit
    ExitLoop
    Case $nMsg = $bn_Hinweis
    MsgBox(64, "Wichtiger Hinweis !", "Der BMI unterscheidet nicht zwischen Fett- und Muskelmasse." & @CRLF & _
    "Sportler, Bodybuilder und Schwerstarbeiter, die viele Muskel-Kilos auf die Waage bringen," & @CRLF & _
    "gehören nach dem BMI bereits in die Kategorie „übergewichtig“, obwohl ihr Körperfett-Anteil " & @CR & _
    "nur gering ist. " & @CRLF & _
    "Der BMI gilt ebenfalls nicht für Schwangere und stillende Mütter, kranke und alte Menschen " & @CRLF & _
    "und Kinder im Wachstum. Überdies werden sehr kleine Menschen ( kleiner als 150 cm) oft " & @CRLF & _
    "falsch zu hoch eingestuft, sehr große Menschen (größer als 190 cm) dagegen zu niedrig " & @CRLF & _
    "bewertet. Ähnliche Einschränkungen gibt es für Menschen mit schlankem Körperbau, " & @CRLF & _
    "die häufig zu niedrig eingestuft werden, und untersetzte Menschen," & @CRLF & _
    "die zu schnell als zu dick klassifiziert werden." & @CRLF & _
    " " & @CRLF & _
    "Der BMI-Rechner soll nur einen ersten Anhalspunkt geben." & @CRLF & _
    "Wer es genauer wissen will, ob er abspecken sollte, misst besser seinen persönlichen" & @CRLF & _
    "Körperfettanteil, z.B. mit einer speziellen Körperfettwaage!")
    EndSelect
    EndIf

    WEnd

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


    Weiterhin viel Erfolg !

  • also mit einem button kannst du ja auch folgendes machen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $toggle = False

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 303, 166, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Button1 = GUICtrlCreateButton("Button1", 64, 56, 161, 33, 0)
    GUICtrlSetOnEvent(-1, "Button1Click")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func Button1Click()
    If $toggle Then
    _Fun2()
    Else
    _Fun1()
    EndIf
    $toggle = Not $toggle
    EndFunc

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func _Fun1()
    MsgBox(0, '', "Dein erstes Bild wird angezeigt")
    EndFunc

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

    Func _Fun2()
    MsgBox(0, '', "Dein anderes Bild wird angezeigt")
    EndFunc

    [/autoit]

    Einfach nur noch die Funcs anpassen und es müsste klappen.
    Das ganze kann man natürlich auch mit mehreren Funktionen machen.
    Gruß

    Edit:

    Zitat

    hab aber mal was gelesen, das man einer variablen nur ein neues pic zuweisen muss, und es dann irgendwie in den vordergrund bringen muss dafür (refresh)
    funktioniert das auch mit Labels?


    Wenn ich dich richtig verstehe so müsste das mit GuictrlsetData funktionieren.

  • Für Avi-Dateien habe ich auch so etwas schon gemacht, dass trifft es besser. 8)

    Spoiler anzeigen
    [autoit]


    ; by Ritzelrocker04

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

    #include <GUIConstants.au3>

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

    $avi_RD = "IGR_AVI\3.avi"
    $avi_RR04 = "IGR_AVI\15.avi"

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

    $GUI = GUICreate("AVI-Switch", 315, 150, -1, 180, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    $gb_All = GUICtrlCreateGroup("", 8, 1, 300, 112)
    $avi1 = GUICtrlCreateAvi($avi_RD, -1, 24, 10, 100, 100, BitOR($ACS_TRANSPARENT,$ACS_AUTOPLAY))
    $bn_Close = GUICtrlCreateButton("&Beenden", 229, 120, 75, 25, 0)
    $bn_OK = GUICtrlCreateButton("&OK", 149, 120, 75, 25, 0)
    GUICtrlSetState(-1,$GUI_DEFBUTTON)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()

    Select
    Case $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $bn_Close
    Exit
    Case $nMsg = $bn_OK
    GUICtrlSetState ($avi1, 0)
    GUICtrlDelete($avi1)
    $avi2 = GUICtrlCreateAvi($avi_RR04, -1, 24, 10, 100, 100, BitOR($ACS_TRANSPARENT,$ACS_AUTOPLAY))
    EndSelect
    WEnd

    [/autoit]


    Weiterhin viel Erfolg !