Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > MDI окна


Автор: Winprogrammer 4.1.2007, 13:17
Доброго времени суток!!!!

Проблема!!!

Есть список всех дочерних форм (TListView) по которым пользователь производит навигацию по дочерним формам. Мне нужно, что бы при клике по кнопке "закрыть" происходило скрытие формы от глаз пользователя. Пробовал через Visible:=false, но ругается последними словами: немогу сделать дочернюю форму невидимой!!! Пробовал через Hide - то же самое!!! :-(

Заранее спасибо за помощь.

Автор: Guedda 4.1.2007, 14:08
Код

WindowState := wsMinimized;

Автор: Winprogrammer 4.1.2007, 14:36
Цитата(Guedda @ 4.1.2007,  14:08)
Код

WindowState := wsMinimized;

Не то. Это равносильно 
Код

procedure TFTemplate.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caMinimize;
end;


Нужно чтобы форма физически существовала, но была скрыта и пользователь её не видел.

Автор: Злоумышленник 4.1.2007, 15:40
так просто закрывай дочернюю форму (Close), без free - вот и всё

Автор: Winprogrammer 4.1.2007, 18:41
Цитата(Злоумышленник @ 4.1.2007,  15:40)
так просто закрывай дочернюю форму (Close), без free - вот и всё

Не так-то всё просто. По умолчанию стоит при нажатии на кнопку закрытия сворачивать форму в нижнюю часть экрана. А если в событии закрытии поставить
Код
    
procedure TFTemplate.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Action:=caNone;
end;

ничего происходить не будет. есть ещё Action:=caHide но ругается то же самое:немогу сделать дочернюю форму невидимой!!! :-(

Автор: Guedda 4.1.2007, 22:25
Попробуй:
Код

ShowWindow(YourForm.Handle, SW_HIDE)

Автор: Злоумышленник 4.1.2007, 23:46
попробуй:

Код

procedure TfmChildMdi.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caHide;
  FormStyle := fsNormal;
end;


Код

procedure TfmMainMdi.Button1Click(Sender: TObject);
begin
  fmChildMdi.Show;
  fmChildMdi.FormStyle := fsMDIChild;
end;


Добавлено @ 23:47 
а никто не знает, как на этом форуме сменить ник?

Автор: Winprogrammer 5.1.2007, 11:17
Цитата(Злоумышленник @ 4.1.2007,  23:46)
попробуй:

Код

procedure TfmChildMdi.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caHide;
  FormStyle := fsNormal;
end;


Код

procedure TfmMainMdi.Button1Click(Sender: TObject);
begin
  fmChildMdi.Show;
  fmChildMdi.FormStyle := fsMDIChild;
end;


Добавлено @ 23:47 
а никто не знает, как на этом форуме сменить ник?

Благодарю. Все прекрасно работает. :-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)