AGB  ·  Datenschutz  ·  Impressum  







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

Neue Klasse (Nachkommen)

Ein Thema von LarsSchwencke · begonnen am 21. Jan 2014 · letzter Beitrag vom 24. Jan 2014
Antwort Antwort
LarsSchwencke

Registriert seit: 28. Sep 2012
19 Beiträge
 
#1

Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 13:22
Hallo,

folgendes Problem.
Ich möchte einen Nachkommen der Klasse TSpeedButton so verändern dass
eine Metode X ausgeführt wird wenn sich das Feld Enabled ändert.
Kennt jemand eine Lösung?
Kleines Demo wäre nicht schlecht.

Vielen Dank für Eure bemühungen.

MfG
Lars
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 13:36
Ich würde es so in der Art versuchen:

Delphi-Quellcode:
  TMySpeedButton = class(TSpeedButton)
  private
    procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED;
  end;
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 15:18
@baumina
Diese Nachricht wird schon von Delphi-Referenz durchsuchenTControl empfangen.
Dort wird aber einfach nur Delphi-Referenz durchsuchenTControl.Invalidate aufgerufen und die ist public und virtual .

Delphi-Quellcode:
  TMySpeedButton = class( TSpeedButton )
  private
    FOldEnabled : Boolean;
    FOnEnabledChanged : TNotifyEvent;
  public
    procedure Invalidate; override;
  published
    property OnEnabledChanged : TNotifyEvent read FOnEnabledChanged write FOnEnabledChanged;
  end;

{ TMySpeedButton }

procedure TMySpeedButton.Invalidate;
begin
  inherited;
  if FOldEnabled <> Enabled then
  begin
    FOldEnabled := Enabled;
    if Assigned( OnEnabledChanged ) then
      OnEnabledChanged( Self );
  end;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 15:22
Aber wenn ich einen Blick in Buttons.pas werfe, holt sich der TSpeedButton das auch so ab.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 15:30
Aber wenn ich einen Blick in Buttons.pas werfe, holt sich der TSpeedButton das auch so ab.
stimmt auch wieder

aber dadurch überschreibt man das Handling für den originalen SpeedButton ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (21. Jan 2014 um 15:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 15:32
AFAIK ist das auch das ganz normale Vorgehen, wenn man eine bestimmte Message gesondert behandeln möchte.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 15:43
AFAIK ist das auch das ganz normale Vorgehen, wenn man eine bestimmte Message gesondert behandeln möchte.
Nur doof, wenn dann der SpeedButton zwar die Eigenschaft Enabled wechselt, die Anzeige dazu aber nicht mehr passt
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 15:47
Dazu ruft man ja auch inherited auf.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Neue Klasse (Nachkommen)

  Alt 21. Jan 2014, 15:53
Dazu ruft man ja auch inherited auf.
aua ... ich brauch wohl einen Kaffee (oder zwei )
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
LarsSchwencke

Registriert seit: 28. Sep 2012
19 Beiträge
 
#10

AW: Neue Klasse (Nachkommen)

  Alt 24. Jan 2014, 17:23
Hallo,

vielen Dank für die Menge an Infos.
Habe es so realisiert wie baumina es
vorgeschlagen hat und es funktioniert bestens.
Danke.

MfG
Lars
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:56 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