Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.337 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TMyRadioButton.GetChecked wird nie aufgerufen

  Alt 4. Dez 2010, 15:08
Danke Bummi, aber das bringt mich noch nicht weiter.

Ich versuche es nochmal anders zu erklären:
Wenn der TMyRadioButton sich zeichnet soll er anhand einer von mir definierten Funktion Checked/UnChecked dargestellt werden.
Die Funktion kann z.B. auch einfach immer True zurückliefern.
Alle TMyRadioButtons sollen also jetzt Checked gemalt werden.

Als entsprechende Funktion habe ich (naheliegender Weise) den Checked-Getter vorgesehen, dieser wird aber beim Zeichnen des Buttons offenbar nicht ausgewertet...

...

Ok, ich habe es habe es jetzt anders gelöst, aber eine Lösung nach obigem Muster wäre mir lieber.
Meine Notlösung:

Delphi-Quellcode:
function TodRadioButton.GetChecked: Boolean;
begin
  inherited;
end;

procedure TodRadioButton.SetChecked(Value: Boolean);
begin
  inherited;
  if Value then
    SetData; // entsprechender Wert wird geschrieben
end;

procedure TodRadioButton.WMPaint(var Message: TWMPaint);
begin
  GetData;
  if (CheckValue <> '') and (CheckValue = odCtrl.PropValue) then
    Checked := True; // Manipulation von FChecked
  inherited;
end;

Hier sieht man auch, was ich genau will und mache:
In CheckValue wird einem TodRadioGroup ein "Sollwert" zugewiesen. Weiterhin wird dem Botton eine Komponente zugeweisen, dessen Eigenschaft PropValue mit CheckValue verglichen wird.
Das Ergebnis ja/nein soll im TodRadioButton dargestellt werden.
Wird ein solcher Button angeklickt, weist er seinen Sollwert an odCtrl.PropValue zu.

Die Gruppierung der RadioButtons und die gegenseitige (de-)Aktivierung ist für mich eher störend.
Meine Buttons sollen sich nur auf ihren Sollwert konzentrieren und andere Schalter völlig ignorieren.

Die notwendigen (und eigentlich einfachen) Änderungen wollte ich durch Ersetzen der Getter und Setter erreichen. Der Getter wird aber beim Zeichnen der Buttons überhaupt nicht benutzt!?
Ich kann nicht mal erkennen, wo der Button überheupt gezeichnet wird. Das muss wohl irgendwas im Windows selbst sein.
Im TPanel kann ich erkennen, wo was warum gemalt wird, beim TRadioButton nicht.

Die Notlösung geht als Notlösung, aber sehr zufrieden bin ich damit noch nicht.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat