![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как как првильно закрыть форму? [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?
Создаем форму динамически, грузим в нее данные, если загрузились - показываем форму, если нет - убиваем ее.