С Новым годом! Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
 Аватар для Игорь2001
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704

Два окна

14.09.2015, 19:33. Показов 5085. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 окна. Одно, главное, вызывает второе.
Делаю я это так
Delphi
1
2
3
4
5
  if listbox1.Items.Count<>0 then
  if (not Assigned(Form2)) then begin
  Form2:=TForm2.Create(Self);
  Form2.ShowModal;
  end;
Дальше работает второе окно. По нажатию кнопки оно выводит окно настроек принтера и печатает данные из первого окна.
Вот обработчик кнопки
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm2.Button1Click(Sender: TObject);
var s:string;
  i:integer;
begin
   printer.Canvas.Font.Size:=100;
   printersetupdialog1.execute;
   printer.BeginDoc;
   printer.Canvas.TextOut(200,0,edit1.Text);
   for i:=1 to form1.listbox1.items.count do begin
   s:=inttostr(i)+'). ';
   case RadioGroup1.ItemIndex of
   0: s+=form1.listbox1.items[i-1];
   2: s+=form1.listbox2.items[i-1];
   1: s+=form1.ListBox1.Items[i-1]+'  -  '+form1.listbox2.items[i-1];
   end;
   printer.Canvas.TextOut(200,i*200,s);
   end;
   printer.endDoc;
   form2.close;
end;
НО! Первый раз все в порядке, а когда запускаешь еще раз, второе окно просто не открывается. Что не так?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2015, 19:33
Ответы с готовыми решениями:

Дочерние окна сворачивать в пределах главного окна (Delphi 7)
Здравствуйте, подскажите как сделать чтоб дочернее окно при свертывании не уходило на панель задач а оставалось свернутым в приделах...

Два окна
Нужно чтобы открывалось первое окно, в нем вводишь уровень игры, нажимаем 'ok', окно закрывается. Открывается второе окно и там есть...

Два окна
Здравствуйте! Подскажите плиз, как создать в двух окнах от одного класса разные курсоры? ... int WINAPI WinMain( HINSTANCE hinstance, ...

4
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
14.09.2015, 19:46
Метод Close неглавной формы просто ее сворачивает, а не удаляет.
1
 Аватар для Игорь2001
20 / 20 / 10
Регистрация: 19.05.2015
Сообщений: 704
14.09.2015, 19:56  [ТС]
Цитата Сообщение от FIL Посмотреть сообщение
а не удаляет
Я так и думал. А как ее удалить - это уже вопрос к знатокам

Добавлено через 11 секунд
То есть к вам
0
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
14.09.2015, 19:59
Лучший ответ Сообщение было отмечено Игорь2001 как решение

Решение

Добавь обработчик закрытия формы:
Delphi
1
2
3
4
5
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  Form2 := nil;
end;
1
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,609
15.09.2015, 00:17
Delphi
1
2
3
4
procedure TForm2.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  CloseAction:=caFree;
end;
Добавлено через 4 часа 16 минут
P.S.
Не вижу никакой необходимости в проверке if (not Assigned(Form2)) и "обниливанию" глобальной переменной Form2 при закрытии сей формы. Равно как не вижу необходимости вообще использовать какую либо переменную для хранения ссылки на форму, которая сразу после создания показывается модально, а сразу после закрытия уничтожается.
Я бы лично создавал и показывал бы эту форму так
Delphi
1
2
  if listbox1.Items.Count<>0 then
    TForm2.Create(nil).ShowModal;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2015, 00:17
Помогаю со студенческими работами здесь

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

Frame два окна
Всем привет! Вопрос по поводу создания не одного окна при помощи Jframe. это программа создаёт окно с кнопкой , при нажатии создаёт...

Два параллельных окна
Абстрактно говоря, задача состоит в следующем: есть окно1, в которое юзер вводит некоторый текст (предполагается большой объем) -&gt;...

Сформировать два окна
Как сформировать 2 окна?

Два активных окна
Коллеги, если не сложно, помогите начинающему программисту=)) весь обложился книгами по visual и никак не могу врубиться... мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru