Русский язык в компонентах TShellListView и TShellTreeView.
Модератор: Модераторы
-
yantux
- постоялец
- Сообщения: 133
- Зарегистрирован: 29.10.2007 15:02:33
- Откуда: Санкт-Петербург
- Контактная информация:
Русский язык в компонентах TShellListView и TShellTreeView.
Lazarus MS Windows. Использую TShellListView и TShellTreeView. Проблема в том, что вместо нормального отображения русских букв отображает знаки вопроса. Можно взять путь к файлу и открыть его другим компонентом (например tmemo), но пишет ошибку открытия файла.
- dunin
- энтузиаст
- Сообщения: 634
- Зарегистрирован: 02.05.2007 13:18:11
- Откуда: Тољя††и
- Контактная информация:
yantux писал(а):Lazarus MS Windows. Использую TShellListView и TShellTreeView. Проблема в том, что вместо нормального отображения русских букв отображает знаки вопроса.
...
Кодировка. 40 000 раз на форуме проблема всплывала.
yantux писал(а):...
Можно взять путь к файлу и открыть его другим компонентом (например tmemo), но пишет ошибку открытия файла.
Проблема из другой области. Не связано со знаками вопроса.
-
yantux
- постоялец
- Сообщения: 133
- Зарегистрирован: 29.10.2007 15:02:33
- Откуда: Санкт-Петербург
- Контактная информация:
Nik писал(а):Подсказка: для нормальной работы с путями файлов см. в сторону функции SysToUTF8.
Я правильно понимаю, что мне придётся обрабатывать все ноды в нужную кодировку, чтобы они корректно отображались?
Это поможет для отображения только для MS Windows XP или это будет кроссплатформенным решением, в т.ч. и для Линукс?
Добавлено спустя 2 минуты 2 секунды:
dunin писал(а):Кодировка. 40 000 раз на форуме проблема всплывала.
Сделал поиск в форуме по названиям компонетов-решения не нашёл, 40 000 раз явно не всплывало.
dunin писал(а):Проблема из другой области. Не связано со знаками вопроса.
Это связано с настойкам Лазаруса, шрифтами или надо насильно пеорекодировать все строки в нодах обоих компонентов, чтобы они корректно тоборажались?
yantux
1. Для начала расскажите, откуда Вы берёте названия нодов?
2.
- Если у Вас в путях файлов прсутствуют русские буквы, то при чтении файла надо этот путь преобразовать из UTF8 в системную кодировку (UTF8ToSys(путь к файлу)).
- Если в путях к файлу есть пробелы, то такие пути надо обязательно заключать в кавычки.
1. Для начала расскажите, откуда Вы берёте названия нодов?
2.
yantux писал(а):Можно взять путь к файлу и открыть его другим компонентом (например tmemo), но пишет ошибку открытия файла.
- Если у Вас в путях файлов прсутствуют русские буквы, то при чтении файла надо этот путь преобразовать из UTF8 в системную кодировку (UTF8ToSys(путь к файлу)).
- Если в путях к файлу есть пробелы, то такие пути надо обязательно заключать в кавычки.
-
yantux
- постоялец
- Сообщения: 133
- Зарегистрирован: 29.10.2007 15:02:33
- Откуда: Санкт-Петербург
- Контактная информация:
Vadim писал(а):- Если у Вас в путях файлов прсутствуют русские буквы, то при чтении файла надо этот путь преобразовать из UTF8 в системную кодировку (UTF8ToSys(путь к файлу)).
- Если в путях к файлу есть пробелы, то такие пути надо обязательно заключать в кавычки.
Есть это работает.
А что надо сделать, чтобы компоненты отображали не знаки вопроса, а русские буквы в Windows XP? Я пробовал менять charset в свойствах этих компонентов, но ни чего не помогало. Как заставить эти компонеты автоматически конвертить кодировку для корректного отображения?
yantux
Vadim писал(а):1. Для начала расскажите, откуда Вы берёте названия нодов?
yantux Lazarus 0.9.29 rev. 25451 Win32 - русские буквы отображаются нормально.
-
yantux
- постоялец
- Сообщения: 133
- Зарегистрирован: 29.10.2007 15:02:33
- Откуда: Санкт-Петербург
- Контактная информация:
Vadim писал(а):yantuxVadim писал(а):1. Для начала расскажите, откуда Вы берёте названия нодов?
Нет проблем с путями и названиями файлов и их открытия на русском - делаю utf8tosys.
А вот отображения на русском языке нет.
Добавлено спустя 1 минуту:
Mr.Smart писал(а):yantux Lazarus 0.9.29 rev. 25451 Win32 - русские буквы отображаются нормально.
Нужно брать именно эту версию или можно взять самую последнюю, которая сейчас тестируется?
yantux писал(а):Нужно брать именно эту версию или можно взять самую последнюю, которая сейчас тестируется?
Последнюю, которая лежит на сайте.
Добавлено спустя 1 минуту 36 секунд:
yantux
Вас надо понимать так, что названия для нодов Вы берёте из файла? А в файл текст Вы пишете на русском и в кодировке 1251?
Vadim - эта пара компонентов сама берёт названия нодов читая имена файлов. Компоненты позволяют быстро создать приложение подобное Проводнику windows.
Mr.Smart
Понятно, спасибо. Я ими никогда не пользовался, поэтому и не знал.
Понятно, спасибо. Я ими никогда не пользовался, поэтому и не знал.
-
yantux
- постоялец
- Сообщения: 133
- Зарегистрирован: 29.10.2007 15:02:33
- Откуда: Санкт-Петербург
- Контактная информация:
В своём очередном чудо проекте я меня поле self.ShellTreeView1.ObjectTypes:=:
так вот, чтобы обновить компонент, чтобы сделать обновление отображения пришлось найти такой способ:
потому что, update, refresh, invalidte не работают.
Есть ли возможность сделать обновление более культурно?
Аналогичная ситуация с компонентом self.ShellListView1.ObjectTypes:=
Вопрос аналогичный.
Код: Выделить всё
if otHidden in self.ShellTreeView1.ObjectTypes then
begin
self.ShellTreeView1.ObjectTypes:=[otFolders];
self.MenuItem_hidden_folders.Caption:='Hidden folders yes';
end else
begin
self.ShellTreeView1.ObjectTypes:=[otFolders,otHidden];
self.MenuItem_hidden_folders.Caption:='Hidden folders no';
end;
так вот, чтобы обновить компонент, чтобы сделать обновление отображения пришлось найти такой способ:
Код: Выделить всё
SelectedIndex:=self.ShellTreeView1.Selected.SelectedIndex;
self.ShellTreeView1.Selected.Expanded:=false;
self.ShellTreeView1.Selected.SelectedIndex:=SelectedIndex;
self.ShellTreeView1.Selected.Expanded:=true;
потому что, update, refresh, invalidte не работают.
Есть ли возможность сделать обновление более культурно?
Аналогичная ситуация с компонентом self.ShellListView1.ObjectTypes:=
Код: Выделить всё
if otHidden in self.ShellListView1.ObjectTypes then
begin
self.ShellListView1.ObjectTypes:=[otNonFolders];
self.MenuItem_hidden_files.Caption:='Hidden files yes';
end else
begin
self.ShellListView1.ObjectTypes:=[otNonFolders, otHidden];
self.MenuItem_hidden_files.Caption:='Hidden files no';
end;
root:=self.ShellListView1.Root;
self.ShellListView1.Root:='';
self.ShellListView1.Root:=root;
Вопрос аналогичный.
Ничего не понял.
Столкнулся с точно такой же проблемой,
ShellTreeView и TShellListView - показывают знаки вопросов, вместо Русских названий файлов и папок.
Как исправить?
Столкнулся с точно такой же проблемой,
ShellTreeView и TShellListView - показывают знаки вопросов, вместо Русских названий файлов и папок.
Как исправить?
