Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Auf enable-Änderung reagieren (https://www.delphipraxis.net/21402-auf-enable-aenderung-reagieren.html)

LoL 2. Mai 2004 13:27


Auf enable-Änderung reagieren
 
hallo zusammen,

der titel sagt ja eigentlich schon alles. Wie kann ich z.B. bei einem Edit-Feld auf die Änderung des Enable-Zustands reagieren?
(von false auf true bzw umgekehrt)? quasi OnEnableChange
Das Ereignis OnChange reagiert nur auf Textänderung!

S2B 2. Mai 2004 13:31

Re: Auf enable-Änderung reagieren
 
Wenn du das Edit-Feld selber aktivierst/deaktivierst, dann müsstest du es doch da reinschreiben können, oder?

LoL 2. Mai 2004 13:33

Re: Auf enable-Änderung reagieren
 
ok das problem is folgendes:

ich hab eine komponente die von TEdit Abgeleitet ist. so nun will ich wenn enable auf false gesetzt wird auch gleich die farbe auf grau setzten, und wenn enable true ist das editfeld wieder weiss machen!

S2B 2. Mai 2004 13:36

Re: Auf enable-Änderung reagieren
 
Von wem/was soll sie denn auf false gesetzt werden? Das macht die doch nicht einfach so...

SirThornberry 2. Mai 2004 13:36

Re: Auf enable-Änderung reagieren
 
wenn du bereits eine komponente hast die von TEdit abgeleitet ist kannst du da auch gleich das Enabled überschreiben und ein event auslösen wenn Enabled neu gesetzt wird

LoL 2. Mai 2004 13:38

Re: Auf enable-Änderung reagieren
 
wird schon sein das ich im quelltext das selbst auf false setzten werde aber ich will mir dann halt die zeile noch ersparen:

bei false:
.color=clbntface;
bei true:
.color=clwhite;

eigentlich ist es reine faulheit

LoL 2. Mai 2004 13:39

Re: Auf enable-Änderung reagieren
 
ja aber wie mache ich ein event das auf die änderung von enable reagiert?
ich müsste ja enbale überschreiben oder?

CalganX 2. Mai 2004 13:43

Re: Auf enable-Änderung reagieren
 
Hi,
du schreibst dir eine Property, mit dem Namen Enabled:
Delphi-Quellcode:
property Enabled: Boolean; write SetEnabled read GetEnabled
Nun schreibst du bei SetEnabled, was du tun willst. ;)

Chris

LoL 2. Mai 2004 13:45

Re: Auf enable-Änderung reagieren
 
ja aber die enbale eigenschaft macht ja auch noch was mit dem editfeld selbst(macht eingaben unmöglich)! wird diese methode denn dann nicht mehr ausgelöst?

CalganX 2. Mai 2004 13:45

Re: Auf enable-Änderung reagieren
 
Hi,
wenn du in deine Funktion ein
Delphi-Quellcode:
  // tu was...
  inherited;
schreibst schon... ;)

Chris

LoL 2. Mai 2004 13:47

Re: Auf enable-Änderung reagieren
 
das is schon klar aber ich will ja auf die änderung von enable reagieren
und nicht selbst nachkucken müssen ob der status geändert wurde

toms 2. Mai 2004 13:48

Re: Auf enable-Änderung reagieren
 
Hi,

WM_ENABLE wird ausgelöst, wenn sich die Eigenschaft Enabled verändert.

Hab schnell eine Kompo geschrieben. Sollte so funktionieren:

Delphi-Quellcode:
unit EditEx;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls;

type
  TOnEnable = procedure(Sender: TObject; Enabled: Boolean) of object;

type
  TEditEx = class(TEdit)
  private
    FOnEnable: TOnEnable;
    procedure WMEnable(var msg: TWMEnable); message WM_ENABLE;
  protected
    procedure DoEnable(Enabled: Boolean); dynamic;
  published
    property OnEnable: TOnEnable read FOnEnable write FOnEnable;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Additional', [TEditEx]);
end;

{ TEditEx }

procedure TEditEx.WMEnable(var msg: TWMEnable);
begin
  DoEnable(Msg.Enabled);
end;

procedure TEditEx.DoEnable;
begin
  if Assigned(FOnEnable) then
    FOnEnable(Self, Enabled);
end;


end.

LoL 2. Mai 2004 13:54

Re: Auf enable-Änderung reagieren
 
wow thx. es funktioniert danke!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:44 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