Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi (gelöst) Vererbung (https://www.delphipraxis.net/170585-geloest-vererbung.html)

VkPenguin 24. Sep 2012 19:27


(gelöst) Vererbung
 
Guten Tag zusammen,

ich bin bei den arbeiten an meinem aktuellen Programm auf ein Problem getroffen, das mir Kopfzerbrechen bereitet. Ich möchte die Klasse TCheckbox so erweitern, dass sie weitere Befehle ausführt, wenn der Status von TcheckBox.Checked geändert wird. Das Problem: Wenn ich das richtig sehe, lautet die passende Procedur "Toggle" und stammt von "TCustomCheckbox" ab. Nur wie kann ich angeben, dass ich diese Methode erweitern möchte und nicht eine von TCheckbox eingeführte?

Entschuldigt bitte, falls ich da etwas falsch verstanden habe, aber ich bin noch relativ unerfahren mit dem Thema Vererbung. Ich habe mir mal das durchgelesen, aber um gezielt nach diesem Problem suchen zu können müsste ich den Namen kennen. Ich wäre also alternativ zu einer Lösung auch für eine "Suchhilfe" dankbar.

Stevie 24. Sep 2012 19:45

AW: Vererbung
 
Die korrekte Methode (auch, wenn es komisch klingt) wäre Click. Die Methode Toggle wird nur aufgerufen, wenn man auf die Checkbox klickt und nicht, wenn man im Code z.B.
Delphi-Quellcode:
CheckBox1.Checked := False
schreibt (witzigerweise wird in diesem Fall aber die Click Methode aufgerufen).

Somit würde dein Code etwa wie folgt aussehen:

Delphi-Quellcode:
TMyCheckBox = class(TCheckBox)
protected
  procedure Click; override;
end;

procedure TMyCheckBox.Click;
begin
  inherited;

  // dein Code
end;

Sir Rufo 24. Sep 2012 19:50

AW: Vererbung
 
Wenn sich der Status der Delphi-Referenz durchsuchenTCheckBox ändert, dann wird das Event Delphi-Referenz durchsuchenTCheckBox.OnClick aufgerufen.

Somit ist eigentlich schon alles vorhanden um da weiteren Code aufzurufen.

Einfach mal im Editor einen DoppelKlick auf die CheckBox machen, dann sollte eigentlich der passende Methodenrumpf erscheinen ;)

EDIT: Eine Ableitung der Klasse ist hier oversized :)

VkPenguin 24. Sep 2012 21:03

AW: Vererbung
 
Hallo nocheinmal,

funktioniert tadellos, das war ja einfach :) Vielen lieben Dank für eure Hilfe! .... wieder was gelernt... ;-)


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