|
Программирование >> Элементы языков с и с++
новых колонках). Вид 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, а если необходимо ввести какую-либо должность в базу данных, то достаточно открыть список должностей и щелкнуть на требуемой должности, как соответствующее наименование перекочует в базу данных.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |