Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Связывание форм по onCreate 
:(
    Опции темы
stranik
Дата 19.4.2006, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.4.2006

Репутация: нет
Всего: нет



Уважаемые мастера помагите начинающему.
Имеется две формы MainForm и  frlogin. frLogin исключена из списка автоматически создаваемых. В событие onCreate MainForm пишу следующие

Код

procedure TMainForm.FormCreate(Sender: TObject);
begin
    frlogin:=TfrLogin.Create(self);
    MainForm.Hide;
    frLogin.Show;
end;   {FormCreate}



В результате при запуске приложения на экран выводится 2 формы, а необходимо одну. С какой стороны плясать с бубном ? 
PM MAIL   Вверх
Marlin
Дата 19.4.2006, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 20.2.2006

Репутация: нет
Всего: 1



Если ты хочешь манипулировать формами, то тебе нужно это делать точно не в обработчике OnCreate главной формы. Форма находится на стадии создания, а ты уже пытаешься, что с ней сделать.

У тебя ошибку этот код не вызывает?

Работай в самом проекте dpr и от туда исходя из условий пляши.

Посмотри примеры с заставками программ. 
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает.
PM MAIL   Вверх
stranik
Дата 19.4.2006, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.4.2006

Репутация: нет
Всего: нет



Немного поясню задачу. При вызове формы frLogin осуществляется коннект к базе данных, проверяется логин и пароль юзверя а также право доступа даной персоны. На основании полученных данных строится MainForm.  

Ошибку не выдает. Заставка у проги уже есть smile. Примеры с заставками смотрел. Также кажися перерыл весь  DRKB (v.2,3) Но ничего подходящего не отыскал. Может пропустил?   
PM MAIL   Вверх
Marlin
Дата 19.4.2006, 07:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 20.2.2006

Репутация: нет
Всего: 1



У тебя логика программы не верно построенная, и из за этого ты зашел в тупик.

Тебе нужно проверять все условия до загрузки главной формы.
например:

Код


program Copy_database;

uses
  Dialogs,
  Forms,
  SysUtils,
  Unit1 in 'Unit1.pas' {Main},
  Unit2 in 'Unit2.pas' {Form2},
  Base_Function in 'Base_Function.pas';

{$R *.res}

var
r:string;
begin
  Application.Initialize;
  
  if InputQuery('Password', 'Enter password', r) then begin
     if Trim(r)='password' then begin
        Application.CreateForm(TMain, Main);
        Application.CreateForm(TForm2, Form2);
        Application.Run;
     end;
end.



Добавлено @ 07:18 
в условии можешь сделать запрос к базе данных и т.д. 

Это сообщение отредактировал(а) Marlin - 19.4.2006, 07:17
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает.
PM MAIL   Вверх
Sunvas
Дата 19.4.2006, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Цитата(stranik @  19.4.2006,  06:18 Найти цитируемый пост)
MainForm.Hide;

Чтобы при запуске приложения не показывалась главная форма нужно писать в oncreate application.showmainform:=false;

Потом, после проверки пароля форму можешь показать обычным mainform.show, но это нужно делать не в oncreate, а где-нибудь в другой процедуре. 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
stranik
Дата 19.4.2006, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.4.2006

Репутация: нет
Всего: нет



application.showmainform:=false   вместо Hide.    Ларчик просто открывался. Всем большое спасибо.
  
PM MAIL   Вверх
stranik
Дата 19.4.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 19.4.2006

Репутация: нет
Всего: нет



Ситуация №2. В своем проекте я использую DataModule. 

Application.CreateForm(TMainForm, MainForm);
Application.CreateForm(TfrDM, frDM);
т.е. он создается после MainForm. 
Вернемся теперь к форме frlogin. На ней имеются:

cbOper: TRxDBLookupCombo;
cbSmena: TComboBox;
eLogin: TRxDBLookupCombo;

Наборы данных мы берем из DataModule. В uses все как надо прописано. При запуске приложение не может найти ADOConnection, так как Application.CreateForm(TfrDM, frDM); еще не выполнено. Подскажите как лучше сделать? Создавать новое подключение на форме frLogin не хоттелось бы..
 
PM MAIL   Вверх
Демо
Дата 19.4.2006, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Тебе же сказали, что не в OnCreate главной формы надо делать это.

Для авторизации на сервере БД самое место для вызова формы - frDM.OnCreate 


--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.