ListView и отображение символов разных языков

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
AndreyG_80
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 169
Зарегистрирован: 10.03.2006 (Пт) 13:27

ListView и отображение символов разных языков

Сообщение AndreyG_80 » 05.06.2006 (Пн) 3:46

Всем доброго времени суток.

Мне нужно, что б ListView отображал символы двух разных языков.
Мне нужно сделать что-то типа словаря. ListView разбит на два столбца. В левом немецкие слова, а в правом русские.
Как это сделать?

Большое спасибо за помощь.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 05.06.2006 (Пн) 8:20

Код: Выделить всё
ListView1.ListItems.Add
ListView1.ListItems(1).Text = "Table"
ListView1.ListItems(1).SubItems(1) = "Стол"

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 05.06.2006 (Пн) 8:36

Сдется мне, что все не так просто. Подозреваю, что автор попал в ситуацию, когда символы одного из языков отображаются абракадаброй. Способ лечения - шрифт в котором присутствуют символы обоих языков.
Весь мир матрица, а мы в нем потоки байтов!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.06.2006 (Пн) 8:57

!Viper! писал(а):Способ лечения - шрифт в котором присутствуют символы обоих языков.

Неправда. Способ лечения -- использование вместо mscomctl.ocx нормальных юникодных контролов.
Вот пример глючного кода, если надо:
Код: Выделить всё
ListView1.ListItems.Add
ListView1.ListItems(1).Text = "Table"
ListView1.ListItems(1).SubItems(1) = ChrW(&H637) + ChrW(&H627) + ChrW(&H648) + ChrW(&H644) + ChrW(&H629)

Попробуй подобрать шрифт ;-)
Изображение

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 05.06.2006 (Пн) 9:10

tyomitch писал(а):Неправда. Способ лечения -- использование вместо mscomctl.ocx нормальных юникодных контролов.


Я в старые времена подобное делал на Grid-e (Janus GridEx). Хотя он не уенкодный, но для каждой ячейки можно задать свой CharSet и в итоге получить желаемое...

А в настоящее время проще взять и поиграться с VB 2005 - там все уенкодное по умолчанию...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

AndreyG_80
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 169
Зарегистрирован: 10.03.2006 (Пт) 13:27

Сообщение AndreyG_80 » 05.06.2006 (Пн) 17:36

Речь идет не только о ListView, но и о любом другом контроле в котором можно вводить текст. Например можно взять еще и TextBox. Во многих прогах в один и тот-же TextBox можно вводить текст на разных языках. Например в ICQ, во одном и томже TextBox-е я могу писать на русском, потом переключиться и сдесь же писать на немецком или французком. Он поддерживает символы разных языков. Как это достигаеться?

З.Ы. К сожалению у меня пока нет VB 2005, сиху на VB 6.0.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.06.2006 (Пн) 17:48

Это достигается юникодом, которого нет в контролах VB6.
Кривенько достигается, правда. Достаточно в аське написать русские буквы, переключиться в английскую расклудку и отправить.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.06.2006 (Пн) 17:50

Говорят, можно взять текстбокс из Microsoft Forms, и там есть поддержка Юникода.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 05.06.2006 (Пн) 17:52

А ещё говорят, что msforms требуют наличия офиса на машине.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

AndreyG_80
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 169
Зарегистрирован: 10.03.2006 (Пт) 13:27

Сообщение AndreyG_80 » 05.06.2006 (Пн) 18:29

Взял msforms английский и немецкий поддерживает, а кирилицу вообще не поддерживает

MS RichTextBox поддерживает все шрифты. Половина задачи готова.

Теперь где взять ListView который бы это поддерживал

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 06.06.2006 (Вт) 14:33

FlexGrid все показывает корректно, насколько я помню. По крайней мере, изначально юникодовые данные из базы он показывал нормально, при том, что на машине такой раскладки не было установлено.

Но там со вводом трабла... впрочем, как и в листвью, вообще-то.

AndreyG_80
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 169
Зарегистрирован: 10.03.2006 (Пт) 13:27

Сообщение AndreyG_80 » 06.06.2006 (Вт) 20:30

Спасибо, попробую. Вводить мне ни чего не нужно, нужно только отображать, слева немецкое слово а справа русский неревод или наоборот.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 132

    TopList