
- •Часть 2. Сборник рецептов по визуальному программированию Введение в объектно-ориентированное программирование
- •Создание проекта в VisualStudio
- •Файлы проекта
- •Сведения об объекте
- •Общие свойства всех объектов
- •Класс Form
- •Помещение компонента в форму и прочие действия с дизайнером форм
- •Свойства форм
- •События формы
- •Методы формы
- •Компоненты ввода и отображения текстовой информации Компонент Label
- •Некоторые свойства компонента Label
- •Компонент TextBox
- •Методы TextBox
- •Компонент RichTextBox
- •Ввод числовых значений в компонент TextBox
- •Проверка, введены ли значения
- •Компонент ListBox
- •Компонент ComboBox
- •Ввод данных из файла
- •Компонент MaskedTextBox
- •Кнопки, индикаторы и управляющие элементы Компонент Button
- •Компонент Panel
- •Компоненты RadioButtonиCheckBox
- •Компонент GroupBox
- •Пример. Комплектация автомобиля
- •Работа с меню Главное меню
- •Контекстное меню
- •Создание текстового редактора
- •Системные диалоги
- •Компонент OpenFileDialog
- •Компонент SaveFileDialog
- •Диалог выбора шрифта
- •Диалог выбора цвета
- •Компонент PrintDialog
- •Диалоговые окна в текстовом редакторе
- •Расширенные символы Unicode
- •Работа с графикой Использование графических файлов
- •Создание фотоальбома
- •Методы для рисования на форме и прочих компонентах
- •Работа с таймером
- •Работа с датой и временем
- •Добавление новых форм к проекту
- •Многостраничные панели
- •Способы задания страниц
- •Методы TabControl
Ввод данных из файла
Для загрузки данных из файла в компонент ListBoxлибоComboBox, напишем функцию, которую назовемLoadFromFile, в качестве параметров в нее передадим имя файла, в котором хранится информация, и ссылку на компонент, в который осуществляется загрузка.
void LoadFromFile (char *File, ListBox ^lb){
char s[300];
FILE *fp;
int i;
i=0;
lb->Items->Clear();
if (!(fp=fopen(File,"r"))){
/*Сообщение о невозможности открыть файл*/
}
while(!feof(fp)){
fgets(s,300,fp);
//Преобразование char* в String
String ^dd=gcnew String(s);
//Удалим последний управляющий символ
int j=dd->Length-1;
dd=dd->Substring(0,j);
lb->Items->Add(dd);
i++;
}
}
Эта функция должна находиться в секции privateкласса с формой. Тогда эта функция будет являться членом класса формы. И обращение к этой функции идет как к члену класса.
Для того чтобы вызвать функцию, необходимо в обработчике события (пусть это будет событие Clickдля кнопки «Загрузить из файла») написать следующую строку:
this->LoadFromFile(“info.txt”,this->ListBox1);
Компонент MaskedTextBox
Компонент находится в списке CommonControlsпалитры компонентов. С помощью этого компонента создается редактируемое текстовое поле (маска) для ввода данных специфического формата: дат, времени, номеров телефонов и т.д. Если задан формат ввода данных по конкретной маске, то при вводе текста проверяется, соответствует ли он этому формату.
Маска накладывает ограничения на символы, вводимые по ней, и на формат данных. Контроль ввода осуществляется посимвольно: если пользователь попытается ввести запрещенный в маске символ, то этот символ системой контроля будет отвергнут.
Маска задается в свойстве Mask. Существуют стандартные маски, их перечень открывается в диалоговом окне, в которое можно войти из свойстваMask. Но пользователь и сам может задать маску в этом свойстве, пользуясь специальными символами (Пахомов, с. 370–371):
0 – обязательная к вводу цифра;
9 – цифра или пробел;
# – не обязательная цифра или пробел;
L– обязательная к вводу буква;
? – не обязательная к вводу буква;
& – символ, обязательный к вводу;
C– любой символ, не обязательный к вводу;
A(илиa) – буква либо цифра, не обязательная к вводу;
. – десятичный разделитель;
, – разделитель тысяч;
: – разделитель времени;
/ – разделитель даты;
$ – символ вылюты;
< – преобразование символов к нижнему регистру;
– преобразование символов к верхнему регистру;
| – запрет на влияние элементов > или <.
Используя маску, можно без написания специальных участков программы в приложении добиться следующего:
вводить символы заданного типа и никакие другие (например, только цифры);
обеспечить обязательный ввод символов в поле ввода;
за счет ввода в маску специальных символов-литералов, которые будут составлять неотъемлемую часть введенной строки, обеспечить ускорение ввода информации для пользователя (например, дефис в телефонном номере, точки в дате, знак валюты в цене и др.);
задавать специальный ввод, когда будут автоматически преобразованы, например, символы нижнего регистра в верхний и т.д.
Ввод по маске осуществляется так: действительно вводимые символы заменяют собой символы маски, а постоянно заданные символы (например, точки в дате) пропускаются, когда указатель ввода в поле доходит до них. Система просто передвигает указатель ввода на следующий символ-подсказку.
Рассмотрим свойствакомпонента.
PromptChar– предоставляет возможность задавать свой собственный символ маски. Вместо подчеркивания можно задать, например, символ «*». Тогда маска даты станет выглядеть так: **.**.****. Это будет более наглядно, т.к. знак подчеркивания сливается в сплошную линию.
HidePromptOnLeave– предоставляет возможность видеть символы-литералы даже в то время, когда сам компонент теряет фокус ввода.
MaskFull– позволяет проверить, все ли требуемые символы маски введены.
Text– строка, введена по маске.
TextMaskFormat– определяет, как символы-литералы и подсказка взаимодействуют, когда генерируется форматная строка.