Объектно-ориентированное программирование на С++ - eDrive
Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive
Программирование диалогов 38 Составные операторы помогают организовать диалог с пользователем с помощью специально предназначенных для этого функций (табл. 11), что особенно удобно на этапе подготовки и отладки приложений. Таблица 11 Функции сообщений Функция int MessageDlg (AnsiString text, TMsgDlgType type, TMsgDlgButtons buttons, int helpContext) int MessageDlgPos (AnsiString text, TMsgDlgType type, TMsgDlgButtons buttons, int helpContext, int X, int Y) void ShowMessage (AnsiString text) bool SelectDirectory (AnsiString &dir, TSelectDirOpts options, int helpContext) Назначение Сообщение в центре экрана с возвратом результата Сообщение в позиции X,Y с возвратом результата Сообщение с кнопкой ОК Окно диалога для выбора папки Большинство функций диалога возвращает определенное значение, которое можно обрабатывать в составных операторах. Ниже дан пример обработчика, в котором нажатие кнопки открывает возможность выбора или создания новой папки, после чего ее адрес отображается в надписи. #include #include #include #pragma hdrstop #pragma resource "*.dfm" TForm1 *Form1; void __fastcall TForm1::Button1Click (TObject *Sender) { if (MessageDlg ("Создать/выбрать папку", mtConfirmation, TmsgDlgButtons ()
39 В следующем примере последовательность окон сообщений информирует о владельце, объектах владения и дочерних компонентах некоторой формы, созданной в ходе выполнения программы. void OwnersAndParents () { AnsiString info; int i; ShowMessage ("Этой формой владеет " + MyForm–>Owner–>Name); for (i=0; iComponentCount; ++i) info = info + '\n' + MyForm–>Components[i]–>Name; ShowMessage ("Объекты владения формы " + info); info.Delete (1,info.Length ()); for (i=0; iControlCount; ++i) info = info + '\n' + MyForm–>Controls[i]–>Name; ShowMessage ("Дочерние объекты формы " + info); info.Delete (1, info.Length ()); for (i=0; iToolBar1–>ControlCount; ++i) info = info + '\n' + MyForm–>ToolBar1–>Controls[i]–>Name; ShowMessage ("Дочерние объекты панели инструментов " + info); } Контрольные вопросы 1. Для чего служат и как различаются между собой операторы перехода 2. Как определить глубину вложенности составных операторов 3. В чем состоит разница между условным оператором и оператором выбора 4. Может ли оператор выбора использоваться без оператора break 5. Может ли оператор выбора использоваться с операторами continue и goto 6. Можно ли совмещать операторы условия и выбора 7. Чем различаются операторы цикла и повторения и что у них общего 8. Для чего применяется «вечный цикл» 9. Для чего применяются цикл без счетчика, цикл без инициализации, цикл без итерации 10. Какие окна диалога используются в Windows 11. Что называют возвращаемым значением окна диалога 12. Как используются возвращаемые значения окон диалога в составных операторах
- Page 1 and 2: Федеральное агентс
- Page 3 and 4: Оглавление Предисл
- Page 5 and 6: 5 Предисловие Напра
- Page 7 and 8: 7 Введение в процед
- Page 9 and 10: 9 которые использую
- Page 11 and 12: 11 [Модификатор] [тип
- Page 13 and 14: 13 В ответ на вызов к
- Page 15 and 16: 15 Данные в определе
- Page 17 and 18: 17 Здесь при выборе
- Page 19 and 20: 19 void _ _fastcall TForm1::MyClick
- Page 21 and 22: 21 фигурные скобки.
- Page 23 and 24: 23 Типы указываются
- Page 25 and 26: 25 Простые оператор
- Page 27 and 28: Метод IsDelimiter (AnsiString&
- Page 29 and 30: 29 Variant v = Edit3->Text; Label3-
- Page 31 and 32: 31 6. Как передаются
- Page 33 and 34: Условный оператор 3
- Page 35 and 36: } 35 case 4: day = "Четверг"
- Page 37: 37 void Whiles1 () { int temp = 10,
- Page 41 and 42: 41 Число байтов, выд
- Page 43 and 44: Перестановки и сор
- Page 45 and 46: } 45 for (int i=1; i=0 + 1; - -j) i
- Page 47 and 48: 47 нять, создавать с
- Page 49 and 50: lb->LoadFromFile (“1.txt”); Sho
- Page 51 and 52: 51 При передаче в фу
- Page 53 and 54: 53 } // 0 1 Иванов 2 Петр
- Page 55 and 56: 55 void Info (TList *vl) { AnsiStri
- Page 57 and 58: Allocate (k[0], k[1], book1); Alloc
- Page 59 and 60: 59 else ShowMessage ("Такой ч
- Page 61 and 62: 61 for (rj=n.rbegin (); rj!=n.rend
- Page 63 and 64: int i, d[] = { 5, 2, 3, 8, 3, 1, 3
- Page 65 and 66: 22. Каков принцип де
- Page 67 and 68: StringGrid1->Cells[0][j] = myS[j].a
- Page 69 and 70: void Files2 () { AnsiString from =
- Page 71 and 72: void _ _fastcall TForm1::DelFromFil
- Page 73 and 74: 73 Фрагмент обработ
- Page 75 and 76: 75 отказ в доступе, EM
- Page 77 and 78: 77 //myApplication.cpp #include "my
- Page 79 and 80: 79 Для подключения н
- Page 81 and 82: 81 Управление созда
- Page 83 and 84: 83 Контрольные вопр
- Page 85 and 86: 85 для построения ма
- Page 87 and 88: 87 В C++Builder все подкл
Программирование диалогов<br />
38<br />
Составные операторы помогают организовать диалог с пользователем с<br />
помощью специально пред<strong>на</strong>з<strong>на</strong>ченных для этого функций (табл. 11), что<br />
особенно удобно <strong>на</strong> этапе подготовки и отладки приложений.<br />
Таблица 11<br />
Функции сообщений<br />
Функция<br />
int MessageDlg (AnsiString text, TMsgDlgType type,<br />
TMsgDlgButtons buttons, int helpContext)<br />
int MessageDlgPos (AnsiString text, TMsgDlgType type,<br />
TMsgDlgButtons buttons, int helpContext, int X, int Y)<br />
void ShowMessage (AnsiString text)<br />
bool SelectDirectory (AnsiString &dir, TSelectDirOpts options,<br />
int helpContext)<br />
Наз<strong>на</strong>чение<br />
Сообщение в центре экра<strong>на</strong> с<br />
возвратом результата<br />
Сообщение в позиции X,Y с<br />
возвратом результата<br />
Сообщение с кнопкой ОК<br />
Окно диалога для выбора<br />
папки<br />
Большинство функций диалога возвращает определенное з<strong>на</strong>чение, которое<br />
можно обрабатывать в составных операторах.<br />
Ниже дан пример обработчика, в котором <strong>на</strong>жатие кнопки открывает<br />
возможность выбора или создания новой папки, после чего ее адрес отображается<br />
в <strong>на</strong>дписи.<br />
#include <br />
#include <br />
#include <br />
#pragma hdrstop<br />
#pragma resource "*.dfm"<br />
TForm1 *Form1;<br />
void __fastcall TForm1::Button1Click (TObject *Sender) {<br />
if (MessageDlg ("Создать/выбрать папку", mtConfirmation,<br />
TmsgDlgButtons ()