Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ComboBox заменяет \\ на \ / 12 сообщений из 12, страница 1 из 1
06.05.2005, 20:50
    #33053704
Guestttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Добавляю строку в ComboBox
Код: plaintext
thisform.combo1.AddItem("\\comp_name1\directory")

а он заменяет две косых \\ на одну: \comp_name1\\directory


ПОМОГИТЕ решить проблему !!!
...
Рейтинг: 0 / 0
06.05.2005, 21:09
    #33053711
Диченка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
А так

Код: plaintext
thisform.combo1.AddItem("\"+"\comp_name1\directory")
...
Рейтинг: 0 / 0
06.05.2005, 21:15
    #33053716
Guestttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
тоже самое (юзаю VFP8 SP1)
...
Рейтинг: 0 / 0
06.05.2005, 21:16
    #33053719
Guestttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
В ListBox кстати тоже самое
...
Рейтинг: 0 / 0
06.05.2005, 21:28
    #33053729
Диченка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Вот это тебя спасет :)

Код: plaintext
thisform.combo1.AddItem("\\\comp_name1\directory")
...
Рейтинг: 0 / 0
07.05.2005, 02:15
    #33053876
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Один backslash используется для того, чтобы сделать item disabled. Это в меню, листбоксах и комбобоксах так. Выбрать-то такой item потом можно?
...
Рейтинг: 0 / 0
07.05.2005, 12:13
    #33053987
Guestttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Выбрать без проблем.

но замена \\ в \ , \\\\ в \\ , и т.д. ...... в ...
прям как в С++ форматирование wsprintf

Тогда почему MS не сделало бы полностью реализацию
всех \\ --> \, \0 --> ноль, \n --> перенос строки
и т.д.?
...
Рейтинг: 0 / 0
07.05.2005, 12:40
    #33053999
Guestttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Слелал функцию combo2_4(str) замены ВСЕХ вхождений '\\' на '\\\\'

и теперь все работает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
thisform.combo1.clear

n_max=APRINTERS(mm)

FOR n= 1  TO n_max
  thisform.combo1.AddItem( combo2_4( mm(n, 1 ) ) )
NEXT

set printer to name thisform.combo1.list(thisform.combo1.listIndex)

&& раньше на этом вылетало '\\COMP1\HP LaserJet 2200 PCL6'
&& т.к. значение было  '\COMP1\HP LaserJet 2200 PCL6'
&& теперь все стало правильно - две косых

Буду очень признателен, если кто обьянит почему так сделали в Майкрософте
...
Рейтинг: 0 / 0
07.05.2005, 12:41
    #33054000
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Один backslash интрепретируется как признак Disabled для текущего элемента только если источником данных для ComboBox или ListBox является массив или ручное наполнение списка. Во всех остальных случаях содержимое отображается "как есть".

Поэтому выход может быть в создании в качестве источника курсора

Код: plaintext
1.
2.
3.
4.
CREATE CURSOR curList (MyPath C( 128 ))
INSERT INTO curList (MyPath) VALUES ("\\comp_name1\directory")

ThisForm.ComboBox1.RowSourceType =  6  - Fields
ThisForm.ComboBox1.RowSource = "curList.MyPath"
...
Рейтинг: 0 / 0
07.05.2005, 13:25
    #33054018
Guestttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
2 ВладимирМ

После ответа слазил в книгу Горев "Visual FoxPro" - все так и есть. Спасибо!
Остался только вопрос почему пункт остается доступным
при RowSourceType=0 или 1
...
Рейтинг: 0 / 0
07.05.2005, 13:49
    #33054032
Новоселов Олег
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Код: plaintext
1.
2.
3.
4.
 1 ) Символ '\' - ОДИН используется для того, чтобсделать пункт недоступным
он должен быть ОБЯЗАТЕЛЬНО первым. (если не первый, то как обычная буква)

 2 ) Символа '\\' преобразуются в '\'. 
Для того чтоб пункт сделать доступным пункт начинающийся с '\'
P.S. Зачем, во втором случае, такую замену делают, для ВСЕХ вхождений в строке незнаю.
Наверно используется какая-то стандартная внутренняя функция подмены,
(типа как в меню). Ну не хотели(не успели) написать в каком-нибудь VFP5.0
а потом оставили, для совместимости :-))
...
Рейтинг: 0 / 0
07.05.2005, 13:57
    #33054042
Guestttt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ComboBox заменяет \\ на \
Выходит все-таки нужна функция:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
FUNCTION combo2_4
PARAMETERS cPar

LOCAL cRet
LOCAL n

cRet=''
n=AT('\\',cPar)
DO WHILE n> 0 
	cRet=cRet+SUBSTR(cPar, 1 ,n- 1 )+'\\\\'
	cPar=SUBSTR(cPar,n+ 2 )
	n=AT('\\',cPar)
ENDDO 
IF LEN(cPar)> 0 
	cRet=cRet+cPar
ENDIF 

*MESSAGEBOX("Стало "+cRet, 0 ,"Было "+cPar) && для проверки
RETURN cRet

Тема закрыта.
Всем спасибо!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / ComboBox заменяет \\ на \ / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]