Программирование >>  Элементы языков с и с++ 

1 ... 111 112 113 [ 114 ] 115 116 117 ... 200


новых колонках). Вид ListBox в одноколоночном и многоколоночном режимах показан на рис. 11.51. Пример использования этого свойства приведен в листинге 11.5.

(- ,(6)®ИГог1п1


Эти строки заданы в режиме дизайна

Здесь 50 элементов, поэтому появилась полоса прокрутки

Рис. 11.51. Вид компонента ListBox в одноколоночном и многоколоночном режимах

Листинг 11.5

private: System::Void buttonl Click(System::Object sender, System:lEventArgs e)

this->listBoxl->Iteins->Clear0; очистка компонента String it;

listBoxl->MultiColumn = false; одноколоночный режим

for (int 1=0; i < 50; i++) {

it= Convert::ToString(i); так преобразуется int to String it=it->Concat ( Iteins , it); listBoxl->Items->Add(it); }

) конец обработчика

private: System::Void button2 Click(System::Object sender. System::EventArgs e)



\ Ьтюненты, создающие интерфейс между пользователем и приложением 345 I

Add items to the ListBox. this->listBoxl->Items->Clear () ; for ( int x = 0; X < 50; x++ ) I

String it= Convert: :ToString (x) ; так преобразуется int to String it=it->Concat( Items ,it); listBoxl->Items->Add(it) ;

listBoxl->MultiColumn listBoxl->ColumnWidth

true; многоколоночный режим

50; это ширина колонки в пикселах

/♦Чтобы автоматически выводить любой текст в многоколоночном варианте, надо уметь рассчитать максимальную длину строки в пикселах, т. е. уметь переводить символы в пикселы.*/

[Определение максимальной ширины строки в пикселах для нашего примера:

lint width = (int)listBoxl-> CreateGraphicsО-> MeasureString(listBoxl-> ltems[listBoxl-> Items->Count - l]-> ToStringO, listBoxl-> Font) .Width;

listBoxl-> ColumnWidth = width; I Пояснение:

Метод CreateGraphics 0 создает графический объект для listBoxi (вывод i прок происходит в графике).

[УэтОГО объекта есть метод MeasureString (String, Font), который измеряет [мину строки в пикселах, выводимую данным шрифтом (разные шрифты занимают на экране разное количество пикселов).

[Параметр string - это:

]istBoxl->Items [listBoxl->Items->Count - 1)->ToString ()

I нашего примера это последний (самый длинный) элемент.

I i-й элемент извлекается так: iring it=listBoxl->Items [i] ->ToString () ;

[Параметр Font - это:

l!lstBoxl->Font



346 Глава

Метод Measurestring(String,Font) возвращает данные по структуре типа sizeF, которая состоит из 2-х элементов типа float. Это координаты прямоугольника (в пикселах), куда помещается изображение строки на экране. Нам надо знать щирину этого прямоугольника, т. к. она определяет размер строки в пикселах. Поэтому мы нищем: Measurestring(String,Font).width,

беря из структуры только один элемент.

Но поскольку этот элемент имеет тип float, то его надо перевести в int. потому что щирина в ListBox задается в int.

Поэтому перед ListBoxl->CreateGraphics о СТОИТ (int) -принудительный перевод float в int.

В общем случае надо определять строку максимальной длины, образуя цикл:

string it;

String it 0; здесь будет предыдущая строка it 0=listBoxl->Items[0]->ToString(); for(int 1=0; i < listBoxl->Items->Count; I

it=listBoxl->Items[i]->ToString();

И далее сравнивать текущую и предыдущую строки, применяя метод сравнения для строк типа string и выбирая из них больщую.

Как использовать ListBox

Компонент создает прямоугольную область, в которой отображается список текстовых строк. Эти текстовые строки можно добавлять в список, выбирать или удалять из него. Например, в процессе рещения некоторой задачи вводятся данные о сотрудниках предприятия, и каждый раз приходится вводить должность сотрудника. Список должностей помещается на этапе разработки приложения в некоторый файл, который затем поддерживается в актуальном состоянии. Когда приложение запущено, этот файл загружается в ListBox, а если необходимо ввести какую-либо должность в базу данных, то достаточно открыть список должностей и щелкнуть на требуемой должности, как соответствующее наименование перекочует в базу данных.



1 ... 111 112 113 [ 114 ] 115 116 117 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика