So, ich habe einiges versucht und wenig herausgefunden:
Zuerst habe ich ermittelt, welche Botschaften meine Kompo erhält. Die sind aber nicht signifikant anders, wenn die "problematische Öffnung" des Formulars erfolgt.
Delphi-Quellcode:
procedure TDBRadioGroupSql.WndProc(var Message: TMessage);
begin
info('Message.Msg='+IntToStr(Message.Msg)+' ('+IntToHex(Message.Msg,4)+')');
Dann habe ich die
Unit ExtCtrls in mein Projekt als XxxExtCtrls kopiert und den Quelltext debugt. Das half nur etwas.
Ich habe zumindest festgestellt, dass UpdateButtons durch die GroupButton selbst "provoziert" wird
Delphi-Quellcode:
procedure TGroupButton.CNCommand(var Message: TWMCommand);
begin
if not FInClick then
begin
FInClick := True;
try
if ((Message.NotifyCode = BN_CLICKED) or
(Message.NotifyCode = BN_DOUBLECLICKED)) and
TCustomRadioGroupXxx(Parent).CanModify then
inherited;
except
Application.HandleException(Self);
end;
FInClick := False;
end;
end;
Aber die Ereignisbehandlung auch noch zu kontrollieren und alles neu abzuleiten ist ja auch nicht praktikabel.
Fazit:
- TRadioGroup ist nicht gerade sauber programmiert (Click heißt eben für mich Clickl!)
- Meine Kompo wird mit einer kleinen Besonderheit zu behandeln sein, wenn man sie in ein- und ausblendbaren Formularen einsetzt (Ist aber nicht meine Schuld!!!
)
Stahli
@raiguen: Danke für Deinen Hinweis. Dazu muss man aber eben in jeder Anwendung wieder etwas im Formular beachten, was ich gern vermeiden wollte. Das geringste Übel ist wohl, bei der Formaktivierung den Fokus auf eine unproblematische Komponennte zu setzen... Dann Klickt TRadioGroup nicht mehr sinnlos herum.