AGB  ·  Datenschutz  ·  Impressum  







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

TToolbutton & 32 Bit farbtiefeneinstellung

Ein Thema von gibb · begonnen am 29. Sep 2008 · letzter Beitrag vom 3. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#1

TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 29. Sep 2008, 11:43
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
Miniaturansicht angehängter Grafiken
screenshot_2008-09-29_113623271_139.png  
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 29. Sep 2008, 12:51
Hallo

Ich kenne zwar nicht die Ursache doch ein Workaround wäre eine "Disabled" ImageList zu verwenden.
Thomas
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#3

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 29. Sep 2008, 13:01
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:
  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;
[delphi]

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 ?
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#4

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 30. Sep 2008, 08:54
hat niemand eine Idee wie man das beheben könnte ?

Währe wirklich um jeden Input dankbar...

lg gibb
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#5

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 1. Okt 2008, 07:45
letzter push...
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 1. Okt 2008, 08:26
Zitat von gibb:
Theoretisch. Das Problem ist jedoch das alles dynamisch erstellt wird. Und eine DisabledImageList keine mögliche lösung darstellt.
Warum nicht? Verstehe ich nicht ganz. Die disabled Bilder können ja auch dynamisch erstellt werden?
Thomas
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#7

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 1. Okt 2008, 09:19
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.
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#8

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 1. Okt 2008, 11:29
Ich hätte keine Lösung, aber eine Alternative: TPNGImageList von www.thany.org.
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
Thomas
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#9

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 1. Okt 2008, 11:32
Ich finds ja nett das ihr mir alternativen vorschläg

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.
  Mit Zitat antworten Zitat
gibb

Registriert seit: 12. Sep 2007
Ort: Bern
178 Beiträge
 
Delphi 2006 Architect
 
#10

Re: TToolbutton & 32 Bit farbtiefeneinstellung

  Alt 3. Okt 2008, 13:16
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 ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 18:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz