Ich bin mir nicht sicher, ob ich Dich richtig verstehe. Eine Möglichkeit wäre, einen
einheitlichen EventHandler für alle RadioGroups einer TabPage festzulegen:
Delphi-Quellcode:
procedure TabPage1_RadioGroupsClick(Sender: TObject)
begin
button1.visible := (RadioGroup1.ItemIndex >= 0)
and (RadioGroup2.ItemIndex >= 0)
and (RadioGroup3.ItemIndex >= 0);
end;
Das kann noch erweitert werden mit einer Regelung für das ganze PageControl:
Delphi-Quellcode:
procedure PageControl_RadioGroupsClick(Sender: TObject)
var ActualPage: TTabSheet;
i0: int;
Result: bool;
btnWeiter: TButton;
begin
ActualPage := (Sender as TPageControl).ActivePage;
Result := false;
btnWeiter := nil;
// alle Controls der aktiven Seite durchgehen
for i0 := 0 to ActualPage.Controls.Count - 1
do begin
// wenn es sich um eine RadioGroup handelt, dann ItemIndex prüfen
if ActualPage.Controls[i0] is TRadioGroup
then Result := Result and ((ActivePage.Controls[i0] as TRadioGroup).ItemIndex >= 0)
else begin
if ActualPage.Controls[i0] is TButton
then begin
if (ActualPage.Controls[i0] as TButton).Caption = 'Weiter'
then btnWeiter := ActualPage.Controls[i0] as TButton;
end;
end;
end;
// Ergebnis zuordnen
btnWeiter.visible := Result;
end;
Wenn die Maßnahmen nicht klar sind, bitte in der Hilfe nachschlagen; danach kann ich es noch erläutern.
Viel Erfolg! Jürgen
/Edit: Das zweite Verfahren habe ich mit der Prüfung des Buttons noch verbessert. Siehe die Erläuterungen in #5.
PS. Ohne Gewähr - siehe meine Signatur.