Im vorherigen Beispiel werden die Dialogformen angezeigt. Unabhängig davon, ob wir ein Häkchen bei "Have children" gesetzt haben oder nicht. Schauen wir uns an, wie man den zweiten Dialog verbergen kann, falls kein Häkchen gesetzt worden ist. Hierfür erstellen wir einen Bearbeiter OnClick beim Button OK im ersten Dialog (führen Sie einen Doppelklick auf den Button aus, um den Bearbeiter zu erstellen):
PascalScript:
procedure Button1OnClick(Sender: TfrxComponent);
begin
DialogPage2.Visible := CheckBox1.Checked;
end;
C++Script:
void Button1OnClick(TfrxComponent Sender)
{
DialogPage2.Visible = CheckBox1.Checked;
}
Dieser Code verbirgt den zweiten Dialog (DialogPage2), falls man kein Häkchen gesetzt hat. Wenn wir den Report nun starten, sehen wir, dass der Report einwandfrei funktioniert.
Eine andere Möglichkeit der Steuerung der Dialogformen, ist die Verwendung des Ereignisses OnRunDialogs. Um den Bearbeiter dieses Ereignisses zu erstellen, wählen sie das Objekt Report im Reporttree oder im Objektinspektor aus und gehen auf den Tab "Ereignis" im Inspektor. Der Doppelklick auf das Ereignis OnRunDialogs erstellt nun den Bearbeiter:
Im Bearbeiter schreiben wir folgenden Code:
PascalScript:
procedure frxReport1OnRunDialogs(var Result: Boolean);
begin
Result := DialogPage1.ShowModal = mrOk;
if Result then
begin
if CheckBox1.Checked then
Result := DialogPage2.ShowModal = mrOk;
end;
end;
C++Script:
void frxReport1OnRunDialogs(bool &Result);
{
Result = DialogPage1.ShowModal == mrOk;
if (Result)
{
if (CheckBox1.Checked)
Result = DialogPage2.ShowModal == mrOk;
}
}
Der Bearbeiter arbeitet folgendermaßen: wir zeigen den ersten Dialog. Wird dieser mit OK geschlossen, schauen wir uns das Kontrollkästchen CheckBox1 an und zeigen den zweiten Dialog, falls nötig. Gibt der Bearbeiter Result = True wieder, so wird der Report erstellt. Ist Result = False, so wird der Report gestoppt.