![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Поскольку находится в методе Form2 то селф означает тут вторую форму. Про указатели на созданные формы: владелец хранит массив ссылок на все обьъекты, которыми владеет. Этот массив доступен через свойство Components, объявленное в классе TComponent -------------------- Обижено школьников: 8 |
|||
|
||||
| PsiMagistr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
bems, Спасибо большое-большое. Но я что-то совсем запутался. Ведь здесь:
Но тогда возникает вопрос. Используется ли в этом случае Self самой второй формы или Self кнопки, расположенной на второй форме? Ведь это метод Click кнопки, а не формы. Но если это Self кнопки, то у нас и владелец - кнопка... А может ли такое быть? Или же TForm2.Button1Click - метод формы, а не кнопки? Больно странно пишется...Как будто метод формы. Или не так? Это сообщение отредактировал(а) PsiMagistr - 27.5.2010, 18:33 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
PsiMagistr, Метод формы. До точки же - форма.
-------------------- Обижено школьников: 8 |
|||
|
||||
| kami |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Да. Если говорить более обобщенно, то в любом обработчике события, например
Self - это указатель на экземпляр TMySuperControl.
Да. Во втором случае (при условии, что Tform1 имеется в единственном экземпляре) запись аналогична
P.S. MainForm в моих сообщениях подразумевает под собой Application.MainForm. Добавлено через 2 минуты и 45 секунд bems, чуть опоздал |
||||||||
|
|||||||||
| PsiMagistr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
bems, благодарю. kami, Точно так. Ведь Form1 в данном случае - указатель на тот же объект, что и Self. СПА-СИ-БО!
С чего все началось: Я сейчас на коленях с книжкой Фленова. Она довольно доходчива. Но встречаются заблуждения. В частности в главе "Инициализация окон" было написано: "В нашем случае (в конструктор формы) передается Owner - свойство, в котором хранится указатель на текущее окно". Вместо того чтобы написать сермяжную правду: "В нашем случае передается Owner - свойство, в котором хранится указатель на владельца текущего окна". Это сообщение отредактировал(а) PsiMagistr - 28.5.2010, 11:00 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Выбрось. Немедленно. Там заблуждение на заблуждении сидит и заблуждением погоняет. Плюс - эти книги приучают к неверному проектированию и пониманию сути программирования в Delphi. Если пройтись по форумам, то лучшее, что можно найти о книгах Фленова, Фараонова и Архангельского - "сжечь с соблюдением обрядов черной магии". |
|||
|
||||
| PsiMagistr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
kami, наверное Вам виднее. Стиль изложения Фленова мне нравится. Не засорен лишней терминологией. Я вообще начинал с Visual Basic. Но освоить ООП на нем можно только на весьма элементарном уровне, он и указателей то толком не поддерживает. Опять же наследование хромает. Про полиморфизм - молчу. По крайней мере, если не пользоваться хакерскими приемами. Не знаю как, но ухитрился написать на нем ролевую игру. Никакой графики делать не стал. Писал чисто от балды. Справочник - на колени и вперед. Кода там не слишком много вышло, но все равно путаешься.
Потом закусил губы и заставил себя сесть на Object Pascal. Решил давать упор на ООП. Вообще ИМХО - знаешь ООП, считай большая часть языка в кармане. Книг у меня очень мало. Друзья далеки от программирования в принципе. Плюс (он же минус )) ) по состоянию здоровья не хожу. Ищу в сети книги, если, грубо говоря, врубаюсь в написаное - беру книжный вариант. Хорошей лит-ры по ООП вообще не видел. В основном простейшее: учат рисованию кнопок на форме, базовой работе с VCL. Я этот VСL вообще методом научного тыка осваиваю. ))) А чуть что посложнее - ошибок много начинается в книжках, только успевай вылавливать. kami, а Вы сами по каким книжкам учились? Посоветуйте, если не трудно, наименее глючное. ))) Это сообщение отредактировал(а) PsiMagistr - 28.5.2010, 13:18 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 22 Всего: 72 |
Хозяин - барин. Но в случае продолжения обучения по его книгам прошу относиться скептически ко всему изложенному там, так же, как и в этом вопросе. Честно - не помню. Давно это было. Но, по содержанию было похоже на Архангельского (что-то типа "Программирование в Delphi 3") - тупой перевод хелпа с некоторыми примерами. Хотя, в той книге затрагивались аспекты разработки собственных компонентов. Вроде, рекомендуют Тейксера и Пачеко, Марко Кэнту и Рея Конопку... Сам не читал ( |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
-------------------- Обижено школьников: 8 |
|||
|
||||
| PsiMagistr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
bems, ООП на Бейсике это чистая жесть. От него одно название.
-------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
| БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
Возможно, вас заинтересует ещё это обсуждение:
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=77021 И далее по ссылкам... |
|||
|
||||
| dvamaster |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: нет Всего: 10 |
Она описана в Unit2. Определи список форм хотябы в массиве (в Unit2 можешь закоментировать)
В классе Form2 укажи индекс на пизицию в массиве
в событии OnCreate найди свободное место в массиве и присвой ему данный экземпляр
в событии OnDestroy по индексу формы очисти занятое место в массиве (вызывать Destroy или Free не нужно, форма и так уничтожается)
для удаления всех форм перебираем массив находим не пустые ячейки и удаляем формы (присваивать nil необязательно, т.к. форма сама поставит nil где надо)
Добавлено через 1 минуту и 7 секунд если максимальное число форм не известно, то лучше список реализовать на динамических массивах, и код соответсвенно переделать -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
||||||||||||
|
|||||||||||||
| PsiMagistr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Спасибо большое, БелАмор, dvamaster.
Макс. число форм известно. 1) Форма- Главное меню игры. 2) Форма регистрация нового игрока. 3) Форма открытия персонажей. (думаю убрать, а код перенести в главное меню игры) 4) Форма карта локаций. 5) Форма-магазин. 6) Форма боевого полигона. (Все бои там с монстриками - там) P.S. Только не запутаться бы. ))) -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
|||
|
||||
| PsiMagistr |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 479 Регистрация: 31.12.2009 Репутация: 1 Всего: 1 |
Ради эксперимента создал Главную форму (MainForm) и Дочернюю форму (DochForm). Автосоздание DochForm отключил. Visible DochForm := true;
На пузе MainForm - кнопка:
При закрытии дочерней формы пишем:
Ставим кнопку на дочернюю форму. Пишем:
А при попытке в этой же кнопке написать:
Это сообщение отредактировал(а) PsiMagistr - 10.6.2010, 12:07 -------------------- "Арфы нет? Возьмите бубен! Ребята, будем жить!" (с) "В бой идут одни старики" --- "ИЕ" - один из самых сумасшедших браузеров в нашей галактике. |
||||||||
|
|||||||||
| БелАмор |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 7 Всего: 17 |
Зачем устанавливать в дизайнере Visible=True ? Привыкайте к тому, что обычно формы (кроме MDIChild) невидимы после создания и отображаются вручную через вызов Show или ShowModal.
А если форма закрывается по Alt-F4 ? Кто тогда будет показывать главную форму? Есть MainForm.Show в обработчике FormClose? А тогда зачем оно в обработчике нажатия кнопки? И кстати, зачем вообще скрывать главную форму? Не лучше ли показывать вторую в модальном режиме через вызов ShowModal? (вот тут, кстати, ваш Visible=True и встанет поперёк дороги...)
Метод Button1Click - метод той формы, которую вы удаляете. Купите красивую рамочку, распечатайте крупным шрифтом, поместите напечатанное в рамочку и повесьте на стену. Надпись - следующая: Запрещается уничтожать объекты в их собственных обработчиках. В данном конкретном случае: Обработка клика по кнопке не начинается и не заканчивается вызовом назначенного вами обработчика. И до его вызова, и после - выполняется куча кода. Когда где-то в середине этого процесса, а конкретно, в вашем обработчике, уничтожается форма, то форма также уничтожает и кнопку, и вся дальнейшая работа идёт уже с уничтоженным объектом (кнопкой) и там возможно всё, что угодно. Обратите внимание, что Button1Click - обработчик нажатия кнопки, но является методом формы. По этому поводу, возможно, будет интересно почитать здесь: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=68289 По поводу caFree смотрите ссылку: http://www.delphikingdom.com/asp/answer.asp?IDAnswer=75600 Применять описанный там способ я вам не рекомендую, но сопутствующие объяснения могут пригодиться. |
||||||
|
|||||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |