![]() |
Tedit disabled
hi,
wieder ein Problem mit Tedit. wie ändert man die Farbe des Textes, wenn das Ding disabled ist? Kann mir jemand helfen? ketraun |
Re: Tedit disabled
Das ist ein Weg:
Delphi-Quellcode:
TNewEdit = class (TEdit)
protected procedure SetEnabled(Value: Boolean); override; end; procedure TNewEdit.SetEnabled(Value: Boolean); begin inherited; if Value then Font.Color := clWindowText else Font.Color := clBtnFace; end; |
Re: Tedit disabled
hi,
tut mir leid aber das funktioniert nicht! ketraun |
Re: Tedit disabled
Genaures bitte :chat: ! Warum nicht?
|
Re: Tedit disabled
@Ketraun: Hast Du dem Beitrag entnehmen können, daß Du dazu einen neue Komponente erstellen musst und diese auch in Delphi installieren mußt? Wenn nicht, dann wunder Dich nicht, neolithos hätte das wenigstens noch dazu schreiben können ;-)
...:cat:... |
Re: Tedit disabled
Erstmal Entschuldigung!
Noch eine Variante ohne das man gleich ein neues Control erzeugen muss! Hab ich selbst aber leider noch nicht getestet! Es gibt eine VCL-Nachricht namens CM_ENABLEDCHANGED, welche intern in SetEnabled abgeschickt wird. Man muss sich nur an den Message-Handler des Edit-Controls anhängen.
Delphi-Quellcode:
Frage an den Moderator: Kann man nicht so was (ganz allgemein gehalten)als FAQ oder Source-Code ablegen?
TMyForm = class(...
... private pOldEdProc : TWndMethod; procedure EdProc(var Message: TMessage); procedure TMyForm.FormCreate(...); begin ... pOldEdProc := txtEd.WindowProc; txtEd.WindowProc := EdProc; ... end; procedure TMyForm.EdProc(var Message: TMessage); begin pOldEdProc(Message); // andere Hacken unterstützen with Message do case Msg of CM_ENABLEDCHANGED: if txtEd.Enabled then ... else ...; end; end; |
Re: Tedit disabled
hi,
ich bin ja nicht doof, natürlich hab ich eine neue Komponente erstellt. In der Entwicklungsumgebung gejts, nur zur Laufzeit nicht! Der Alignmentkram muss nicht interressieren, ist zum Ausrichten gedacht! Mach ich was falsch? Oder steht ich auf der Leitung? ketraun
Delphi-Quellcode:
[edit=Luckie]Delphi-Tags hinzugefügt. Mfg, Luckie[/edit]
type
TmaskeditL = class(Tmaskedit) private { Private-Deklarationen } fAlignment : TAlignment; fcolor:tcolor; protected { Protected-Deklarationen } procedure SetEnabled(Value: Boolean); override; public { Public-Deklarationen } procedure SetAlignment(const Value: TAlignment); procedure Setfcolor (const Value: Tcolor); procedure CreateParams(var Params: TCreateParams);override; published { Published-Deklarationen } property Alignment : TAlignment read fAlignment write SetAlignment; property dis_color:Tcolor read fcolor write Setfcolor; end; procedure Register; implementation procedure TmaskEditL.SetAlignment(const Value: TAlignment); begin if Value <> fAlignment then begin fAlignment := Value; RecreateWnd; // erzeuge Fenster neu -> CreateParams end; end; procedure TmaskEditL.Setfcolor (const Value: Tcolor); begin fcolor:=value; end; procedure TmaskEditL.CreateParams(var Params: TCreateParams); const cAlignStyles: array [TAlignment] of Cardinal = (ES_LEFT, ES_RIGHT, ES_CENTER); begin inherited; with Params do Style := Style or cAlignStyles[fAlignment];//taRightJustify]; end; procedure TmaskEditL.SetEnabled(Value: Boolean); begin inherited; if Value then Font.Color := clWindowText else Font.Color := fcolor; end; procedure Register; begin RegisterComponents('Zusätzlich', [TmaskeditL]); end; |
Re: Tedit disabled
hi,
so gehts offensichtlich nicht:
Code:
nach dem inherited ist offensichtlich alles vorbei. Es nützt also garnichts hier die Farbe zu ändern!
procedure TmaskEditL.SetEnabled(Value: Boolean);
begin inherited; if Value then Font.Color := clWindowText else Font.Color := fcolor; invalidate; end; ketraun |
Re: Tedit disabled
hi,
Kann mir jemand erklären warum dieses Verfahren in der IDE funktioniert, aber nicht zur Laufzeit! Die Compilereistellung ist es nicht, ist für beides eingestellt. Wo ist der Unterschied zwischen IDE und laufendem Programm? ketraun |
Re: Tedit disabled
Bei mir sieht es fast genauso aus, nur das ich den Brush ändere. Es Funktioniert!
Schon mal mit dem Debugger die Werte kontrolliert! Was steht in fColor, Value, Font.Color zu welcher Zeit? Nimm mal das Invalidate heraus. Ich hab nämlich gerade das selbe für den Font gemacht und es Functioniert einwandfrei. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 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