Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.03;
Скачать: CL | DM;

Вниз

Как как првильно закрыть форму?   Найти похожие ветки 

 
Сергей   (2009-11-12 14:54) [0]

Всем привет. В 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;


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

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

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


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

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


 
Kolan ©   (2009-11-12 15:09) [3]

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


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

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


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

можно


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


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

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


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

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

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


 
Dennis I. Komarov ©   (2009-11-12 16:55) [8]


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


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

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

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


 
Dennis I. Komarov ©   (2009-11-12 17:05) [10]


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

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


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

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

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


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


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

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


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

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

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

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

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


 
Dennis I. Komarov ©   (2009-11-12 17:54) [14]


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

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

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

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


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

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


 
{RASkov} ©   (2009-11-13 18:09) [16]

см [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;



Страницы: 1 вся ветка

Текущий архив: 2010.01.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
15-1256743947
Игорь
2009-10-28 18:32
2010.01.03
Бросить курить


15-1257334588
XXL
2009-11-04 14:36
2010.01.03
Сантехники от программирования - нужны ли они ?


2-1257934753
kyn66
2009-11-11 13:19
2010.01.03
Запуск программы(только 1 копия)


2-1258124293
intlex
2009-11-13 17:58
2010.01.03
Правила вызова методов класса (ООП)


15-1257160759
JohnKorsh
2009-11-02 14:19
2010.01.03
Не посоветует ли кто книгу по работе с сетями из Дельфи?