GuiCtrlCreateLabel mit Vorgabe hidden

  • Hallo zusammen,

    also ich habe ein GUI auf der ich im meiner Anwendung neue Elemente erstellen möchte. Was auch soweit funktioniert.

    Leider sieht er recht komisch aus, wenn ich erst das Elemet erstelle und somit schonn sicht bar ist und dann erst das Aussehen verändere.

    Frage:
    Kann man z.B. ein GuiCtrlCreateLabel mit Vorgaben machen, so das es gleich versteck/unsichbar erstellt wird?

    Gruß

    Wolfgang

  • HI !
    Ja das geht mit guictrlsetstate

    also:

    [autoit]

    #include <guiconstants.au3>
    GUICtrlSetState(-1,$GUI_HIDE)

    [/autoit]

    einfach unter die Zeile mit dem LAbel heften

    um es allerdings wieder sichbar zu machen

    [autoit]

    #include <guiconstants.au3>
    GUICtrlSetState($label,$GUI_SHOW)

    [/autoit]


    $label = Das label welches du erstellt hast(Also Variable)
    Hier mal ein kleines Beispiel

    [autoit]

    #include <guiconstants.au3>
    GUICreate("bla bla",200,200)
    $label = GUICtrlCreateLabel("Hallo",10,10,100,30)
    GUICtrlSetState(-1,$GUI_HIDE)
    $checkbox = GUICtrlCreateCheckbox("Sichtbar?",10,50,100,30)

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

    GUISetState(); ==> Unter die ganze Controls
    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $checkbox
    If GUICtrlRead($checkbox) = $GUI_UNCHECKED Then
    GUICtrlSetState($checkbox,$GUI_UNCHECKED)
    GUICtrlSetState($label,$GUI_HIDE)
    Else
    GUICtrlSetState($checkbox,$GUI_CHECKED)
    GUICtrlSetState($Label,$GUI_SHOW)
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Aber wann willst du das denn machen? wenn du beim erstellen eines Fensters bist stell doch einfach

    [autoit]

    GUISetState()

    [/autoit]

    Unter die letze Zeile mit der du die ganze controls erstellst!

    Viel Spaß beim tüffteln!

    Einmal editiert, zuletzt von DjBasslord (28. März 2007 um 21:08)

  • Hallo zusammen,

    ich glaube wir reden an einander vorbei.

    Ich muss leider nach dem die GUI sichtbar ist, neue Elemente erstellen wir z.b. ein Label. Da die GUI schon sichtbar ist, wir auch das Lable gleich angezeigt und dieses nach schema f (Grauer Hintergrund, Schrift Farbe schwarz...) Siehe Script.

    Nun sieht es recht blöd aus, wnn man im einst das Label erstellt und danach erst die Farben etc. einstellt.

    Deshab hofte ich das man irgend wie ein Label oder so gleich Unsichbar erstellen kann!!!


    [autoit]

    #include <guiconstants.au3>
    GUICreate("bla bla",200,200)
    $label = GUICtrlCreateLabel("Hallo",10,10,100,30)
    GUICtrlSetState(-1,$GUI_HIDE)
    $checkbox = GUICtrlCreateCheckbox("Sichtbar?",10,50,100,30)

    GUISetState(); ==> Unter die ganze Controls
    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $checkbox
    If GUICtrlRead($checkbox) = $GUI_UNCHECKED Then
    GUICtrlSetState($checkbox,$GUI_UNCHECKED)

    GUICtrlDelete ($label)

    Else
    GUICtrlSetState($checkbox,$GUI_CHECKED)
    $label = GUICtrlCreateLabel("Hallo",10,10,100,30)

    Sleep (100)

    GUICtrlSetFont($Label, 9, 400, 0, "Arial Black")
    GUICtrlSetBkColor($Label, 0xFFFBF0)
    ;~ GUICtrlSetState($Label,$GUI_SHOW)
    EndIf
    EndSwitch
    WEnd

    [/autoit]


    Gruß

    Wolfgang

  • Naja!

    :hm:Ich verstehe leider jetzt nicht so ganz was du willst!

    Aber ich denke, dass deine frage:

    Zitat


    Original von wrhein:

    Frage:
    Kann man z.B. ein GuiCtrlCreateLabel mit Vorgaben machen, so das es gleich versteck/unsichbar erstellt wird? :

    mit

    [autoit]

    #include <guiconstants.au3>
    GUICtrlSetState(-1,$GUI_HIDE)

    [/autoit]

    doch sehr gut beantwortet ist!
    Was macht es denn für einen Unterschied ob ich es direkt erstlle, hide und bei bedarf zeige und es wieder hide, oder es immer wieder neu erstelle und wieder lösche?

    Dewegen denke Ich mal, dass du dein aktuellestes Script mal on stellen solltest, und dann deine Frage nochmal konkret stellst! Danke!

    Einmal editiert, zuletzt von DjBasslord (29. März 2007 um 16:44)

  • Also ich wie das man z.B. ein erstellt und dann mittels GUICtrlSetState(-1,$GUI_HIDE) diese verstecken. Das ganze macht auch einen sin und ist auch Proktikaben wenn man diese beim erstellen einer GUI benutzt.

    In meinen Script wird eine GUI mit ein paar Schaltflächen erstellt und Sichtbar gemacht. Nun benötige ich aber später noch zusätzliche Label etc. Wenn ich diese nun erstell werden sie gleich sichtbar. Was aber gruntsätzlich nicht falsch währe, wenn ich nicht in einem zweiten schritt Hintergrund und Schriftfarbe als auch dei Schrift ändern müste.

    So in der Art wie ich das in meinem Beispiel Script gemachr wird!

    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("Bla Bla Bla", 400, 250, 193, 115)
    $Button1 = GUICtrlCreateButton("Erstellen", 56, 168, 97, 33, 0)
    $Button2 = GUICtrlCreateButton("Löschen", 184, 168, 97, 33, 0)
    GUICtrlSetState(-1,$GUI_DISABLE)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    ;Erstellen
    $label = GUICtrlCreateLabel("Hallo",10,10,100,30)

    Sleep (300)
    GUICtrlSetFont($Label, 9, 400, 0, "Arial Black")
    Sleep (300)
    GUICtrlSetBkColor($Label, 0xFFFBF0)

    GUICtrlSetState($Button1, $GUI_DISABLE)
    GUICtrlSetState($Button2, $GUI_ENABLE)


    case $Button2

    GUICtrlDelete ($label)

    GUICtrlSetState($Button2, $GUI_DISABLE)
    GUICtrlSetState($Button1, $GUI_ENABLE)
    EndSwitch
    WEnd

    [/autoit]

    In dem Beispiel sieht ma das ganz genau.

    Mir würde gerne das Label beim erstellen sofort unsichbat machen. Da das aber zwei schritte in der Programmierung entspricht wird also erst das Label sicht und dann verschindet es wieder.

    Ich denke untewr einer sauberen Programmierun versteht man was anderes.

    Gruß

    Wolfgang

    • Offizieller Beitrag

    Geht doch problemlos, ohne dass das Label beim Erstellen sichtbar wird:

    [autoit]

    Func _LabelCreate()
    $label = GUICtrlCreateLabel("LABEL", 100, 100)
    GUICtrlSetState(-1,$GUI_HIDE)
    EndFunc

    [/autoit]

    Falls du das sehen kannst bist du Supermann. :rofl:

    Und seit wann ist es unsaubere Programmierung, wenn ich ein Control erstelle und im nächste Schritt dessen Eigenschaften definiere ?
    Dieser Logik kann ich nicht folgen.