Background Bild und GUI Elemente

  • Hallo allerseits,

    ich habe mal eine kleine Frage. Mir ist jetzt schon des öfteren aufgefallen, dass es bei der Verwendung von Hintergrundbildern, die via Fileinstall installiert werden zu Bildfehlern kommt. Dass sieht dann zB so aus, dass bspw. bei comboboxen zunächst nur das innere weisse dargestellt wird, machchmal ist sogar eine vertikale Einschnürung der Box zu sehen, auch der Arrow ist nicht da. Erst wenn mann mit der Maus über das Element streift, ist die Box dann vollständig zu sehen. Dass schaut natürlich ziemlich blöd aus, kennt jemand den Effekt? Ich habe es mit jpg und nmit bmp versucht


    lg und schöne Restwoche noch

  • jo, danke Dir, gelesen hatte ich das auch schon, aber es funktioniert bloss nicht :(

  • Du solltest dich ein wenig mit GUI und der :rtfm: beschäftigen.

    Schreib Zeile 2 mal hinter die Zeile, wo das Hintergrundbild festegelegt wird oder setze anstatt der -1 das entsprechende Handle ein.

  • Danke noch mal, also ich habs jetzt in 4 versionen gestestet, einmal direkt danach mit -1 und ein mal mit dem Handl $hGui jeweils bei der Button Definition und hinter dem Bildaufruf. Es bleibt immer der selbe Effekt.

    Einen schönen Tag noch

    lg

    2 Mal editiert, zuletzt von casi4712 (2. Oktober 2022 um 20:49)

  • Hmm, kann deinen Fehler nachvollziehen.

    Ich konnte es so beheben:

    1. Eine Variable für das Handle vom Hintergrund Global setzen. Z.B.: Global $BG (Zeile 34)

    2. Der Variable das Handle vom Hintergrund zuweisen: $BG = GUICtrlCreatePic('C:\Windows\Temp\hg.bmp', 0, 25, 920, 660) (Zeile 102)

    3. Nach dem _createbuttons bzw. _createLabels foldendes ausführen: GUICtrlSetImage($BG, 'C:\Windows\Temp\hg.bmp') (Zeile52)

    Das Ganze funktionierte dann auch ohne GUICtrlSetState(-1, $GUI_DISABLE) aber schaden tut es sicherlich nicht.

    2 Mal editiert, zuletzt von Moombas (4. Oktober 2022 um 08:22)

  • Weitere Tipps:

    1. Brauchst du Variableninhalte Global, definiere sie Global und nutze/ändere sie in der Funktion. Idealerweise keine Variablen in einer Funktion Global definieren.

    2. kein Dim verwenden, besser ist Local bzw. Global

    3. Wenn du schon globale Konstanten definierst (Zeile 34 - 41), setze sie auch auf Global Const, damit sie nicht versehentlich geändert werden können.

  • So, erst mal recht lieben Dank Moombas für die tattkräfrige Unterstützung. Ich habe deine Vorschläge entsprechend eiingarbeitet, er bemeckert aber aus irgend einem Grunde eine angeblich fehlende Klammer,, wahrscheinlich bin blind, daber sewhe da keine Klammer die fehlt. Das ganze schaut jetzt so aus:

    lg und schönen Sonntag noch

    Einmal editiert, zuletzt von casi4712 (2. Oktober 2022 um 20:49)

  • er bemeckert aber aus irgend einem Grunde eine angeblich fehlende Klammer,,

    Wie Oscar dir schon angeraten hat: Poste bitte lauffähige Beispiele!

    Andernfalls bürdest du den freiwilligen Helfern unnötige Arbeit auf, die wohl kaum einer leisten will. Dazu gehören importierte UDFs und sonstige benutzte Funktionen bzw. Variablen oder Daten.

    Folgendes fehlt:

    GUIBkImage.au3, Services.au3, GuiCtrlSetOnHover_UDF.au3, _fu1(), _fu2()

    und die hier verwendeten *.bmp...

    FileInstall("C:\Users\user\Pictures\scr09082022-084252.bmp", "C:\Windows\Temp\hg.bmp", 1)

  • Hallo,

    das lauffähige Beispiel hatte ich doch gepostet, ich habe es doch auch entsprechend den Vorschlägen von Mombass gepostet! Da er ja gesagt hatte, er konnte das Problem nachvollziehen, kann ich nun Deine Einlassung nicht ganz nachvollziehen. Soll ich den Inhalt von den UDFs posten, meinst Du das? Oder das Hintergrundbild? Ich hatte es mit meheren Bildern und Formaten probiert,

    lg

  • AutoIt
    $BG = ('C:\Windows\Temp\hg.bmp', 0, 25, 920, 660)
        GUICtrlCreatePic ($BG)

    Hust... was soll dass denn werden? :/

    So macht es Sinn:

    $BG = GUICtrlCreatePic('C:\Windows\Temp\hg.bmp', 0, 25, 920, 660)


    AutoIt
    global $combo1 = GUICtrlCreateCombo ("Scripte", 300, 557, 150, 120)
    global $btnStart = GUICtrlCreateButton("🟥", 450, 557, 23, 23)

    Die Deklarationen von globalen Variablen gehören nicht in eine Funktion!

  • ... kann Deine Einlassung nicht ganz nachvollziehen. Soll ich den Inhalt von den UDFs posten, meinst Du das? Oder das Hintergrundbild? Ich hatte es mit mehreren Bildern und Formaten probiert,

    Ja !

    Packe die von Bitnugger genannten Elemente (Fremd-UDF's & Grafik etc.) in eine .zip-Datei und stelle sie uns zur Verfügung.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • das lauffähige Beispiel hatte ich doch gepostet, ich habe es doch auch entsprechend den Vorschlägen von Mombass gepostet! Da er ja gesagt hatte, er konnte das Problem nachvollziehen, kann ich nun Deine Einlassung nicht ganz nachvollziehen. Soll ich den Inhalt von den UDFs posten, meinst Du das? Oder das Hintergrundbild? Ich hatte es mit meheren Bildern und Formaten probiert,

    ...aber es hat nicht funktioniert.

    Hm, ja, das ist dann natürlich schwierig bis unmöglich für dich und auch nicht dein Vergehen, wenn das Forum Zicken wegen zu großer Dateianhänge macht.

    Solange Gun-Food das nicht gefixt hat, geht das wohl nicht so, wie Musashi es empfohlen hat. Bis dahin kannst du als Workaround einfach den Inhalt der UDFs posten; aber setzte sie in Code-Tags! Mit Bildern ist es schwieriger... verkleinere sie einfach, damit der Upload klappt, oder verwende Bilder, die mit AutoIt installiert wurden, z.B.: "c:\Program Files (x86)\AutoIt3\Examples\Helpfile\Extras\Compass.bmp"

    Einmal editiert, zuletzt von Bitnugger (2. Oktober 2022 um 19:16)

  • okidoki, dann fehlte das GUICtrlCreatePic, hatte mich schon gwundert. Jetzt schauts sauber aus.

    Dann bedanke ich mich noch mal recht herzlich bei euch

    lg und schöne Feiertage noch

  • GUIDelete($hGui)

    Nach dieser Zeile muss ein Exit folgen... denn ohne GUI gibt es auch keine Msg und dein Script funktioniert somit nicht mehr korrekt.

    local $gMsg = GUIGetMsg()

    Außerhalb einer Funktion sind alle Variablen Global und es ist dabei völlig egal, ob du sie mit Local oder Global deklarierst!

    Zudem sollte die Deklaration besser vor dem While stehen. In deinem Fall ist die Variable aber eh überflüssig, weil du sie ja lediglich einmalig für Switch benötigst... da kannst du es besser so machen:

    Switch GUIGetMsg()

  • Hust... was soll dass denn werden? :/

    So macht es Sinn:

    $BG = GUICtrlCreatePic('C:\Windows\Temp\hg.bmp', 0, 25, 920, 660)

    Das muss ich zu 50% auf meine Kappe nehmen. In meinem Beispiel in Post #7 hatte ich beim Copy/Paste einfügen seiner Werte das bereits vorhandene GUICtrlCreatePic überkopiert, was bei ihm scheinbar für verwirrung sorgte. Das habe ich jetzt natürlich angepasst.

  • okidoki, nicht in die Haare kriegen hier in meinem Post lach,, ok dann weiss ich erst mal Bescheid.

    Mir ist noch ein ähnlicher Effekt aufgefallen, deswegen zeig ich dass gleich mal hier, denke passt hier gut rein. Bei einer Drive Abfrage soll nur ein Text erscheinen, wenn der Schwellwert unterschritten ist. Ich habe die Set Zeile für den Fall, das dies nicht der Fall ist transparent geschaltet, trotzdem kommt beim Aufruf der Adlib Funktion immer ein störender schwarzer Balken. Dieser Effekt entsteht wiederum nur mit einem Hintegrund. Leider konnte ich diesen Effekt mit der obigen Methode nicht beseitigen. Die AdlibRegister Zeit ist hier sehr kurz eingestellt, nur um diesen Effekt zu verdeutlichen.

  • Kannst du das Label nicht einfach ausblenden, anstatt es transparent zu machen oder noch einfacher (wohl aber eher eine Notlösung): die Daten '' (leer) und Width/Heigth auf 0 setzen, wenn es nicht angezeigt werden soll, der Weg andersrum wenn es angezeigt werden soll?

  • Mir ist noch ein ähnlicher Effekt aufgefallen,

    den du sebst verursachst... du hast da ein paar fette Fehler drin... hier mal eine "leicht" korrigierte Version...

    PS: GuiCtrlSetOnHover_UDF.au3 ist bei mir GuiCtrlOnHover.au3