AGB  ·  Datenschutz  ·  Impressum  







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

Tedit disabled

Ein Thema von ketraun · begonnen am 12. Aug 2003 · letzter Beitrag vom 14. Aug 2003
Antwort Antwort
Seite 1 von 3  1 23      
ketraun
(Gast)

n/a Beiträge
 
#1

Tedit disabled

  Alt 12. Aug 2003, 11:44
hi,
wieder ein Problem mit Tedit.
wie ändert man die Farbe des Textes, wenn das Ding disabled ist?
Kann mir jemand helfen?
ketraun
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Tedit disabled

  Alt 12. Aug 2003, 12:17
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;
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#3

Re: Tedit disabled

  Alt 12. Aug 2003, 12:56
hi,
tut mir leid aber das funktioniert nicht!
ketraun
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Tedit disabled

  Alt 12. Aug 2003, 13:05
Genaures bitte ! Warum nicht?
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Tedit disabled

  Alt 12. Aug 2003, 13:40
@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

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#6

Re: Tedit disabled

  Alt 12. Aug 2003, 14:14
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:
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;
Frage an den Moderator: Kann man nicht so was (ganz allgemein gehalten)als FAQ oder Source-Code ablegen?
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#7

Re: Tedit disabled

  Alt 12. Aug 2003, 14:44
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:
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;
[edit=Luckie]Delphi-Tags hinzugefügt. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#8

Re: Tedit disabled

  Alt 12. Aug 2003, 15:06
hi,

so gehts offensichtlich nicht:
Code:
procedure TmaskEditL.SetEnabled(Value: Boolean);
begin
  inherited;
  if Value then
     Font.Color := clWindowText
  else
     Font.Color := fcolor;
   invalidate;
end;
nach dem inherited ist offensichtlich alles vorbei. Es nützt also garnichts hier die Farbe zu ändern!
ketraun
  Mit Zitat antworten Zitat
ketraun
(Gast)

n/a Beiträge
 
#9

Re: Tedit disabled

  Alt 13. Aug 2003, 08:50
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
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#10

Re: Tedit disabled

  Alt 13. Aug 2003, 11:01
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.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 03:11 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