AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AlphaBlend auf normale Controls

Ein Thema von G-Baumstamm · begonnen am 12. Feb 2011 · letzter Beitrag vom 24. Jun 2011
Antwort Antwort
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: AlphaBlend auf normale Controls

  Alt 15. Feb 2011, 16:47
Mhm okay ... meine ursprüngliche Idee das AlphaBlend-Prinzip welches die Form kann einfach auf andere Controls anzuwenden war wohl wieder etwas zu naiv ...

Da mir die Kenntnisse fehlen um mir hierfür was vernünftiges zu schreiben (was anscheinend recht schwierig is, wenn ich unsere Fachleute hier richtig verstanden hab ^^), habe ich mal wieder einen Workaround entwickelt, der wenigstens das Verhalten für meine Zwecke halbwegs vernünftig simuliert:

Ich erstelle ggf einfach eine neue Form in Farbe des Hintergrundes, lege diese auf den Panels ab und blende diese Form mit AlphaBlend schrittweise aus bevor ich sie wieder zerstöre. So entsteht optisch der Eindruck, als würden die Panels langsam erscheinen (also Fade-In), was für meine Zwecke an sich reicht.

Das Ganze geschieht beim Wechseln des Tabs einer PageControl, d.h. im OnChange wird die Form sofort erstellt.

Hier gibts aber wieder ein kleines Problem: Es funktioniert alles so wie ich es haben will, allerdings wird ein Teil dessen was sich auf dem Tab befindet erst NACH Abschluss meines Blendvorgangs eingetragen (Text der Edits und ListBoxen, alle ComboBoxen & Buttons, Border & Caption der Panels), im Gegensatz zum gesamten Rest (zB Farbe der Panels, Rest der Edits, alle Labels,Shapes etc). Ich hoffe ihr versteht was ich meine

Scheint mir so, als würde das dafür zuständige Ereignis irgendwie erst später aufgerufen ... Hab allerings keine Ahnung warum dann ein Teil vernünftig erscheint und ein anderer Teil nicht ... Woran kann das liegen und wie umgehe ich das?

LG
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: AlphaBlend auf normale Controls

  Alt 15. Feb 2011, 19:15
Es könnte daran liegen, dass Dein MainForm in dem Moment möglicherweise nicht das aktive Form ist.
Evtl. zeichnen sich die Controls dann erst verzögert komplett...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: AlphaBlend auf normale Controls

  Alt 16. Feb 2011, 14:32
Daran hat es auf jeden Fall nicht gelegen, die letzte Zeile vor dem Beginn des Fades war ein

MainForm.BringToFront; Ich hab mittlerweile mal versucht eine der betroffenen Komponenten mittels Komponente.Repaint vor dem Faden neu zu zeichnen, seltsamerweise hat sich das sogar nicht nur auf diese, sondern auch auf andere ausgewirkt, die jetzt ebenfalls richtig gezeichnet werden. Die wenigen die das nicht gemacht haben, haben noch ein einzelnes Repaint bekommen und waren damit offenbar zufrieden ... ^^

Scheint mir so, als hätte Delphi da nen kleinen Bug oder so ...
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: AlphaBlend auf normale Controls

  Alt 16. Feb 2011, 15:19
Ich weiß nicht, wie die Transparenz im Formular gelöst ist. Daher mal eine Überlegung:

Vielleicht macht das TranspForm eine Art Screenshot von seinem Untergrund und bearbeitet das Bild dann. In dem Moment waren Deine Controls irgendwie noch nicht vollständig.

Vielleicht bekommt das TranspForm vom MainForm bei Zeichenfunktionen eine Nachricht "He Du, hinter Dir ist was verändert". Dann macht das TransForm einen neuen Screenshot (in dem dann auch die anderen Controls inzwischen aktualisiert sind).

Vielleicht ist es aber auch ganz anders...


PS: Kannst ja mal interessehalber ein Label oder Panel durch einen Timer hin und her laufen lassen, wie das System damit zurecht kommt.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
G-Baumstamm

Registriert seit: 9. Jan 2010
63 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: AlphaBlend auf normale Controls

  Alt 16. Feb 2011, 17:31
Hab das mal getestet ... meinen beiden Forms is völlig egal ob da nen Label durchläuft, solange der Blendvorgang im Gange ist, ist dieses nicht zu sehen ...

Lasse ich aber kurz vorher eine von den anderen, nicht richtig sichtbaren Komponenten repainten, sieht man auch das Label. Seltsam ... ^^
Daniel NR
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#6

AW: AlphaBlend auf normale Controls

  Alt 24. Jun 2011, 15:38
Ich hatte die letzten paar Tage das gleiche Problem und hab dies mit der TEZTexturePanel Komponente gelöst.

Bei der Benutzung in einem meiner größeren Programme gab es Zugriffsverletzungen deshalb habe ich im Anhang eine minimal verbesserte Variante von mir.
Angehängte Dateien
Dateityp: pas EZTexturePanel.pas (69,1 KB, 112x aufgerufen)
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz