![]() |
Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
Hallo Jungs,
ich benutze die Edit-Komponente von den Schweizern ![]() Diese Edit-Komponente kann eine Disabled-Farbe für Hintergrund und für den Text anzeigen. Das funktioniert auch prima. Nur wenn man das XP-Manifest auf die Form legt und das Edit disabled, dann sieht man im disabledten Zustand noch einen Rand der "enabledten"-Farbe. (property Color). Weiss jemand, was mann dagegen machen kann? |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
Hallo Helmi,
der Source scheint relativ alt zu sein. Wenn Du mit XP-Controls arbeitest, darfst Du nicht mehr direkt zeichnen, sondern musst dies über ein ![]() |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
und wie macht man das?
ich finde leider die ThemeServices nicht in der Delphi-Help |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
Damit du möglichst wenig ändern musst hab' ich den Komponentennamen mal beibehalten.
Delphi-Quellcode:
PBExEdit;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TPBExEdit = class(TEdit) private { Private declarations } FDisabledColor: TColor; FDisabledTextColor: TColor; FNormalColor: TColor; FNormalTextColor: TColor; procedure CMEnabledChanged(var msg: TMessage); message CM_ENABLEDCHANGED; procedure SetDisabledColor(const Value: TColor); virtual; procedure SetDisabledTextColor(const Value: TColor); virtual; protected { Protected declarations } public { Public declarations } constructor Create(aOwner: TComponent); override; published { Published declarations } property DisabledTextColor: TColor read FDisabledTextColor write SetDisabledTextColor default clGrayText; property DisabledColor: TColor read FDisabledColor write SetDisabledColor default clWindow; end; procedure Register; implementation procedure Register; begin RegisterComponents('PBGoodies', [TPBExEdit]); end; constructor TPBExEdit.Create(aOwner: TComponent); begin inherited; FNormalColor := clWindow; FNormalTextColor := clWindowText; FDisabledColor := clWindow; FDisabledTextColor := clGrayText; end; procedure TPBExEdit.SetDisabledColor(const Value: TColor); begin if FDisabledColor <> Value then begin FDisabledColor := Value; if not Enabled then Color := Value; end; end; procedure TPBExEdit.SetDisabledTextColor(const Value: TColor); begin if FDisabledTextColor <> Value then begin FDisabledTextColor := Value; if not Enabled then Font.Color := Value; end; end; procedure TPBExEdit.CMEnabledChanged(var msg: TMessage); begin if Enabled then begin Font.Color := FNormalTextColor; Color := FNormalColor; end else begin FNormalTextColor := Font.Color; FNormalColor := Color; Font.Color := FDisabledTextColor; Color := FDisabledColor; end; inherited; end; end. |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
@Flocke: Das ist natürlich eine elegantere Lösung, als das Nachprogrammieren der Paint und Erase Messageproceduren. Es hat nur den Nachteil, dass die Farbe des Fonts im disableten Zustand nicht wirksam wird ;)
[edit]upps, schon behoben[/edit] |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
mmh
also ich hab diese Procedure mal ausprobiert - ist ja echt ganz nett! - Nur das Fontfarben-problem im disabledten zustand bleibt |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
1. Ich hab' um 19:22 noch mal nachkorrigiert - hast du die Änderungen auch benutzt?
2. Bei mir funktioniert das, hab' allerdings keine Styles aktiviert. |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Flocke,
ich hab den letzten Code von dir übernommen - aber es geht nicht. Ich hab mal ein kleines Demo-Programm angehängt (bei mir heisst die Komponente PBExEdit2). |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
Ich hab' deinen Code mal ausprobiert - klappt wirklich nicht.
Ich hatte (dummerweise) die Hintergrundfarbe (DisabledColor) auf clGrayText gesetzt und dann mit den Vordergrundfarben herumgespielt. Dann (und nur dann) nimmt Windows jede andere Farbe als Textfarbe an - ansonsten nimmt es clGrayText für den Text. Kannst du statt mit Enabled auch mit ReadOnly arbeiten? Dann hast du das Problem mit der festen Vordergrundfarbe nicht. |
Re: Edit mit Disable-Farbe: Farbprobleme mit XP-Manifest
nein - sorry
ReadOnly bringt mir nichts - ich brauch schon enabled = false und Farbe |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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