Объектно-ориентированное программирование на С++ - eDrive

Объектно-ориентированное программирование на С++ - eDrive Объектно-ориентированное программирование на С++ - eDrive

edrive.narod.ru
from edrive.narod.ru More from this publisher
13.01.2015 Views

Программирование диалогов 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. Как используются возвращаемые значения окон диалога в составных операторах

Программирование диалогов<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 ()

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!