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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2018, 20:06   #1
artiom4356
Пользователь
 
Регистрация: 16.08.2013
Сообщений: 78
По умолчанию Две формы.

Всем привет. Вот решил вернутся и задался вопросом а можно ли как ни будь в Delphi сделать две формы в одном Unit. Помню вроде когда то читал в книжке "Исскуство создания компонентов" что нечто подобное можно сделать... вот открыл я её и нашёл нужный код но он чёт не очень то и хочет работать Может что то очень сильно изменилось ведь эта книженция 2005г так что это не удивительно. (Пытался сам но увы походу моих знания/навыка явно не хватило) Но если кто в курсе почему не работает можете объяснить. Буду благодарен!!
Вот пример кода из книжки(тут сразу идёт создание следующего Unit в том же файле):
Изображения
Тип файла: jpg Безымянный.jpg (77.9 Кб, 130 просмотров)
Помочь!=Сделать за тебя
artiom4356 вне форума Ответить с цитированием
Старый 10.02.2018, 20:12   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Можно. Если очень хочется.


Цитата:
Вот пример кода из книжки(тут сразу идёт создание следующего Unit в том же файле):
Книжку свою выкинь. delphi-школокод детектед!
Цитата:
Делфишколокод

Явление, наблюдаемое исключительно на просторах Этой Страны. Возникло из-за маниакального пристрастия «преподавателей» информатики Этой Страны преподносить неокрепшим школьным умам «основы программирования» на базе небезызвестной быдлокодерской RAD Delphi. Особенностями такого кода являются стандартные автоматически сгенерированные RAD имена методов классов, событий, переменных (Form1, Button1, Button1Click и т. д.), отсутствие всякого форматирования, комментариев, документации. В случае, если делфишколокодер придумывает собственные названия методам, функциям или переменным — эти названия состоят из транслитерированных русских слов вперемешку с немногими известными школоло английскими, например CheckOplata. Либо — вообще лишены всякого смысла. Примеры делфишколокода, а также примеры замечательных и очень полезных «программ», создаваемых нашими школьниками, можно найти на замечательном, зашкаливающем лулзами «Личном сайта Разработчика!» по адресу http://ykolchurin.narod.ru/. Лулзы от этого кода искать здесь: http://www.sql.ru/foru...d=708039
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 10.02.2018 в 20:17.
min@y™ вне форума Ответить с цитированием
Старый 11.02.2018, 01:14   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от artiom4356 Посмотреть сообщение
Вот пример кода из книжки(тут сразу идёт создание следующего Unit в том же файле):
Нет. Это просто коды двух разных файлов идут друг за другом.
И таки. Один юнит - одна форма!
northener вне форума Ответить с цитированием
Старый 11.02.2018, 15:08   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Форма - это класс. Так что просто вставляете два класса один за другим в interface. А в книжке бред какой-то, там unit посередине файла зачем-то

Последний раз редактировалось Black Fregat; 11.02.2018 в 15:10. Причина: Ошибся в разделе, думал одно, написал другое
Black Fregat вне форума Ответить с цитированием
Старый 11.02.2018, 15:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Форма - это класс. Так что просто вставляете два класса один за другим в interface.
dfm то один и только на одну из форм. Будет орать для другой при создании, что resource not found
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.02.2018, 15:55   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
dfm то один и только на одну из форм
Не подумал. Ночью поэкспериментирую
Black Fregat вне форума Ответить с цитированием
Старый 12.02.2018, 13:50   #7
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от artiom4356 Посмотреть сообщение
Всем привет. Вот решил вернутся и задался вопросом а можно ли как ни будь в Delphi сделать две формы в одном Unit. Помню вроде когда то читал в книжке "Исскуство создания компонентов" что нечто подобное можно сделать... вот открыл я её и нашёл нужный код но он чёт не очень то и хочет работать Может что то очень сильно изменилось ведь эта книженция 2005г так что это не удивительно. (Пытался сам но увы походу моих знания/навыка явно не хватило) Но если кто в курсе почему не работает можете объяснить. Буду благодарен!!
Вот пример кода из книжки(тут сразу идёт создание следующего Unit в том же файле):
Код:
unit DoubleFormUnit;

interface

uses
  Vcl.Forms, Form1Unit, Form2Unit; 

type
  TDoubleForm = class
  public
    constructor Create;

  end;

implementation

{ TDoubleForm }

constructor TDoubleForm.Create;
begin
  Application.CreateForm(TForm1,Form1);
  Form1.show;
  Application.CreateForm(TForm2,Form2);
  Form2.Position := poScreenCenter;
  Form2.show;
end;

end.
P.S: Как уже было сказано, для каждой формы свой dfm в котором хранится значения свойств самой формы и компонентов расположенных на ней.
Если вы будете создавать форму динамически, то dfm не создается. В конкретном примере TDoubleForm при создании запускает сразу 2 формы, которые в свою очередь описаны в Form1Unit, Form2Unit(РАЗДЕЛЬНО!) к которым среда самостоятельно создаст 2 dfm. На ваш вопрос можно ли в 1 юните создать 2 формы, ответ ДА, но есть ограничения:
1 - если вы будете создавать формы динамически и описывать для каждой свои поля и методы.
2 - если вы создали 1 форму, а вторую описываете динамически.
3 - Вы создаете свой компонент, который уже нельзя назвать формой в том виде, в котором она описана в vcl, это будет что то ваше собранное из имеющегося

Ваш скрин с книжки вырван с контекста, не хватает описания формы1. Автор книги скорее всего предлагает вам вариант №1

Вы сами с легкостью ответите на свой вопрос почему не работает ответив на этот: Как при выходе в открытый космос на 1 космонавта одеть 2 скафандра, при этом оба этих скафандра должны быть физически представлены как 1 скафандр при этом нет никакого представления о скафандре №1
Пишу много и развернуто

Последний раз редактировалось Heneken87; 12.02.2018 в 14:10.
Heneken87 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BackgroundWorker и две формы - C# PANDA8 C# (си шарп) 12 13.04.2017 13:30
Две формы в Delphi Kotlyar562 Помощь студентам 10 05.03.2011 23:36
Две формы. Перекрывание. Alex Cones Общие вопросы Delphi 4 30.05.2010 14:33
две формы StakanpORTvejna Общие вопросы Delphi 4 04.05.2009 19:32
две формы в одном приложении.. AXEnic Общие вопросы Delphi 6 22.04.2009 16:52