C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TMemoTable
Рыбкин
  Отправлено: 06.06.2003, 11:09


Не зарегистрирован







Господа прошу совета! Воюю уже долго... При отображении данных в DBGride из TMemoTable (RxLib) на некоторых клиентах с Win2000 вместо русских букв решётки.
Admin
Отправлено: 06.06.2003, 14:29


Владимир

Группа: Администратор
Сообщений: 1190



Скорее всего дело не в TMemoTable (RxLib)),
а в том, что ваши таблицы (поля) в Dos-кодировке

Что делать, чтобы, например в DBGrid они отображались нормально:

1/ У компонента Table (Query, MemoryTable) при создании объектов
для этих полей (а это поля типа string), в свойстве
Transliterate установите false

2/ Описываем функцию перевода OEM-ANSI

// Oem To Char
AnsiString toANSI(const char *Text)
{
AnsiString str = Text;
OemToChar(Text, str.c_str());
return str;
}
//----------

3/ В событии onGetText для этого поля пишем
(например компонент Table1, поле Name)

void __fastcall TForm1::Table1NameGetText(TField *Sender, AnsiString &Text,
bool DisplayText)
{
Text = toANSI(Table1Name->AsString.c_str());
}

В DBGrid отображается нормальный русский текст.

Также проблема может быть в драйвере, нужно установить
правильный драйвер в LANGDRIVER

Отредактировано Admin — 6 Jun 2003, 23:20
Рыбкин
Отправлено: 08.06.2003, 12:05


Не зарегистрирован







Заработало!! Огромное спасибо! А то юзера хотели уже коморку мою штурмом брать...

Вернуться в Вопросы программирования в C++Builder