Форум: "Начинающим";
Текущий архив: 2010.01.03;
Скачать: [xml.tar.bz2];
ВнизКак как првильно закрыть форму? Найти похожие ветки
← →
Сергей (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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.004 c