Как на Dialogpage создать Tmonthcalendar?

Andrey26RUSAndrey26RUS Краснодар
отредактировано 06:56 Раздел: FastReport 4.0
Привет!

Перед генерацией отчета нужно у пользователя спросить две даты: "С ..." и "По ...".

Причем это необязательно. Т.е. одну из дат, либо обе, можно не вводить.

Далее, эти даты передаются в запросе как параметры процедуры:
r.DBXQuery1.SQL.Add('select * from Employees.rep_info_source('+amin+','+amax+')');

Если юзер дату оставляет пустой, то amin:='null' или amax:='null'.

ПРОБЛЕМА ВОТ В ЧЕМ:
Раз должна быть возможность оставлять дату пустой, то TfrxDateEditControl тут не подходит.
Поместил на форму два TfrxMaskEditControl
Рядом с каждым - кнопка вызова календарика TMonthControl
var
c:TMonthCalendar;
...
procedure Button3OnClick(Sender: TfrxComponent);
var
r:TfrxReport;
begin
r:=Report;
c:=TMonthCalendar.Create(Sender);
c.top:=0;
c.left:=0;
c.Parent:=TWinControl(DialogPage1); // ВОТ ТУТ ВОТ И ПРОБЛЕМА - Access Violation ...
c.Show;
end;

Как этот компонент-календарик показать на форме?

Комментарии

  • Andrey26RUSAndrey26RUS Краснодар
    отредактировано 06:56
    Извиняюсь, поправочка - НЕ TMonthControl, а TMonthCalendar
  • yuramagyuramag Москва
    отредактировано June 2007
    Во-первых, TfrxDialogPage не является потомком TWinControl. Поэтому приведение типа здесь неуместно.

    Во-вторых, почему бы не использовать нормальные параметры в запросе?
    Например:
    Query1.SQL.Text := 'select * from Employees.rep_info_source(:MIN_DATE, :MAX_DATE)';
    А затем присваивать параметры:
    Query1.ParamByName('MIN_DATE').Value := MinDate;
    Query1.ParamByName('MAX_DATE').Value := MaxDate;
    Где MinDate и MaxDate типа Variant, в которых записано либо Null либо выбранная дата.

    В-третьих, вместо кнопки и календаря лучше использовать TfrxCheckBoxControl и TfrxDateEditControl.
    Если CheckBox.Checked, то Calendar.Enabled := True иначе False
    И по кнопке OK присваивать соответствующие параметры.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.