CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Добрый день!
Для универсальной обработки колонок грида (со строчными данными) пишу класс-форму для массового исправления ошибок ввода. Типа найти и заменить в приложениях офиса, но есть желание задействовать почти все средства обработки строчных полей Фоксом. Текст бокс (если не использовать маски) по умолчания полностью заполнен пробелами. Для визуального отделения введенных пользователем пробелов от тех что там находятся изначально хотелось бы использовать символ CHR(15). Когда нажимаешь в текстовом поле комбинацию АЛТ + 1 + 5 на клавиатуре символ в текст бокс успешно вбивается, а если делать программно через CHRTran(***,CHR(32),CHR(15)) то пропечатываются квадратики. Как реализовать по простому? Исправлено 1 раз(а). Последнее : wow1970, 09.12.17 14:46 |
Re: CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Кстати задача правильно показывать что искать/менять оказалась не такой уж простой.
Как всегда без переделки базовых контролов не обходится. Пока не ввел свойство myValue желаемого поведения никак не получалось добиться. И все базовые контролы недоделанные. То комбобокс допилишь для грида, то еще что.
Исправлено 2 раз(а). Последнее : wow1970, 09.12.17 15:45 |
Re: CHR(15) в TextBox | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Вбивается, но не символ с кодом 15. Символ 15 вбивается после Alt+015. А после Alt+15 у меня вбивается символ 164, то есть, то же самое, что и при Alt+0164. |
Re: CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
В чем пробовали? В текстбоксе если удерживая АЛТ нажать 1 и 5. В командном окне ФОКСПРО также. Та даже в ворде АЛТ + 15. При 015 ничего не получается. Вернее квадратик.
|
Re: CHR(15) в TextBox | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Квадратик - это и есть символ с кодом 15, и набирается он с помощью Alt+015. А с чего вы решили, что тот символ, который набирается через Alt+15 имеет код 15? Ни с чего, просто решили, что именно так должен набираться этот символ. Ну, или потому, что внешне он похож на символ с кодом 15 в досовских шрифтах. Или почему? Вставьте в командном окне через Alt+15 символ сюда, и получите ответ:
PS В Ворде все немножко иначе, но он все же поддерживает юникод, так что просто не надо сравнивать. |
Re: CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Да, спасибо!
Действительно 0164. Теперь можно пробовать реализовать задуманное. НЕ додумался сделать обратную проверку. Все же непонятно выходит. Вот набираешь АЛТ49 и получаешь "1", исполнение кода ?CHRTran(" ",chr(32),Chr(49)) печатает "1". А тут такое. АЛТ15 это 164. Может конечно есть где-то описание сего безобразия. Короче как в человеческом языке. Пишется так, произносится эдак, но для вот таких вообще 3 вариант. Как у французов. Пишем "Peugeot" четаем "пежо". Никогда не понимал ЗАЧЕМ? Отсечь инородцев? Типа шифра свой/чужой. |
Re: CHR(15) в TextBox | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
Я когда-то давно где-то прочитал, не особенно задумываясь, что после Alt надо всегда сначала набирать 0, а уже потом код символа. Иногда это не требуется, но лучше не думать, когда можно, а когда нет, а всегда набирать этот 0.
Может, кто-то разъяснит этот момент "теоретически", но мне всегда хватало этого простого правила. Цитата:Когда-то давно подобные слова читались "как писались", или скорее - писались, как произносились. Со временем произношение менялось, а вот письмо оказалось гораздо более консервативно. Но это ответ на вопрос "Почему?" Исправлено 1 раз(а). Последнее : akvvohinc, 10.12.17 05:50 |
Re: CHR(15) в TextBox | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
А зачем CHR(15)? Обычно пробел варьируют с "пустым" пробелом, получаемым после нажатия Alt+2+5+5. В дос-формате этому соответствует CHR(255). В ANSI же коду 255 соответствует уже буква "я". Но если скажем набрать в командном окошке фокса: ?ASC('') и между кавычками сделать такое нажатие, туда как раз и впечатается такой пробел и будет соответствующий уже ANSI-код: 160. Т.е. в зависимости от кодировки данных, в 1251-кодировке можно использовать как альтернативный пробел - CHR(160), а в 866 - CHR(255). В принципе можно забить поля в качестве начальных такими "дополнительными" пробелами, и при желании например даже и "подкрасить" их. Хотя, уровень сложности организации подобного будет конечно зависеть еще и от используемых контролов, проще всего видимо в richedit. Зато цветовое решение будет смотреться красиво и функционально по сравнению с планировавшимся "разделителем". ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) Исправлено 2 раз(а). Последнее : Crispy, 11.12.17 13:18 |
Re: CHR(15) в TextBox | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
ТС хочет визуально отличать одни пробелы от других. |
Re: CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Добрый вечер!
Остановился на символе CHR(149) вместо пробелов. Мне надо не только различать, а еще и подкрасить в точности только то, что надо. А вообще собираюсь задействовать практически все строчные функции фокса. Для задач по массовому исправлению грязи в данных очень пригодится. Вот только начал делать (на картинке). Реализовал CTRTran() У меня грид уже умеет: 1) сортировать по нескольким колонкам 2)мощно фильтровать по любому количеству колонок (Like, ==, <> (25 штук, ограничение Inlist(), можно задать что-то самому) 3)Источником записей служит КА, буферизация 5. Потому измененные ячейки красятся в красный цвет.Можно откатить, посмотреть что было до изменений. Разруливаются конфликты обновлений. 4). Реализовано выделение записей в точности как в екселе. Это для того, чтобы синхронно поменять значения по ВСЕМ выделенным записям в ПОЛЕ. 5). Поиск, прятание колонок, локальное меню и т.п. Задача максимум сделать универсальный класс который возьмет лучшее от екселя, просмотрищиков дбф и т.д. Идей куча. Кстати я осознал, что нас обманули! "ВИЗУАЛ" фокспро. Что-то нормальное сделать в стиле ООП можно только описывая классы в прг. С ужасом вспоминаю как пытался сделать все визуальными библиотеками. Сейчас у меня грид (с обвязкой) занимает примерно 3000 строк. Я его никогда бы не сделал, если бы делал в vcx. Исправлено 1 раз(а). Последнее : wow1970, 11.12.17 20:53 |
Re: CHR(15) в TextBox | |
---|---|
Ydin Сообщений: 7648 Откуда: Киев Дата регистрации: 16.12.2005 |
А чем vcx плох? Все то же самое, только удобней и быстрее
|
Re: CHR(15) в TextBox | |
---|---|
pasha_usue Сообщений: 3647 Откуда: Е-бург Дата регистрации: 06.10.2006 |
Тупо не дали допилить разработчикам VFP. Проект сворачивался, и на это забили. MemberClass'ы можно нормально прописать исключительно в PRG. |
Re: CHR(15) в TextBox | |
---|---|
PaulWist Сообщений: 14601 Дата регистрации: 01.04.2004 |
Не все объекты можно создать в vcx штатными средствами Class designer.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Ничего не удобней. Заглядывать как собака в кость.
В прг вся мощь редактора в распоряжении, копирование кусков, можно мусорить, все на виду. Заменить/найти неудачно названую переменную нараз. Скорость в разы для меня выше. А после того как терял сделанное из-за развала vct (копий вовремя естественно не сделал) вообще отказался. Убить класс в прг НЕВОЗМОЖНО. |
Re: CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Кстати вопрос кода символа для себя закрыл. Вот так.
|
Re: CHR(15) в TextBox | |
---|---|
wow1970 Автор Сообщений: 29 Дата регистрации: 06.12.2017 |
Осталось правда понять почему cdbf умеет отображать символы 1 - 31, а Фокспро нет.
|
Re: CHR(15) в TextBox | |
---|---|
akvvohinc Сообщений: 4203 Откуда: Москва Дата регистрации: 11.11.2008 |
От умения VFP это не зависит - используйте шрифт, в котором есть "нормальное" отображение символов с такими кодами.
Как пример можете взять FoxFont. Обычно в системе TrueType-шрифтов такого рода не бывает, но найти и установить можно. Я, например, нашел архив с таким именем - CourierNewMod-5.11-ControlChars.zip. В нем символы с начальными кодами есть в виде квадратика с числом, равным коду, внутри. Эти символы, естественно выводятся и в Textbox, если задать у него свойство Fontname c этим шрифтом. Ну, а с помощью программы-редактора шрифтов можно "нарисовать" любые символы по вашему желанию, и квадратики исчезнут. |
Re: CHR(15) в TextBox | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
А смысл в таком курсоре? Чисто для "посмотреть код и символ"? И да, всего есть 256 кодов, счёт начинается с 0. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |