Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual C++(.Net) / Visual C++(.Net).doc
Скачиваний:
167
Добавлен:
09.05.2015
Размер:
1.18 Mб
Скачать

Ввод данных из файла

Для загрузки данных из файла в компонент 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– определяет, как символы-литералы и подсказка взаимодействуют, когда генерируется форматная строка.