Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объясните код: работа со второй формой 
:(
    Опции темы
mr.Anderson
Дата 2.8.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



В учебнике был написан код:
Код

include "Unit2.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2=new TForm2(this);
if(Form2->ShowModal==mrCancel) return;
}

Прошу объяснить, что означает this в скобках после TForm2, и что такое ShowModal() и зачем он здесь написан. А также то, как этим всем пользоваться.
В учебнике этого не объясняется, иначе я бы не спрашивал.

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


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
LenaKi
Дата 2.8.2005, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 22.6.2005

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



this это указатель. Он указывает на вызывающий объект.
ShowModal чтобы окно было поверх остальных, пока его не закроют.

Как называется учебник?
PM MAIL   Вверх
mr.Anderson
Дата 2.8.2005, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



"Основы программирования", авторы И.Г.Семакин и А.П.Шестаков. Там рассматриваются Паскаль и Си++, но почему-то упор сделан на Паскаль, что плохо.
А что вообще означает эта строчка?
Цитата
Form2->ShowModal==mrCancel

Что она "говорит" сделать компилятору?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
BreakPointMAN
Дата 3.8.2005, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(sim7 @ 2.8.2005, 19:41)
"Основы программирования", авторы И.Г.Семакин и А.П.Шестаков. Там рассматриваются Паскаль и Си++, но почему-то упор сделан на Паскаль, что плохо.
А что вообще означает эта строчка?
Цитата
Form2->ShowModal==mrCancel

Что она "говорит" сделать компилятору?

Если в учебнике код написан именно так, как ты его процитировал на форуме... то в учебнике ошибка! smile

Итак, разбор полетов.
ShowModal - это метод, который можно применять к форме в том случае, когда хочется показать ее на экране как модальную. Название "модальная", может быть и страшновато, но только на первый взгляд. Этим термином называют форму, которая вызывается из основной формы как "подчиненная" и, пока модальную форму не закрыта, работа приложения прерывается. Обычно делают модальными формами диалоговые окна.

Правильно надо делать вызов этого метода так:

Код

Form2->ShowModal();


Если посмотреть прототип функции ShowModal...
Код

virtual int __fastcall ShowModal(void);

...то можно увидеть, что она возвращает значение типа int. Если быть более точным, то результат, возвращенный этим методом, будет типа TModalResult: в C++ Builder предопределены константы этого типа, такие как: mrNone, mrOk, mrCancel, mrAbort, mrIgnore, mrYes, mrNo, mrAll, mrNoToAll, mrYesToAll. Они используются для сообщения вызывающей форме, с каким результатом была закрыта форма. Обычно результат определяется нажатием кнопки с соответствующим названием... (вернее, не совсем названием... смотри, если интересно, хелп по ModalResult и компоненту TBitBtn, а именно его свойство Kind).

В твоем примере
Код

include "Unit2.h"
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2=new TForm2(this);
if(Form2->ShowModal()==mrCancel) return;
}


строчка "if(Form2->ShowModal()==mrCancel) return;" означает:
- форма Form2 показывается как модальная
- далее производится сравнение возвращенного методом ShowModal значения с константой mrCancel
- если она была закрыта с результатом mrCancel, т.е., например, была нажата кнопка "Отмена", то происходит выход из обработчика нажатия кнопки Button1.



--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
mr.Anderson
Дата 3.8.2005, 05:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Понял. smile Спасибо, BreakPointMAN.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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