Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как как првильно закрыть форму? [D7, XP]


Сергей ©   (2009-11-12 14:54:00) 

Всем привет. В FormShow загружаю в StringGrid данные через   LoadDataBaseOk. Если ошибка нужно закрыть форму не открывая ее close не помогает.

procedure TForm2.FormShow(Sender: TObject);
begin
try
LoadPrintSetupToControl();
G_RowIndex:=-1;
G_Color:=ClGreen;
if LoadDataBaseOk=false then  RiaseError(const_MessageBase);
LoadStrCridColInComBox(ComboBoxNameProject,StringGridPrintParam,1);
LoadStrCridColInComBox(ComboBoxNameReport,StringGridPrintParam,5);
except
!!! НУЖНО ЗАКРЫТЬ ФОРМУ, НЕ ПОКАЗЫВАЯ ЕЕ
end;
end;


{RASkov}   (2009-11-13 18:09:00) [1]

см [1]... нечто:
procedure TForm1.Button1Click(Sender: TObject);
var F: TForm; //Тут может быть любой TMyForm... с изменением ниже в коде...
function LoadData: Boolean;
begin
  result:=Random(5)>2;
  F.Caption:='Загрузилося';
end;
begin
 F:= TForm.Create(nil);
 with F do try
  if LoadData then ShowModal else ShowMessage('НЕ загрузилося');
 finally
  Free;
 end;
end;


Сергей   (2009-11-13 15:56:00) [2]

Всем привет. Попробовал решить задачу предложенным способом. Так как форма
не главная не могу применить метод application.terminate. Возможен другой путь?


Dennis I. Komarov   (2009-11-12 17:54:00) [3]


> 1. До сих пор я полагал, что если перед текстом сообщения
> стоит цитата со значком >, то это означает, что сообщение
> является ответом на эту цитату.

А написано "Цитата" :)
Ну, не принципиально....

> 2. Зачастую данные не только хранятся, но еще и отображаются.
>  И если в программе есть данные, которые меняются редко,
>  а отображаются всегда, то почему бы не хранить их прямо
> в визуальном компоненте?

Правила для того чтобы их нарушать, да и что за правило без исключений :)
Но тем не менее в соседней ветке упорно пытаются сохранить в одном Item две строки, с помощью неких магических символов P&^


Юрий Зотов   (2009-11-12 17:46:00) [4]

> Dennis I. Komarov ©   (12.11.09 17:16) [12]

1. До сих пор я полагал, что если перед текстом сообщения стоит цитата со значком >, то это означает, что сообщение является ответом на эту цитату.

2. Зачастую данные не только хранятся, но еще и отображаются. И если в программе есть данные, которые меняются редко, а отображаются всегда, то почему бы не хранить их прямо в визуальном компоненте?

Всякие модели и т.п. - штука хорошая, но стоит ли превращать их в догмы?


Dennis I. Komarov   (2009-11-12 17:16:00) [5]


> Юрий Зотов ©   (12.11.09 17:12) [11]

Оно не Вам. :) Оно в догонку к [7]


Юрий Зотов   (2009-11-12 17:12:00) [6]

> Dennis I. Komarov ©   (12.11.09 17:05) [10]

В таком случае смысл [8] мне непонятен.


Dennis I. Komarov   (2009-11-12 17:05:00) [7]


> ИМХО, не все компоненты формы обязательно визуальные.

Бесспорно :) Сие я не утверждал...


Юрий Зотов   (2009-11-12 16:59:00) [8]

> Dennis I. Komarov ©   (12.11.09 16:55) [8]

ИМХО, не все компоненты формы обязательно визуальные.


Dennis I. Komarov   (2009-11-12 16:55:00) [9]


> Если он как-то связан с компонентами формы, то придется
> сначала эту форму создать.
ИМХО данные не должны хранится в визуальных компонентах


Юрий Зотов   (2009-11-12 16:50:00) [10]

> Kolan ©   (12.11.09 15:09) [3]

Это зависит от механизма загрузки. Если он как-то связан с компонентами формы, то придется сначала эту форму создать.


Anatoly Podgoretsky   (2009-11-12 15:48:00) [11]


> А записывать данные в StringGrid можно на этапе OnCreate?

в ОnCreate все объекты уже созданы, но не все инициализированы.


clickmaker   (2009-11-12 15:32:00) [12]

можно


Сергей   (2009-11-12 15:30:00) [13]

А записывать данные в StringGrid можно на этапе OnCreate?


Kolan   (2009-11-12 15:09:00) [14]

Зачем создавать форму, загружать что-то и убивать форму если не загрузилось? Нельзя сначала загрузить, и только если загрузить получится — показывать форму.


Separator   (2009-11-12 15:04:00) [15]

А причём тут FormShow? Это событие отрабатывает именно во время показа формы. Для решения проблемы нужно использовать OnCreate и уже в нем, если всё нормально, то Show, иначе Application.Terminate
А в drp файле, обязательно прописать Application.ShowMainForm := False


Юрий Зотов   (2009-11-12 15:00:00) [16]

Зачем делать это в OnShow?

Создаем форму динамически, грузим в нее данные, если загрузились - показываем форму, если нет - убиваем ее.


Наверх

Титульная страница Поиск, карта сайта Написать письмо