Vor einiger Zeit hatte ich den Gedanken, für meinen DVB-/Zattoo-Player neben EPG- und Info-Anzeige auch eine Programm-Auswahl-Box zu basten, die wie auf meiner SAT-STB aussieht: Leicht transparent mit hohem Schriftkontrast.
Die List-Box vom SwissDelphiCenter scheidet wegen bekannten Probs (die man lösen könnte) aus, das TJvTransparentPanel oder eine transparente Form ist nur transparent und hat dadurch mangelnden Kontrast zum Live-Bild.
Eine Form mit Alphablend macht auch die Schrift und alles andere durchsichtig.
Warum nicht beides nehmen ? Eine blanke Form mit bsNone und Alpablendvalue = 150, dazu eine gleich große, transparente Form (auch bsNone, TransparentColor passend setzen) oben passig drüber.
Dann eine selbstgemachte Listbox wie sonst auch in OnDrawItem (hier mit Logo-Icons) auf den transparenten Canvas zeichen, eine Scrollbar dazu .... fertig.
Sieht dann so aus wie im angehängten Bild.
Aber Obacht - ein paar Fallstricke !
Offensichtlich reagieren transparente Forms (und auch Panels) nicht auf Maus-Klicks im durchsichtigen Bereich - nur wenn man z.b. auf den selbstgezeichneten Text zielt !
Da das aber sehr lästig und nicht schön ist und man zwingend die Koordinaten des Mausklicks für die Berechnung der Position der Listeneinträge benötigt.
Abhilfe: Einfach das OnMouseUp oder Down als Event in beide Forms eintragen.
Die transparente gibt dann den Klick auf den Text zurück, die Alphablend-Form dann die Position sonstwo in der "Zeile".
Die Scrollbar ist nicht durchsichtig und wird wie gewöhnlich behandelt.
Zur Anregung zum nachmachen anbei die
Unit aus meinem Proggie.
Ich hoffe, die Kommentare machen es deutlich.
Wir so nicht bei euch laufen, weil an mein Proggie angepasst und noch weitere Units fehlen.
Könnte man aber sicher ne universelle Komponente draus basteln.
Fragen ? Posten !