Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ввод unicode-символов в Edit


Автор: Lexxx_HU 12.11.2007, 20:22
по форуму были похожие темы..
но именно такого не нашел ...
как можно сделать так чтоб в EDIT
можно было вводить уникод символы ... например символы в немецком языке , когда сверху прсутствуют "весечки" - áüöúőá и т.д.

когды пытаюсь ввести эти символы.. то они просто отображаются без весечек

Автор: Ak47black 12.11.2007, 21:28
Попробуй Font->Name шрифт поменяй.
Может подойдет.  smile 
Не все шрифты поддерживают все буквы.

Автор: Lexxx_HU 12.11.2007, 22:32
пробывал изменить, но ничего не изменилось
может нужно какой нибудь модуль подключить ?
никто не сталкивался с такой проблемой ?

Автор: aktuba 12.11.2007, 23:16
Никак. TEdit поддерживает только анси-кодировку.

Автор: EvilsInterrupt 13.11.2007, 07:17
Lexxx_HU, Логику мог бы построить сам. Ты ведь знаешь, что если компонент юзает string то это может быть или AnsiString или ShortString все в зависимости от одной настройки в проекте. Выходит что если компонент юзает только эти два типа строк, то как в него можно запихнуть UNICODE-символ? Я думаю только UTF-8-символ можно, но и  то  не уверен за корректность отображения ;)

Автор: Alexeis 13.11.2007, 11:01
Lexxx_HU, попробуйте подобрать чарсет для немецких букв Font->Charset .

Добавлено через 7 минут и 7 секунд
Цитата(aktuba @  12.11.2007,  23:16 Найти цитируемый пост)
Никак. TEdit поддерживает только анси-кодировку. 

  Кто сказал что ANSI не позволяет выводить немецкий язык? Немецкий и русский в одной строке не может, а немецкий-английский легко.

Автор: Alexeis 13.11.2007, 11:26
Вот например так
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Font.Charset := EASTEUROPE_CHARSET;
  Edit1.Text := 'fu'#252'hrt';
end;


код #252 мне пришлось поставить так как у меня нет немецкой раскладки, а немцы смогут вставлять как обычный текст.

Автор: Lexxx_HU 13.11.2007, 12:07
Цитата(Alexeis @ 13.11.2007,  11:26)
Вот например так
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.Font.Charset := EASTEUROPE_CHARSET;
  Edit1.Text := 'fu'#252'hrt';
end;


код #252 мне пришлось поставить так как у меня нет немецкой раскладки, а немцы смогут вставлять как обычный текст.

Спасибо за идею ..
но все равно вместо символов ввводятся символы без весечек ..
может это как то связано с настрйками языков в самом Windows ?

Автор: Snowy 13.11.2007, 12:41
Смени фонт на Tahoma.
Если у тебя 7-я дельфя или ниже, то по умолчанию стоит Serif.
А он не поддерживает языки.
Выбери Tahoma и нужную локаль.

Автор: MetalFan 13.11.2007, 12:43
upd:аа) нечитайте это сообщение) фигню сморозил)
later: встал однажды вопрос, потребовался ввод юникода. 
решил таким образом: TRichEdit + SendMessageW/Get(Set)WindowTextW

Автор: EvilsInterrupt 13.11.2007, 12:57
MetalFan, +1 !

Автор: Lexxx_HU 13.11.2007, 15:59
Цитата(MetalFan @ 13.11.2007,  12:43)
upd:аа) нечитайте это сообщение) фигню сморозил)
later: встал однажды вопрос, потребовался ввод юникода. 
решил таким образом: TRichEdit + SendMessageW/Get(Set)WindowTextW

что то не совсем понял эту идею
можно пожалуйста поподробней

Автор: Bose 13.11.2007, 18:45
Lexxx_HU, используй какой-нибудь эдит поддерживающий юникод, и будет тебе счастье. Например: tntEdit(из tntUnicodeControls), или на худой конец, RichEdit.

Автор: Lexxx_HU 13.11.2007, 23:43
Цитата(Bose @ 13.11.2007,  18:45)
Lexxx_HU, используй какой-нибудь эдит поддерживающий юникод, и будет тебе счастье. Например: tntEdit(из tntUnicodeControls).

спасибо громадное за наводку
получилось .. только не совсем все ..
скачал этут бибиотеку .. установил все компоненты ..
сделал пробную форму ..
кидаю на нее TntEdit
поменял у него свойство
Form1.TntEdit1.Font на Tahoma
Form1.TntEdit1.Charset - по умолчанию
запускаю проект .. пытаюсь ввести символы
сразу скажу что ракладка клавиатуры венгерская... на фото видно что ввожу и что вводится ...
почему то только некоторые символы корректно отображаются
в чем может быть проблема ?

http://imageshack.us

Автор: aktuba 14.11.2007, 02:20
Цитата(Alexeis @  13.11.2007,  12:01 Найти цитируемый пост)
Кто сказал что ANSI не позволяет выводить немецкий язык?

Никто не говорил. Я говорил, что unicode нельзя в TEdit использовать ;):
Цитата(Lexxx_HU @  12.11.2007,  21:22 Найти цитируемый пост)
как можно сделать так чтоб в EDIT
можно было вводить уникод символы ...


Автор: Lexxx_HU 18.11.2007, 10:50
народ ... ну что .. так никто до конца не сможет помочь ?

Автор: Bose 20.11.2007, 19:21
Цитата(Lexxx_HU @  18.11.2007,  10:50 Найти цитируемый пост)
народ ... ну что .. так никто до конца не сможет помочь ?

да кто его знает в чём проблема-то. 

Попробуй следующее:
1) ввести тем же шрифтом те же буквы, например, в Word'е. Если не получится - вероятно проблема в самом шрифте.
2) Попробуй кидать TntEdit не на Tform - а на TTntForm. (наугад предполагаю)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)