Глюк с Charset в ComboBox и ListBox

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

Глюк с Charset в ComboBox и ListBox

Сообщение AndreyG_80 » 03.08.2006 (Чт) 1:23

Уменя следующая фигня:
Есть ComboBox в ListBox, Charset у них установленный - центральноевропейский. Немецкие буквы должно отображать, по идее!!!
Но не тут-то было, эти контролы не реагируют на изменение Charset, а отображают символы как и при кирилическом Charset-е, хотя Charset стоит центральноевропейский - 238
В то же время в TextBox и в Label - все нормально.
Интересная картина в ComboBox-е. Там в текстовом поле отображает нормально, а в выпадающем списке - хреново.

Люди добрые, подскажите как с этой фигней боротся. И действительно ли это контролы глючат, или это я глючу.

З.Ы. "Глюк" - в переводе с немецеого это "счастье" или "удача" :)
Помогите, не нужно мне такого счастья.
Вложения
charset.rar
Пример глюков
(1.51 Кб) Скачиваний: 62

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.08.2006 (Чт) 7:17

Не то, чтобы глюки.
Но полноценной поддержки Unicode в визуальных контролах VB6 нет и уже не будет.
Если тебе так важны умляуты и прочее, то либо рисуй сам, через DrawTextW, либо подбирай фонты.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 03.08.2006 (Чт) 11:40

MS Forms 2.0 подключи, правда возникнут проблемы с сетапом, но все равно - это самое простое решение 8)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.08.2006 (Чт) 13:21

Ну можно и так.
Только без установленного офиса работать нормально не будет.
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение AndreyG_80 » 03.08.2006 (Чт) 15:30

2alibek
Не то, чтобы глюки.

а как это тогда назвать. Я так понимаю если не поддержуют Юникод - то все стандартные контролы. А там же вообще прикол, особенно с ComboBoxom - часть контрола - поддерживает, а часть - нет?
И вообще текст у меня в ASCII кодировке, я просто переключаюсь между разными наборами символов.
Допустим в кирилическом наборе код буквы "д" совпадает с кодом буквы "ä" в центральноевропейском.
Тут именно какой-то глюк.
Я так думаю что ComboBox состоит из TextBox и из ListBox. Так вот часть ComboBox, которая TextBox нормально отображает разній текст. А вот ListBox - никак не риагирует на изменение набора символов, я перепробовал разные наборы символов но текст всегда был неизменным. Следовательно ListBox - получаеться глючным.

MS Forms 2.0 использовать не совсем получиться, да и сетап должен проходить без всяких проблем. Так чтоб самый последний чайник мог проинсталировать и не задавать лишних вопросов.

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

Контрол который хорошо работает со шрифтами - это MS Rich Text Box 6.0 - он видимо поддерживает Юникод

Ни кто, случайно, не знает, где можно взять нормальный набор стандартных контролов, желательно бесплатный :), который бы нормально работал со шрифтами

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 03.08.2006 (Чт) 15:42

VB.NET?
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение AndreyG_80 » 03.08.2006 (Чт) 15:53

2alibek
Не понял, что VB.NET? - нормальные контролы можно там взять?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 03.08.2006 (Чт) 15:57

они там изначально все unicode и платформо-независимые :lol:

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

Сообщение AndreyG_80 » 03.08.2006 (Чт) 16:12

У меня к сожалению нет VB.NET.
Где можно взять эти контролы отдельно. Или если кому не трудно, может мне их скинуть?
В VB.NET это тоже .осх файлы?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 03.08.2006 (Чт) 16:18

программы на .NET работают через фрэймворк (NET FRAMEWORK 1.x и 2.x), контролы представляют из себя некие сборки - это не OCX, хотя на .NET можно написать COM-контролы, которые можно использовать в VB6

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

Сообщение AndreyG_80 » 16.08.2006 (Ср) 4:37

Эх, и опять двадцать пять.

Мучался я мучался с этими шрифтами - нифига не получаеться.

У меня 3 вопроса, которые мне не дают спать, помогите пожалуста.

Вопрос 1
Для VB 6.0 единственное нормальное решение, на мой взгляд - переключение Charset (рисовать или использовать MS Forms 2.0 - в моем случае не подходит).

Все вроде бы нормально - все элементы которые я юзаю нормально отображают шрифты, кроме ListBox-а ну и соответственно ComboBox.

ДОРОГИЕ ТОВАРИЩИ ГУРУ, ПОМОГИТЕ КТО ЧЕМ МОЖЕТ - Как переключить Charset в вышеуказаных контролах?

З.Ы. И УМОЛЯЮ не посылайте в VB.NET, проблему нужно решить в VB 6.0

Вопрос 2
Те же шрифты только в ДатаРепорте.
Я юзаю только RptLabel - но этот контрол так же как и ListBox не реагирует на изменение Charset-а. У них по умолчанию стоит нулевой чарсет, но он не изменяеться. Значение свойства чарсет меняеться, а шрифт в контроле как отображался при нулевом чарсете, так и отображаеться.

Тот же вопрос - Как с этим бороться, именно в ДатаРепорте?

З.Ы. И пожалуста не предлагайте перейти на КристалРепорт.

Вопрос 3
Меня уже отправляли на статью о кодировках, я смотрел в поиске, я пробовал юзать функцию StrConv, но ни чего не получаеться. А статью читал очень внимательно и несколько раз, но ничего не понял, видать еще не дорос до понимания этой статьи.

Пожалуста растолкуйте как для чайников.
Как преобразовать строку из ASCII в Unicode и обратно.
Очень желательно с примером кода.

Ну и еще один вопросик, это так для интереса.
Если кто знает. Skype на каком языке писался и в чем? Вот он прекрасно работает со всеми шрифтами.


Огромное человеческое спасибо за помощь.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.08.2006 (Ср) 10:31

для ComboBox/ListBox попробуй использовать шрифт MS Sans Serif

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

Сообщение tyomitch » 16.08.2006 (Ср) 11:06

MS Sans Serif неюникодный. Совсем. Там только дефолтная кодовая страница системы есть.
Изображение

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

Сообщение AndreyG_80 » 16.08.2006 (Ср) 15:17

Я пробовал разные шрифты, шрифт здесь не причем, сам контрол не реагирует на изменение Чарсета.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.08.2006 (Ср) 15:43

MS Sans Serif = если у пользователя стоит немецкая локаль, то он может номально вводить и видеть свои умляуты в таких ComboBox/ListBox и тд и тп, естественно, что если он захочет там увидеть там иероглифы под немецкой локалью , то у него ничего не выйдет

выход только писат на .NET или писать свой собственный UNICODE контрол или юзать Forms 2.0

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.08.2006 (Ср) 15:46

пример custom ListBox:
Вложения
custom_listbox.zip
(24.34 Кб) Скачиваний: 83

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.08.2006 (Ср) 15:50


Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 16.08.2006 (Ср) 15:56

И чтобы добить эту тему с UNICODE до конца:

http://www.cyberactivex.com/UnicodeTutorialVb.htm

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

Сообщение Andrey Fedorov » 16.08.2006 (Ср) 16:45

AndreyG_80 писал(а):Мне нужны не только немецкие умлауты, прога расчитиваеться на поддержку большого количества языков, в идеальном случае - это поддержка всех языков


Непонятно - если это просто программа, то на немецкой локали немцы и так увидят свои умляуты безо всяких извратов. Тут тебе даже мучиться совершенно не нужно - просто пиши как обычно.

Проблема возникает когда ты на русской локали эти умляуты хочешь увидеть. А такой изврат действительно нужен в твоей программе???
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение AndreyG_80 » 17.08.2006 (Чт) 0:21

2Andrey Fedorov
Это програмка для изучения иностранных слов + словарь, которая должно поддеживать как можно больше языков. По крайней мере она должно одновременно поддерживать три шрифта. Есть понятие, как язык интерфейса, изучаемый язык и родной язык "слово-перевод".
Например: я хочу выучить немецкий, у меня немецкая винда. Интерыейс я выбираю немецкий (так как меню и формы в нем винде не работают нормально с кирилицой). Пишшу немецкий слова и русский перевод. Как ни крути прога должна поддерживать два языка.

2Konst_One
Спасибо за инфу, выглядит суперово, буду пытаться разобраться (правда у меня с английским напряг :( ).
Ближайшую недельку будет чем заняться :)

З.Ы. а контролы все таки с глюками...

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

Сообщение Andrey Fedorov » 17.08.2006 (Чт) 8:15

AndreyG_80 писал(а):Пишшу немецкий слова и русский перевод. Как ни крути прога должна поддерживать два языка.


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

На мой взгляд это выйдет гораздо быстрей и оптимальней - заодно и на NET съедешь.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение AndreyG_80 » 17.08.2006 (Чт) 10:35

Существуют ли патчи к VS6.0? Если да то какие? И какие ошибки они исправляют? Может какой-то патч исправляет глюки с чарсетом...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 17.08.2006 (Чт) 10:36

нет таких патчей и глюка как такового также нет.
просто так, как ты хочешь , использовать эти контролы нельзя.

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

Сообщение GSerg » 17.08.2006 (Чт) 10:43

Фпоиск, банально и изъеденно.
Для всей студии.
Только для VB.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение Andrey Fedorov » 17.08.2006 (Чт) 10:51

AndreyG_80 писал(а):Существуют ли патчи к VS6.0? Если да то какие? И какие ошибки они исправляют? Может какой-то патч исправляет глюки с чарсетом...


Этот патч называется NET. Ибо это даже не глюк - просто никто в прошлом веке на рассчитывал на работу с уенкодом. А так как сопровождение древних языков уже прекращено, так что их никто и не будет "пропатчивать" ибо это нехилая работенка да и патчить придется дюже глубоко, залезая в систему. Если и есть какие-то сторонние контролы, нормально работающие с уенкодом, то они стоят денежку - в итоге дешевле будет опять-же купить тот-же VB.NET.

Да и что тебе мешает писать на NET - философия? Он легко осваивается за несколько дней. Не целиком, конечно, но для твоего проекта вполне хватит.

Я еще понимаю когда влом (да и нет смысла) переносить крупные проекты на NET - сам такой, потому и работаю сейчас на VB6.

Но новый проект, который явно легче делать на NET благодаря его возможностям - лучше на нем и делать. IMHO так.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

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

Сообщение AndreyG_80 » 17.08.2006 (Чт) 16:21

2Andrey Fedorov
я понимаю, что с юникодом они работать не будут. Я про кодовые страницы. Font свойство Charset. Если я хочу на форме отобразить какой либо шрифт я переключаю кодовую страницу.
Например в TextBox-ах и в Label-ах чарсет переключаеться без проблем, когда я переключаю на центральноевропейскую кодовую страницу, то эти контролы прекрасно отображают немецкие умлауты. Когда я проделываю ту же операцию с ListBox-ом или ComboBox-ом - то умлауты не отображаються, такое впечатление, что кодовая страница не переключаеться.
Я про этот глюк говорю, а не про возможность работать с юникодом.

я немного изменил пример который выкладывал. На форме 4 контрола ListBox, ComboBox, TextBox и Label. Для них меняю шрифт и кодовую страницу. Но они одну и ту же строку отображают по разному.
напрмер
Font="Arial"
Font.Charset=238

TextBox и Label отображает - "Glück - ñ÷àñòüå"
а ListBox при этих же значениях - "Glьck - счастье"
Хотя в реальности все конролы должны отображать - "Glück - ñ÷àñòüå"
Почему? Может это только у меня на компе так?
Вложения
font.rar
(2.07 Кб) Скачиваний: 59


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

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

Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 126

    TopList