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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Form2.ShowModal, Не могу вызвать форму 
:(
    Опции темы
Toohtik
Дата 22.8.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



У меня в реестре хранятся настройки расположения базы данных. В Form2 их можно менять. Я хочу сделать так чтоб при запуске программы проверялось наличие этих настроек и при отсутсвии их выводилось Form2. На событи FormCreat  я прописал строку Form2.ShowModal  и при запуске программы выдается такое сообщение Project1 raised exception  EAccessViolation with messsage 'Access Violation at adress'.... 
PM ICQ   Вверх
Snowy
Дата 22.8.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Код показывай.
Там может быть что угодно.
PM MAIL   Вверх
_hunter
Дата 22.8.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

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



во-первых: в какой форме происходит это загадочное событие FormCreat?
во-вторых: что по этому поводу отладчик говорит?



--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Albinos_x
Дата 22.8.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(Toohtik @  22.8.2006,  15:30 Найти цитируемый пост)
На событи FormCreat  я прописал строку Form2.ShowModal


FormCreat какой формы?

Form2 на тот момент уже создана?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Snowy
Дата 22.8.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



Albinos_x, а сам-то как думаешь?
Конечно нет.
Потому и ошибка...
PM MAIL   Вверх
Toohtik
Дата 22.8.2006, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



Код:
Код

procedure TForm1.FormCreate(Sender: TObject);
var reg:Tregistry;
begin
     Form2.ShowModal;
end;


PM ICQ   Вверх
Albinos_x
Дата 22.8.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Snowy, так и думаю smile 

Это сообщение отредактировал(а) Albinos_x - 22.8.2006, 16:21


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Rennigth
Дата 22.8.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Toohtik, 
убери и проекта создание Form2, там у тебя что-то вроде 
Код

  Application.CreateForm(Form2, TForm2); //<<- это удали


а вызывай так:
Код

procedure TForm1.FormCreate(Sender: TObject);
var 
  reg:Tregistry;
  lForm: TFrom2;
begin
  lForm := TFrom2.Create(nil) ;
  try
     lForm.ShowModal;
  finally
    lForm.Release;
  end;
end;





--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Albinos_x
Дата 22.8.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



в файле проека у тебя :
Код

  Application.Initialize;
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm1, Form1);

  Application.Run;



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Toohtik
Дата 22.8.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



Совет Rennigth, помог, но возникла следующая проблема когда закрываеш открывшееся окно выскаивает все таже ошибка и указатель перемещается в строку lForm.ShowModal; smile
PM ICQ   Вверх
Albinos_x
Дата 22.8.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



что написано в сообщении об ошибке?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Rennigth
Дата 22.8.2006, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Toohtik, 
покажи модуль где у тебя описана TForm2(наверно unit2), ошибка там скорее всего.


--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Toohtik
Дата 22.8.2006, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



Код

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls,  Registry;

type
  TForm2 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit3, Unit1;

{$R *.dfm}

procedure TForm2.Button3Click(Sender: TObject);
var lForm: TForm3;
begin
lForm := TForm3.Create(nil) ;
  try
     lForm.ShowModal;
  finally
    lForm.Release;

end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  Form2.Close;
end;

procedure TForm2.Button1Click(Sender: TObject);

var
  NewString: string;
  Reg:Tregistry;
begin
    NewString := Edit1.Text;
    Reg:=Tregistry.Create;
    Reg.RootKey:=HKEY_CURRENT_USER;
    Reg.OpenKey('\Software\BD',true);
    Reg.WriteString('adress',NewString);
    Reg.Free;



    Form1.Database1.DatabaseName := 'MyNewAlias';
    Form1.Database1.DriverName := 'STANDARD';
    Form1.Database1.Params.Clear;
    Form1.Database1.Params.Add('Path=' + NewString);
    Form1.Table1.DatabaseName := 'MyNewAlias';
    Form1.Table1.TableName := 'TVBt';
    Form1.Table1.Active := True;
    Form1.DataSource1.DataSet := Form1.Table1;
    Form1.DBGrid1.DataSource := Form1.DataSource1;
    Form2.Close;



end;

end.

PM ICQ   Вверх
Fedia
Дата 22.8.2006, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 465
Регистрация: 2.8.2006
Где: первым встречаю р ассвет

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



Toohtik, если создать форму в модуле проекта через 
Application.CreateForm(Form2, TForm2), затем отобразить ее с Form1, скажем, прописав на кнопку обработчик
Код

  Form2.Show;
, а потом ее закрыть, то ошибка появиться ?
Если после вызова Form2 не нажимать на кнопку Button1, то ошибка тоже появляется ?


--------------------
Накануне решающей битвы
Я иду, и надеждою зыбкой
Озаряется эта дорога,
Я мечтаю увидеть улыбку
На лице победившего Бога…
PM MAIL ICQ   Вверх
Toohtik
Дата 23.8.2006, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 142
Регистрация: 30.1.2006
Где: Харьков

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



Fedia, если чесно я не понял суть вопросаsmile Смотри что получается если сначала создать Form1 потом Form2 и вызвать Form2. То Form2 и вызывается и закрывыается на ура. А если вызвать сначала Form2 как предложил Rennigth, то форма вызовется, но при попытке
Код

 Form2.Close

происходит ошибка. Что самое интересное если Form2 закрывать крестиком то все нормально 
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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