Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2008, 13:11   #1
Sanek777
Заблокирован
Пользователь
 
Регистрация: 31.07.2008
Сообщений: 90
По умолчанию Помогите с формами!

У меня в программе три формы. Первая - загрузка, вторая - главная и третья о программе типа ну информационная. Я хочу сделать так чтобы вот когда вторая активна чтобы другая была отключена, ну то есть чтобы лишние ресурсы ОЗУ не тянуло. Как мне это сделать вот если я хочу чтобы с первой формы переходило на вторую и обратно. Я щас пользуюсь свойством Visible. Но оно же не отключает формы. Помогите как это сделать!
Sanek777 вне форума Ответить с цитированием
Старый 04.08.2008, 13:17   #2
Aristarh Dark
Форумчанин
 
Регистрация: 07.08.2007
Сообщений: 154
По умолчанию

Создавай первую и третью форму только тогда когда пользователь должен их увидить.
Aristarh Dark вне форума Ответить с цитированием
Старый 06.08.2008, 19:27   #3
One.Love
Пользователь
 
Регистрация: 13.01.2008
Сообщений: 91
По умолчанию

а вообще сделай так:
Первую форму сделай главной, а вторую сделай приветственной, третья будет вызываться на кнопку типо информационной. вот код:
В Form1 в событии OnShow пишешь
Form2.ShowModal;

когда приветствие заканчивается ты ее естественно Close;
и тогда первая форма появится сама автоматом.
ну а третью форму на кнопку пиши Form3.ShowModal;
ничего сложного и самое главное память не жрет лишнюю. Я лично так делаю -)
One.Love вне форума Ответить с цитированием
Старый 06.08.2008, 19:49   #4
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Цитата:
Сообщение от Aristarh Dark Посмотреть сообщение
Создавай первую и третью форму только тогда когда пользователь должен их увидить.
Вот так:

ставишь флажок.
Когда создашь форму, вызывай её так
Код:
  If not Assigned(Form1) then     //если форма не создана
    Form1:=TForm1.create(self);    //то создаём
  Form1.showmodal;                //Запускаем форму как модальное окно
А вообще форма вызываеться так form1.show; или form1.showmodal;
dr.Chas вне форума Ответить с цитированием
Старый 06.08.2008, 20:22   #5
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Божемой сколько вариантов. А с каких пор формы так много памяти жрут ? и интересно чем таким ужасным столько "сжирают" ? И как же Visible должен был отключить форму, он же ее скрывает ?!
BOBAH13 вне форума Ответить с цитированием
Старый 06.08.2008, 20:36   #6
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

Санек777, теперь я тебе дам полный ответ (прочитал из библии Делфи):
Сначала о первая - загрузка и второй - главная.
Создаешь в Делфи 2 формы. Одну называешь Beginning,вторую MainForm.
Затем нажимаешь Project-Options-Перетаскиваешь форму Beginning в aviable forms, нажимаешь ОК, после этого project-view source и изменяешь
вот код:
program project1;
uses
Forms,windows,
Unit1 in 'Unit.pas' {Beginning}
Unit2 in 'Unit2.pas' {MainForm}
{$R*.res}
begin
Beginning:=TBeginning.Create(nil);
Beginning.Show;
Beginning.Repaint;
Application.Initialize;
Application.Createform(TMainForm,Ma inform);
Sleep(2000);
Beginning.Hide;
Beginning.Free;
Application.Run;
end.

Что же происходит?
1. Создается окно Beginning. У этого окна не будет владельца, потому что оно показывается даже до того, как создано главное окно. Поэтому в качестве параметра методу Create мы указываем значение nil
2. Отображаем окно на экране не модально, чтобы окно отобразилось, а приложение продолжало работать
3. Перерисовка окна с помощью вызова метода Repaint
4. Инициализация приложения
5. Создается главная форма TmainForm
6. Делаем задержку, чтобы окно Beginning могло хоть немного "задержаться" на экране. Sleep(2000) - 2000 миллисекунд - 2 секунды. Для того чтобы можно было использовать эту функцию, нужно в uses добавить модуль Windows
7. Прячем форму Beginning вызовом Hide
8. Уничтожаем окно
9. Запускаем приложение
Вот и все
Что же касается справки:
I способ(этот код уже пишет в юните главной формы)
Application.CreateForm(TSpravka,Spr avka);
Spravka.ShowModal;
Spravka.Free;
II способ
Spravka:=TSpavka.Create(Owner);
Spravka.ShowModal;
Spravka.Free
Вот в принципе и все. если будут вопросы: пишите!
Удачи!
Программирование - это великое искусство... Такое же как например и живопись!

Последний раз редактировалось Rusl92; 07.08.2008 в 20:12.
Rusl92 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь между формами KiberJo Общие вопросы Delphi 20 22.07.2008 21:40
Общение между формами kate4ka Общие вопросы Delphi 2 10.03.2008 22:49
Работа с формами HAMMAN Общие вопросы Delphi 1 26.04.2007 01:18
проблема с формами dima00 Общие вопросы Delphi 4 16.04.2007 20:11
Работа с формами dima00 Общие вопросы Delphi 4 11.04.2007 22:10