Leidiges Flickerproblem

  • Hallo allerseits,


    ich habe nach lngerer Pause noch mal versucht mich des leidigen Flickerproblems anzunehmen, leider ohne Erfolg. Es geht darum dass nornamle Labels, sofern sie nur bei einer bestimmten Bedingung angezwigt werden, soolen, bei Refresh einen unschönen Hintergrundblock anzeigen. Dieses liegt wohl anscheinend daran, dass das Hintergrundbild über das Label rübergezeichnet wird. So richtige brauchbare Lösungen habe ich leider bisher nicht gefunden, ausser dass hier mit einem entsprechenden Redraw gearbeitet werden muss. Bei einer If Beding bekomme ich das leider nicht hin, da zeigt er mir erst gar nicht das Hintergrundbild. Vielleicht hat einer eine etwas saubere funktionsfähige Lösung. In diesem Beispiel soll ein Label eingeblendet werden, wenn der Speicher einen bestimmten Wert unterschritten hat.


    Danke schon mal im Voraus


    lg

  • Hi casi4712 ,


    kannst du bitte erstmal die etlichen Fehler im Skript beheben, die dir der AutoIt syntax checker (Au3Check.exe) sagt, wenn du #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 als erste Zeile deinem Skript hinzufügst und dann [STRG]+[F5] (Au3Check) ausführst? Ich hatte gerade damit begonnen, aber das ist mir ehrlich gesagt zu viel Aufwand/habe die Zeit gerade nicht.

    Außerdem hat dein Beispiel nur bedingt viel mit deinem beschriebenen Problem zu tun, soweit ich erkennen konnte.


    Viele Grüße
    Sven

  • Danke erstmal,


    na ich weiss schon dass da einige Fehler drin sind, mir war es gelungen ein statisches Label zu erzeugen, dass ich wie folgt erzeuge:


    aber an welcher Stelle kann ich hier eine if bedingung erzeugen, dass dieses nur in einem bestimmten Fall angezeigt wird?



    danke nochmal


    lg

  • mir war es gelungen ein statisches Label zu erzeugen

    Wo?

    Du erstellst 3 Variablen für Label ($RamLabel, $PageFreeLabel, $LabelRamknapp), erstellst damit aber nirgendwo ein Label (GuiCtrlCreateLabel). Deine Zuweisungen (GuiCtrlSetData) laufen somit ins Leere.


    Übrigens werden in Funktionen KEINE globalen Variablen deklariert!

  • Kannst du dir bitte casi4712 , mal die Zeit nehmen und ganz in Ruhe beschreiben, was du eigentlich erreichen möchtest?

    Dein Beispiel Skript ist nicht wirklich brauchbar, doch ich glaube wenn du langsam, Stück für Stück definierst, was du möchtest (auch unbedingt mit dem Gesamtziel), dann können wir dir ggf. ein Beispiel (Code) aufbauen/zeigen, den du dann für dich validieren kannst. Also bei dem du dann sagen kannst, ob es genau das ist was du willst und brauchst oder eben nicht.

    So kommen wir ggf. besser ans Ziel, als mit diesem Code-Beispiel bisher. Der Inhalt deines ersten posts #1 reicht mir persönlich nicht aus, zu verstehen was du brauchst und möchtest.
    Bitte formuliere es ganz in Ruhe voll aus, dann wird dir sicherlich gut und zügig geholfen, Danke 🤝 .

    Viele Grüße
    Sven

  • Die crlsetdata stehen da sind natürlich überflüssig, da ich ja hier kein normales Flackerlabel erzeugen will. So ich erkläre es jetzt noch mal. Bei einem normalen Label, dass fallweise, also beim erreichen einer Bedingung eingeblendet wird, entsteht ein unschönes flackern, dass soll wohl auch normal sein. Ich möchte mit einer GDI Plus Varainte ein bedingtes Label erzeugen ohne diese Problematik. Ich hoffe ich habe mich dieses mal verständlich ausgedrückt. Ich kann mir nicht vorstellen, dass über diese Problematik hier noch nie jemand gestolpert ist.


    lg

  • Dann anders herum, hier ein Code-Beispiel (normales Label):

    Kannst du dieses Beispiel soweit erweitern, dass der Flackereffekt auftritt?

    Viele Grüße
    Sven

  • Und hier casi4712 eine Variante mit Hintergrundbild:

    Ich hoffe das bei dir das Standardbild "C:\Windows\Web\Wallpaper\Windows\img0.jpg" existiert, ansonsten nehm eines auf deinem Rechner 😀 .

    Viele Grüße
    Sven

  • Und nun noch die Variante mit einem transparenten Label:

    Wenn man hier nun zügig und oft auf Anzeigen/Verstecken klickt, flackert der Label-Hintergrund, meinst du das???


    Viele Grüße
    Sven


    Update:

    • Änderungen von Variante 1 (normales Label was über einen Button ge'toggle't wird) zu Variante 2 (mit Hintergrundbild): Diff
    • Änderungen von Variante 2 zu Variante 3 (transparentes Label, leichtes flackern): Diff
  • Recht schönen Dank,

    Du hast Dir richtig Arbeit gemacht aber ich denke ich habe mich wieder falsch ausgdrückt. Na bin auch noch nicht allzu lange in Deutschland. Es geht hier nicht um das bewusste Hervorzaubern eines Labels per Buttonklick, sondern um das Erscheinen eines Labels beim Erreichen eines bestimmten Wertes, welches periodisch per AdlibRegister berrechnet wird. Ich versuchs mal mit einer Art PseudoCode, vielleicht wird des dann klar.


    Adlibaufruf, alle 1000ms


    Aldlib berrechnet $FreeRAM


    Wenn $FreeRam < 3 kein Label einblenden


    Sonst Label eiblenden "Speicher wird knapp)


    Aber halt das ganze ohne Texthintergrundgeflacker alle 1000ms


    Hoffe jeztzt ist es klar geworden



    Danke noch mal

    und schönen Abend noch

  • Es ist völlig egal ob AdlibRegister() das Label triggert oder ob es ein Button tut.
    Die Frage ist/war, ob mein drittes Beispiel das flackern sein soll, was du meinst oder eben nicht?

    Dies ist vorerst mein letzter Beitrag zu diesem Thread. Ich verstehe dein Anliegen anscheinend nicht und du kannst es, aus meiner Sicht, nicht so kommunizieren, dass ich etwas besseres dazu beitragen kann. Daher bin ich hier erstmal raus. Viel Glück mit den anderen Helfenden 🤞 .

    Mein Tipp: Lies dir nochmal meine Hinweise aus post #5 durch und beherzige dies, dann wird dir hier sicherlich geholfen.

    Viele Grüße, over and out,
    Sven

  • Lies mal in den angelsächsischen Foren, dort wird dieses Problem schon als Problem gesehen, leider habe ich bislang keine wiklich eleganten Lösungen gefunden, ich bin doch nicht bekloppt, auch wenn ich mir mittlrweile fast so vorkomme und besonders pingelich bin ich zudem auch nicht. So ich stell dass jetzt noch mal so zusammen dass man dass sieht was ich meine.

  • schaue ich mir noch mal, komischerweise sehr ich das Problen hier auf meinem Recher im Office nicht, möglicherweise hängt das mit dem verwendeten Monitor oder der Grafikkarte zusammen, ich schaue nachher noch mal.

  • Ja Velted,

    in dem von dir verlinken Thread waren es 34 posts, wo etliche Leute versucht haben zu helfen und Tipps gegeben haben. Das ganze Thema reicht allerdings zurück bis in den Januar 2022. Ich erinnere mich ziemlich genau, da ich damals casi4712 bzgl. Labels die nur unter bestimmten Bedingungen in der GUI erscheinen sollten, beraten habe und auch dort viel Zeit investiert habe. Unter anderem hatte ich die verschiedenen Änderungen durch GitHub commits und somit durch diffs deutlich gemacht, damit klar wird was zu was führt (siehe bspw. post #42).

    Damals war das Anliegen, ihm die Grundlagen besser zu vermitteln, mit etlichen Beispielen und Ratschlägen durch dich, mich und den vielen anderen Helfenden. Am Ende führte dies zu einem Thread mit #67 posts 😒 . Leider sind die Beratungsversuche meine Meinung nach nicht beachtet, überlesen, nicht verstanden oder ggf. ignoriert worden (trotz vielerlei verschiedener Hilfestellungen und Ansätzen). Ich bin stark der Meinung, dass man aus den vergangenen Fehlern lernen können sollte und den Usern hier auch mal zuhören sollte, wenn sie sich die Zeit nehmen um einem wirklich zu helfen.

    Es steht jedem frei, so lange zu unterstützen wie es einem beliebt, doch die Threads unnötig in die Länge zu ziehen, da man sich darüber unterhalten muss was von den Code-Beispielen der Helfenden beachtet wurde und was nicht, ist sicherlich nicht sinnvoll. Ich bin kein Moderator und möchte auch kein wannabe Mod sein oder so, doch irgendwann ist der Bedarf erreicht Grenzen zu setzen.

    [...] auch wenn es nicht zur Problemlösung beiträgt, musste ich zur Auf- und Erklärung dieses Statement verfassen.
    Sorry BugFix , sorry gegenüber den anderen Mods und sorry gegenüber jedem anderen Helfenden hier.

    Viele Grüße
    Sven

  • Ein Label, dass sich über einem Pic-Control befindet, flackert, wenn man es zu oft aktualisiert. Das habe ich auch schon so erlebt.

    Man kann entweder die Aktualisierungrate reduzieren, wie schon vorgeschlagen, oder gleich ganz auf das Label verzichten und alles auf das Pic-Control zeichnen.

    Hier mal ein Beispiel ( casi4712: das auch lauffähig ist, im Gegensatz zu Deinen Beispielen.):

  • Wundervolles Beispiel Oscar , Danke 👍 .

    So lassen sich auch Labels mit Rahmen (rectangle) sicherlich schön implementieren.
    Bisher hatte ich dies immer über vier weitere Labels die als "border" dienten gemacht 😅 .

    Viele Grüße
    Sven

  • So ich habe das ganze noch mal auf ein Minimum reduziert, ich hatte das Problem zunächst zurückgestellt, da ich die meisten Label auch nur nach längerer Zeit aktualisiere, ist es mir vielleicht auch nicht mehr aufgegfallen, aber in diesem Bespiel sollte es schon häufiger sein, Ich denke das man das flackern der warnmeldung auf jeden Fall sehen sollte, und noch mal an@VE, ja ich hatte Deine Vorschläge auch reingebracht.


    Oscar , na schön dass nicht nur mir das mit dem Geflacker auffällt, Autoit kann doch ne ganze Menge, ich bin immer noch fasziniert von den Möglichkeiten, aber wieso ist es nicht möglich ein Label völlig transparent zu schalten, das erschliest sich mir nicht ganz. Übrigens sehr gelungen was du da gezaubert hast


    Die Besten Grüße, Danke und

    ein schönes Wochenende