Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Вниз

Application.CreateForm   Найти похожие ветки 

 
Novichok_New ©   (2007-02-25 08:55) [0]

В проекте у меня три формы. В проекте мне приходится работать с большим колличеством данных (я их храню в таблице на Form3). Но вот не задача: загружуется она третьей, а при загрузке все остальные форме заполняются из неё! И вторая проблема SaveToFile(таблицы на Form3) происходит при Form3.Close, а если мы её не открывали, то конечно и закрывать нечего и... при закрытии программы данные за сеанс работы пропадают! :-(
Поэтому я хотел задать два вопросика:
1. Как загрузить первой 3-ю форму, не отображая её?
2. Как выполнить то - что прописано в onClose формы №3 из Form2 или 1?
Пока у меня только идея:
Form3.Show;
Form3.Close;
:-)


 
Leonid Troyanovsky ©   (2007-02-25 09:40) [1]


> Novichok_New ©   (25.02.07 08:55)  

> В проекте у меня три формы. В проекте мне приходится работать
> с большим колличеством данных (я их храню в таблице на Form3).
>  Но вот не задача: загружуется она третьей, а при загрузке
> все остальные форме заполняются из неё!


Вообще-то, проще сделать так:
Данные загружаются/подготавливаются при создании главной формы
(это первая созданная в проекте).
Ну, а изменения сохраняются в файл в OnCloseQuery главной формы.

Form3, которая, видимо, служит редактором для загружаемых данных,
создается/показывается по необходимости.

Тогда формы, нуждающиеся в данных получат вовремя, т.е. после
создания главной формы. Кстати, обращаться к ней очень просто:
Application.MainForm. Для этого возможно понадобится прописать
в разделе implementation uses MainFormUnit.

--
Regards, LVT.


 
Novichok_New ©   (2007-02-25 10:44) [2]

Вы всё говорите правильно, Leonid Troyanovsky!
Но решая таким образом вопрос, мы не добъёмся главного: не показывать при загрузке Form3!
Я пытался решить вопрос аналогично:
begin
 Application.Initialize;
 Application.CreateForm(TForm3, Form3); //получаем Form3.Show-!!!!
 Application.CreateForm(TFormMain, FormMain);
 Application.Run;
end.

И я думаю, что просто не верно пишу:
procedure TFormMain.BitBtn1Click(Sender: TObject);
begin
Form3.FormClose; //правда она не открыта :-)
end;

Неужели такое не возможно?!


 
Leonid Troyanovsky ©   (2007-02-25 11:12) [3]


> Novichok_New ©   (25.02.07 10:44) [2]

> Но решая таким образом вопрос, мы не добъёмся главного:
> не показывать при загрузке Form3!

Отнюдь, проблема, как раз, решается кардинально.
Form3 будет показываться только тогда, когда это нужно.
Например, убрав ее из списка автосоздаваемых в нужный
момент делаем:

with TForm3.Create(nil) do
 try
    ShowModal;
 finally
    Free;
 end;


Другой вопрос - как Form3 будет редактировать данные,
которые храняться, скажем, в Form1 - в главной форме.
Это тоже довольно просто - просто надо использовать не,
скажем, TStringGrid, а TDrawGrid.


> Application.CreateForm(TForm3, Form3); //получаем Form3.
> Show-!!!!


Получаем, что главной формой будет Form3.

--
Regards, LVT.


 
Novichok_New ©   (2007-02-25 11:26) [4]

А если так "извратиться":
Запускаем программу:
begin
Application.Initialize;
Application.CreateForm(TFormMain, FormMain);
Application.Run;
end.

Затем в onCreate - FormMain:
begin
Application.CreateForm(TForm3, Form3);
Form3.Hide;
... //загружаем данные из Form3 в FormMain!
end;

По идее, и загружать должно нормально и при FormMain.Close -> получим Form3.Close!!!


 
Leonid Troyanovsky ©   (2007-02-25 11:45) [5]


> Novichok_New ©   (25.02.07 11:26) [4]

> А если так "извратиться":

А зачем извращаться, если можно нормально сделать.
Зачем, например, всегда создавать форму, если она
может и не понадобится в течении жизни приложения?

Форма - это не контейнер для хранения данных (см. также TDateModule),
а средство для взаимодействия с юзером.

Так что нормальным будет, например, хранение данных в
свойствах MainForm, а показ их - по необходимости,
при посредстве Form3.


> По идее, и загружать должно нормально и при FormMain.Close
> -> получим Form3.Close!!!

Если только в OnClose MainForm будет оный вызов.

--
Regards, LVT.


 
Novichok_New ©   (2007-02-25 12:50) [6]

Leonid Troyanovsky, спасибо Вам за все комментарии и помощь!


 
GrayFace ©   (2007-02-25 21:10) [7]

Еще лучше использовать OnCloseQuerry вместо OnClose, т.к. при завершении работы/сеанса OnClose не вызывается. А OnClose использовать только для изменения параметра CloseAction при необходимости.

Leonid Troyanovsky ©   (25.02.07 11:45) [5]
Если только в OnClose MainForm будет оный вызов.

Почему же?


 
Leonid Troyanovsky ©   (2007-02-25 23:32) [8]


> GrayFace ©   (25.02.07 21:10) [7]

> Почему же?

В чем, собс-но, сомнение?

--
Regards, LVT.


 
SlymRO   (2007-02-26 10:56) [9]

Вместо form3 datamodule использовать не пробовали?


 
Desdechado ©   (2007-02-26 12:10) [10]

Form3.Visible:=False в дизайнере


 
GrayFace ©   (2007-02-27 09:09) [11]

Leonid Troyanovsky ©   (25.02.07 23:32) [8]
В чем, собс-но, сомнение?

Нет, уже нет сомнений. Действительно, сам по себе Form2.OnClose при закрытии MainForm не отрабатывает.



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

Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.051 c
2-1172410671
sipsik
2007-02-25 16:37
2007.03.18
как в sql-запросе отфильтровать по дате


15-1172010886
Cooller
2007-02-21 01:34
2007.03.18
Delphi 7 для разработки программ на продажу


2-1172222031
Cara
2007-02-23 12:13
2007.03.18
Time в Caption !


15-1171822276
Kerk
2007-02-18 21:11
2007.03.18
Простите и вы меня чтоль


15-1172304466
ПЛОВ
2007-02-24 11:07
2007.03.18
Помогите с оценкой)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский