powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Открыть несколько форм.
9 сообщений из 9, страница 1 из 1
Открыть несколько форм.
    #39845655
TАнтон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Помогите пожалуйста решить задачу

Есть три формы. Первая вызывает вторую, вторая третью. Master-Details-DetailsDetails


Реализовано это так: во второй форме написана функция, которая заполняет данные из запроса и показывает Form2
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
//unit1
procedure TForm1.ActionUpdate1Execute(Sender: TObject);
begin
{изменить запись}
  ShowEditForm(false, ADOQuery1);
end;

//unit2
function ShowEditForm(Add: boolean; Query: TADOQuery): integer;
begin
  if not Add then
  begin
{подготавливаем данные из запроса}
    Form2.Edit1.Text := Query['AText'];
    Form2.Memo1.Lines.Text := Query['AMemo'];
  end;
{показываем форму}
  Result := Form2.ShowModal;
end;



Во второй форме тоже есть свой грид и реализовано точно также: написана функция в Form3, которая заполняет данные из запроса Form2 и показывает Form3.

Поставили задачу реализовать копирование данных, и автоматическое открытие на редактирование двух форм.
Написал вот так
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TForm1.ActionCopy1Execute(Sender: TObject);
var Id: integer;
begin
  {копируем текущую запись}
  ADOQuery2.SQL.Text := 'insert into Table(Id) values(:Id) select @@Identity as NewId';
  ADOQuery2.Open;
  Id := ADOQuery2['NewId'];
  {перечитываем данные грида}
  ActionReload1.Execute;
  {устанавливаем курсор на новую запись}
  ADOQuery1.Locate('Id',Id,[]);
// показываем форму2
  ShowEditForm(false, ADOQuery1);
end;



Как сделать чтобы после открытия второй формы (Form2) сразу же открылась третья (Form3) форма ?
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845657
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TАнтонКак сделать чтобы после открытия второй формы (Form2) сразу же открылась третья (Form3) форма ?
Два модальных окна не могут быть активными одновременно.
Я-бы объединил две форму в одну.
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845685
TАнтон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не нужно активность двух модальных окон.
Нужно открыть на редактирование вторую форму и затем открыть на редактирование третью форму. Из кода.
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845694
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TАнтонИз кода.
Не получается из второй сразу открыть третью?
Во второй написать еще одну процедуру, которая и открывает в себе сразу третью.
В зависимости от ситуации вызывать либо старую, либо новую.
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845695
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TАнтон,

там достаточно все просто:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
uses
 ... unit2, ...

Procedure TForm1.КнопкаИзменитьКлик(Сендер: ТОбъект);
var
  Frm2: TForm2;
begin
  Frm2:= TForm2.Create(Self);
  try
    Frm2.ShowModal;
  finally
    FreeAndNil(Frm2);
  end; 
end;


Аналогичным кодом в Form2 вызывается Form3
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845732
TАнтон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ДокTАнтон,

там достаточно все просто:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
uses
 ... unit2, ...

Procedure TForm1.КнопкаИзменитьКлик(Сендер: ТОбъект);
var
  Frm2: TForm2;
begin
  Frm2:= TForm2.Create(Self);
  try
    Frm2.ShowModal;
  finally
    FreeAndNil(Frm2);
  end; 
end;


Аналогичным кодом в Form2 вызывается Form3
У меня аналогичный код.
Кнопка первой формы вызывает функцию, которая создаёт и открывает Форму2
Кнопка на Форме2, аналогично вызывает функцию, которая создаёт и открывает форму3
Задача, написать код, который откроет форму2, а в ней откроет форму3.
Имитировать нажатие на Form1.КнопкаИзменить и после открытия формы2 имитировать нажатие Form2.КнопкаИзменить
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845739
TАнтон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadmanTАнтонИз кода.
Не получается из второй сразу открыть третью?
Во второй написать еще одну процедуру, которая и открывает в себе сразу третью.
В зависимости от ситуации вызывать либо старую, либо новую.

Вот в этом и проблема
Если я пишу
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function ShowEditForm3(Add: boolean; Query: TADOQuery): integer;
var Form3: TForm3;
begin
  Fоrm3:= TForm3.Create(Application);
  try
    Fоrm3.ShowModal;
  finally
    Fоrm3.Free;
  end;
end;

function ShowEditForm2(Add: boolean; Query: TADOQuery): integer;
var Form2: TForm2;
begin
  Fоrm2:= TForm2.Create(Application);
  try
    ShowEditForm3(false,ADOQuery1);
    Fоrm2.ShowModal;
  finally
    Fоrm2.Free;
  end;
end; 


то до показа Form2 дело не доходит, показывается сразу Form3.
А мне нужно показать Form2, а затем открыть Form3
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845747
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TАнтонА мне нужно показать Form2, а затем открыть Form3
Ну, создай Form3 в событии OnActivate формы Form2
...
Рейтинг: 0 / 0
Открыть несколько форм.
    #39845807
TАнтон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, заработало !!!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Открыть несколько форм.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]