![]() |
TToolbutton & 32 Bit farbtiefeneinstellung
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
Ich versteh das ganze nicht.... Das im Anhang als Roten Kringel dargestellte ist ein TToolButton... Das im GrünGelben Kringel dargestellte ist ein TSpeedButton.... bei dem zwei unter dem GrünGelben Kringel handelt es sich um einen BitButton. Jetzt zu meinem Problem (Was wohl schon ziemlich deutlich aus dem Screenshot herauskommt) Es trit nur auf wenn ich den 32 bit farbtiefen Modus in Windows eingestellt habe. Im 16 Bit farbtiefen modus von Windows wird die BitMap datei genauso dargestellt wie im grünen kringel. Alle Buttons sind auf dem Screenshot disabled und es geht auch nur um diesen Status. hat Jemand eine Idee warum das teil falsch dargestellt wird und was man dagegen unternehmen könnte ? ich bin Ratlos. Einen anderen Button nehmen geht leider nicht da dies mit enormen aufwand verbunden währe. Freundliche Grüsse Gibb |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
Hallo
Ich kenne zwar nicht die Ursache doch ein Workaround wäre eine "Disabled" ImageList zu verwenden. |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
Ja das währe es ^-^'
Theoretisch. Das Problem ist jedoch das alles dynamisch erstellt wird. Und eine DisabledImageList keine mögliche lösung darstellt. ;) Entweder ich bieg das hin das das mit den normalen bilder funktioniert oder es bleibt so wie es ist. Nun wie es so ist währe es halt besser wenn es mit der einen ImageList funktionieren würde. Ich habe mit einer anderen Toolbar komponente gearbeitet und dort folgenden source entdeckt:
Delphi-Quellcode:
[delphi]
with TmpImage.Canvas do begin
Brush.Color := clBtnFace; FillRect (IRect); Brush.Color := clBtnHighlight; DC := Handle; SetTextColor (DC, clBlack); SetBkColor (DC, clWhite); BitBlt (DC, 1, 1, IWidthA, IHeightA, MonoBmp.Canvas.Handle, 0, 0, ROP_PSDPxax); Brush.Color := clBtnShadow; DC := Handle; SetTextColor (DC, clBlack); SetBkColor (DC, clWhite); BitBlt (DC, 0, 0, IWidthA, IHeightA, MonoBmp.Canvas.Handle, 0, 0, ROP_PSDPxax); end; jeh nachdem ob bei BitBlt ROP_PSDPxax oder ROP_DSPDxax übergeben wird funktioniert es so wie im grünen oder im roten. Leider versteh ich von dem ganzen nicht viel mehr als Bahnhof ;) BitBlt wird in der gdi32.dll aufgerufen welche laut google mit der windwos installation vorhanden sein sollte ? Sagt das jemandem was ? |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
hat niemand eine Idee wie man das beheben könnte ?
Währe wirklich um jeden Input dankbar... lg gibb |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
letzter push...
|
Re: TToolbutton & 32 Bit farbtiefeneinstellung
Zitat:
|
Re: TToolbutton & 32 Bit farbtiefeneinstellung
Weil es nunmal nicht möglich ist ;)
Wobei möglich ist alles, es währe einfach mit zuviel aufwand verbunden. Es müsten im Projekt X dinge umgestellt werden. Es zieht einfach einen Ellen langen Rattenschwanz mit sich. Und die nebeneffekte sind dann mehr oder weniger unbekannt. Sagen wir so: es kostet zuviel zeit, und kann nicht genügend getestet werden resp. ist ein zu grosses risiko. |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
Ich hätte keine Lösung, aber eine Alternative: TPNGImageList von
![]() Damit musst du zwar PNGs nutzen (also auch ein klein wenig konvertieren, aber nicht viel Aufwand). Du hast aber den Vorteil, dass die ImageList für "Disabled"-Elemente die Bilder selbstständig monochrom und/oder halbtransparent darstellt. Damit sollte das dann kein Problem sein. Sie ist von TImageList abgeleitet, kann also allen Komponenten in der gleichen Art und Weise zugeordnet werden |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
Ich finds ja nett das ihr mir alternativen vorschläg :lol:
aaaaber das hilft mir nicht... mir geht es wirklich konkret um DAS Problem. EDIT: deine alternativ scheitert daran das es viel aufwand währe alles umzukonvertieren. Wenn müsste ich einen Parallel betrieb gewährleisten können und das ist mir leider unmöglich. wenn jemand ne alternative von ttoolbutton hätte wo das funktionieren würd DANN wärs vielleicht ne alternative ;) aber das müsste wiederum alles unterstützen was der normale toolbutton unterstützt. |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
Hallo,
Also ich hab sehrwarscheindlich die Fehlerursache gefunden ;) Es liegt mit 99% Wahrscheindlichkeit daran das in der TCustomImageList bei der procedure DoDraw der dll call BitBlt(DestDC, X, Y, Width, Height, SrcDC, 0, 0, ROP_DSPDxax); mit dem ROP_DYPDxax aufgerufen wird. Kann mir jemand sagen wie ich diese am einfachsten üerschreiben kann ? Sie ist Virtuell, wenn ich jedoch eine klasse davon ableite und genau diese funktion deklariere und mit override deklariere habe ich das Problem das gewisse funktionen oder Felder der Klasse halt fehlen. Woran liegt das? hatte bisher mit der vererbung noch nicht alzu viel am hut. Sehrwarscheinlich liegt das ja daran das die felder als Private deklariert sind. Gibt es jedoch ne möglichkeit genau diese felder trozdem zu benutzen ? |
Re: TToolbutton & 32 Bit farbtiefeneinstellung
|
Re: TToolbutton & 32 Bit farbtiefeneinstellung
das kannte ich bisher noch nicht. ;) Hilft mir aber anscheinend nicht weiter da Private deklarationen trozdem nicht geerbt werden können. Ich hätte eigentlich gerne das ganze so gehabt das ich lediglich die funktion DoDraw von TCustomImageList anpassen kann ohne gross noch den ganzen Ratenschwanz nachzuprogrammieren ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:21 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