Русский язык в компонентах TShellListView и TShellTreeView.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение yantux » 13.01.2011 23:55:23

Lazarus MS Windows. Использую TShellListView и TShellTreeView. Проблема в том, что вместо нормального отображения русских букв отображает знаки вопроса. Можно взять путь к файлу и открыть его другим компонентом (например tmemo), но пишет ошибку открытия файла.
yantux
постоялец
 
Сообщения: 133
Зарегистрирован: 29.10.2007 16:02:33
Откуда: Санкт-Петербург

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение dunin » 13.01.2011 23:59:27

yantux писал(а):Lazarus MS Windows. Использую TShellListView и TShellTreeView. Проблема в том, что вместо нормального отображения русских букв отображает знаки вопроса.
...

Кодировка. 40 000 раз на форуме проблема всплывала.

yantux писал(а):...
Можно взять путь к файлу и открыть его другим компонентом (например tmemo), но пишет ошибку открытия файла.

Проблема из другой области. Не связано со знаками вопроса.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение Nik » 14.01.2011 00:07:43

Подсказка: для нормальной работы с путями файлов см. в сторону функции SysToUTF8.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение yantux » 16.01.2011 01:57:05

Nik писал(а):Подсказка: для нормальной работы с путями файлов см. в сторону функции SysToUTF8.


Я правильно понимаю, что мне придётся обрабатывать все ноды в нужную кодировку, чтобы они корректно отображались?
Это поможет для отображения только для MS Windows XP или это будет кроссплатформенным решением, в т.ч. и для Линукс?

Добавлено спустя 2 минуты 2 секунды:
dunin писал(а):Кодировка. 40 000 раз на форуме проблема всплывала.

Сделал поиск в форуме по названиям компонетов-решения не нашёл, 40 000 раз явно не всплывало.

dunin писал(а):Проблема из другой области. Не связано со знаками вопроса.


Это связано с настойкам Лазаруса, шрифтами или надо насильно пеорекодировать все строки в нодах обоих компонентов, чтобы они корректно тоборажались?
yantux
постоялец
 
Сообщения: 133
Зарегистрирован: 29.10.2007 16:02:33
Откуда: Санкт-Петербург

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение Vadim » 16.01.2011 05:11:12

yantux
1. Для начала расскажите, откуда Вы берёте названия нодов?
2.
yantux писал(а):Можно взять путь к файлу и открыть его другим компонентом (например tmemo), но пишет ошибку открытия файла.

- Если у Вас в путях файлов прсутствуют русские буквы, то при чтении файла надо этот путь преобразовать из UTF8 в системную кодировку (UTF8ToSys(путь к файлу)).
- Если в путях к файлу есть пробелы, то такие пути надо обязательно заключать в кавычки.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение yantux » 18.01.2011 22:46:00

Vadim писал(а):- Если у Вас в путях файлов прсутствуют русские буквы, то при чтении файла надо этот путь преобразовать из UTF8 в системную кодировку (UTF8ToSys(путь к файлу)).
- Если в путях к файлу есть пробелы, то такие пути надо обязательно заключать в кавычки.


Есть это работает.

А что надо сделать, чтобы компоненты отображали не знаки вопроса, а русские буквы в Windows XP? Я пробовал менять charset в свойствах этих компонентов, но ни чего не помогало. Как заставить эти компонеты автоматически конвертить кодировку для корректного отображения?
yantux
постоялец
 
Сообщения: 133
Зарегистрирован: 29.10.2007 16:02:33
Откуда: Санкт-Петербург

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение Vadim » 19.01.2011 16:29:16

yantux
Vadim писал(а):1. Для начала расскажите, откуда Вы берёте названия нодов?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение Mr.Smart » 19.01.2011 16:35:30

yantux Lazarus 0.9.29 rev. 25451 Win32 - русские буквы отображаются нормально.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение yantux » 20.01.2011 02:28:53

Vadim писал(а):yantux
Vadim писал(а):1. Для начала расскажите, откуда Вы берёте названия нодов?


Нет проблем с путями и названиями файлов и их открытия на русском - делаю utf8tosys.

А вот отображения на русском языке нет.

Добавлено спустя 1 минуту:
Mr.Smart писал(а):yantux Lazarus 0.9.29 rev. 25451 Win32 - русские буквы отображаются нормально.


Нужно брать именно эту версию или можно взять самую последнюю, которая сейчас тестируется?
yantux
постоялец
 
Сообщения: 133
Зарегистрирован: 29.10.2007 16:02:33
Откуда: Санкт-Петербург

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение Vadim » 20.01.2011 05:06:01

yantux писал(а):Нужно брать именно эту версию или можно взять самую последнюю, которая сейчас тестируется?

Последнюю, которая лежит на сайте.

Добавлено спустя 1 минуту 36 секунд:
yantux
Вас надо понимать так, что названия для нодов Вы берёте из файла? А в файл текст Вы пишете на русском и в кодировке 1251?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение Mr.Smart » 20.01.2011 11:00:46

Vadim - эта пара компонентов сама берёт названия нодов читая имена файлов. Компоненты позволяют быстро создать приложение подобное Проводнику windows.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение Vadim » 20.01.2011 13:14:51

Mr.Smart
Понятно, спасибо. Я ими никогда не пользовался, поэтому и не знал. ;)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Русский язык в компонентах TShellListView и TShellTreeView.

Сообщение yantux » 21.01.2011 03:11:26

В своём очередном чудо проекте я меня поле self.ShellTreeView1.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;


Вопрос аналогичный.
yantux
постоялец
 
Сообщения: 133
Зарегистрирован: 29.10.2007 16:02:33
Откуда: Санкт-Петербург

Re: Русский язык в компонентах TShellListView и TShellTreeVi

Сообщение vitaly_l » 31.01.2012 16:46:44

Ничего не понял.
Столкнулся с точно такой же проблемой,
ShellTreeView и TShellListView - показывают знаки вопросов, вместо Русских названий файлов и папок.
Как исправить?
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41


Вернуться в Lazarus

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 202

Рейтинг@Mail.ru