2 RXL
Слу, может ты мне переформулируешь его задачу, а то я все посты прочитал, но нифига не понял чего надо сделать.
Имхо, два равноправных окна (рабочее и дата) там точно не нужны. Выбор даты - однозначно маленькое модальное окно, которое вызывается (создается) в другом окне (главном или рабочем). Там вроде и проблемы нет.
А если ему надо много документов одновременно открывать, то тогда MDI или нет. Это уже решать в зависимости от удобства.
Но, повторяю, при всех условиях, окно с датой должно создаваться только на время выбора даты.
Я бы сделал примерно так:
unit u_MyDateForm;
interface
юзес
Вындовз, Классес, Мессагес, СысУтилз и чо там еще :)
type
TMyDate = record // вот тока не надо спрашивать, нахрена я создал свою структуру, описывающую дату, просто так нагляднее
Year: BYTE;
Month: BYTE;
Day: BYTE;
end;
TMyDateForm = class(TForm) // Класс формы с выбором даты
бла бла бла контролы
......
public
procedure SetDate(Date: TMyDate); // Процедура будет разбираться с переданой на форму датой и инициализировать контролы
// в соответствии с этим
function GetDate: TMyDate; // Функция будет возвращать дату, выбранную пользователем
end;
// А вот это самое главное: из других форм будем вызывать только эту функцию
// Делать это можно из разных форм
// Параметры:
// Date - дата для инициализации
// OwnerForm - форма-родитель
// Функция возвращает выбранную дату
function ChooseDateTime(Date: TMyDate; OwnerForm: TForm): TMyDate;
implementation
{$R *.DFM}
function ChooseDateTime(Date: TMyDate; OwnerForm: TForm): TMyDate;
var
_Form: TMyDateForm;
begin
_Form := TMyDateForm.Create(OwnerForm);
if not(Assigned(_Form)) then х.з. чо делать, форма не создалась
try
_Form.SetDate(Date); // Процедура разбирается в структуре Date и инициализирует контролы на форме
_Form.ShowModal; // Показываем форму
Result := _Form.GetDate; // Вызываем процедуру, которая собирает данные с контролов обратно в структуру
finally
_Form.Free; // не забыть почистить за собой
end;
end;
Вот примерно так. Это только форма с датой.
По поводу проверки на создание формы. Ну не знаю, я ни разу не сталкивался с тем, что простая форма не создалась. Но проверка на не nil перед употреблением является хорошим тоном.
Больно за код не бейте, писал в текстовом редакторе. Может чо не так. Но идея понятна.