Hallo zusammen,
ich möchte einen eigenen RadioBotton erstellen, der Checked selbständig ermittelt (unabhängig von einer Gruppe etc).
Dazu wollte ich GetChecked und SetChecked überschreiben.
GetChecked wird aber nie aufgerufen!?
Delphi-Quellcode:
unit fMyRadioButton;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMyRadioButton =
class(TRadioButton)
private
class var XXX: Boolean;
protected
function GetChecked: Boolean;
override;
procedure SetChecked(Value: Boolean);
override;
public
constructor Create(AOwner: TComponent);
override;
destructor Destroy;
override;
published
end;
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TMyRadioButton }
constructor TMyRadioButton.Create(AOwner: TComponent);
begin
inherited;
end;
destructor TMyRadioButton.Destroy;
begin
inherited;
end;
function TMyRadioButton.GetChecked: Boolean;
// HIER KLEMMT ES
begin
Result := XXX;
// GetChecked wird nie aufgerufen
// ich könnte testweise auch Result := True setzen um mein Anliegen zu verdeutlichen
end;
procedure TMyRadioButton.SetChecked(Value: Boolean);
begin
XXX :=
not XXX;
Invalidate;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
I: Integer;
MyRadioButton: TMyRadioButton;
begin
for I := 1
to 10
do
begin
MyRadioButton := TMyRadioButton.Create(Self);
MyRadioButton.Top := 20 * I;
MyRadioButton.Left := 20;
MyRadioButton.Caption := '
MyRadioButton ' + IntToStr(I);
MyRadioButton.Parent := Self;
MyRadioButton.XXX := True;
// XXX wird auf Wahr gesetzt
end;
end;
end.
Es soll also FChecked ignoriert und auf eine beliebige andere Bedingung geprüft werden.
Wenn der Wert durch Click geändert wird sollen keine anderen Schalter beeinflusst werden (daher kein inherited).
Es werden aber alle Buttons als "not Checked" gezeichnet.
SetChecked wird bei Click aufgerufen, nie aber GetChecked.
Kann ich irgendwie beim Zeichnen der Komponente meine eigene Bedingung abprüfen? Bei den Vorfahren blicke ich diesbezüglich nicht ausreichend durch