Страницы: 1 2 След.
RSS
Формат части строки вStatusBar
 
Всем привет,  
 
Для имитирования ProgressBar в строке статуса нужны кубики. Есть ли возможность в строке статуса части строки задать формат шрифта Wingdings символ 110 зеленого цвета (Chr110):  
 
Application.StatusBar = "Выполнение макроса Test: " & String(Int(5 * CDbl(j) / CDbl(n)), Chr(110))  
 
Владимир.
 
Очень сомневаюсь, что такое возможно  
 
Точнее, шрифт, конечно, можно поменять (в настройках системы), но результат Вам не понравится - почти во всех программах надписи будут выполнены таким шрифтом  
 
Со цветом - вообще нереально.  
 
А чем не устраивает классический прогресс-бар (который посреди экрана)?  
Примеров на форуме множество...  
Вот один из вариантов: http://www.programmersforum.ru/showpost.php?p=148631&postcount=2
 
Здравствуте Игорь,  
 
Понимаю, что понты. С Вашими примерами знаком, выглядит приятно. Но дюже они тяжеловаты. У меня процесс и так не очень прыток, а тут такая нагрузка. В принципе мне достаточно строки Application.StatusBar = "Завершено на: " & INT(100 * CDbl(i)/CDbl(n)) & "%". НО ведь хочется понтов, причем малыми усилиями...    
 
Игорь, а Вы не знаете как Excel сам реализует ProgressBar в строке статуса.
 
> как Excel сам реализует ProgressBar в строке статуса.  
 
Это встроено глубоко в Excel (точнее, в одну из библиотек Office)  
Задействовать эти функции мне не представляется возможным.
 
Можно, можно его достать. Оле Эрландсен это демонстрировал в свое время. Сейчас файл лежит у Уокенбаха:  
 
http://j-walk.com/ss/excel/files/developer.htm (Control the LED Display in the StatusBar)
KL
 
> Можно, можно его достать  
 
Пример, конечно, интересный, но встроенный в excel прогресс-бар он никоим образом не затрагивает - прогресс-бар отрисовывается поверх строки состояния API-функциями.  
 
При таком большом количестве очень сложного кода можно было добиться куда большего, нежели имитация встроенного прогресс-бара - подобным кодом можно рисовать что угодно и где угодно.
 
Мне почему-то кажется, что, затрагивает он или нет встроенный прогрессбар, для автора темы не принципиально. Главное - это можно сделать достаточно правдоподобно и гибко :-)
KL
 
Все, чтоя нарыл в инете - просто наложение с отслеживанием координат. Хотелось проще - времени на понты жалко...
 
Хотите проще - получайте:  
 
Sub test()  
   For i = 1 To 10000  
       p = i \ 100  
       Application.StatusBar = "Выполнено: " & p & "%   " & String(p \ 10 + 1, ChrW(8700))  
       DoEvents  
   Next  
   Application.StatusBar = False  
End Sub
 
Кстати, вместо квадратиков можно использовать всякие другие прикольные символы.  
 
К примеру, попробуйте такой вариант макроса:  
 
Sub test()  
   For i = 1 To 10000  
       p = i \ 100  
       Application.StatusBar = "Выполнено: " & p & "%   " & String(p \ 10 + 1, ChrW(10000 + p \ 2))  
       DoEvents  
   Next  
   Application.StatusBar = False  
End Sub
 
Вот ещё пара вариаций на ту же тему: (обязательно попробуйте - вдруг понравится)  
 
Sub test()  
   For i = 1 To 10000  
       p = i \ 100: s = "": For j = 10102 To 10102 + p \ 10: s = s & ChrW(j): Next  
       Application.StatusBar = "Выполнено: " & p & "%   " & s: DoEvents  
   Next  
   Application.StatusBar = False  
End Sub  
 
 
Sub test2()  
   For i = 1 To 10000  
       p = i \ 100: s = String(p \ 10, ChrW(10152)) & String(11 - p \ 10, ChrW(8700))  
       Application.StatusBar = "Выполнено: " & p & "%   " & s: DoEvents  
   Next  
   Application.StatusBar = False  
End Sub
 
Спасибо Игорь,  
С кубиками мне понравилось, очень даже не плохо.  
Подскажи пожалуйста:  
1. Какой шрифт в строке Статуса по умолчанию.  
2. Где можно символы посмотреть-подобрать.  
3. ChrW() - (справка молчит) - чем отличается от Chr()
 
> 1. Какой шрифт в строке Статуса по умолчанию.  
Фиг знает :) Попробуй сам угадать :)  
Какой-то из системных...  
 
 
> 2. Где можно символы посмотреть-подобрать.  
Я это сделал так:  
Сначала один раз запустил макрос:  
 
Sub test000()  
   Application.StatusBar = ChrW(10000)  
End Sub  
 
А потом с кнопки много раз запускал такой макрос:  
 
Sub МакросНазначенныйКнопкеНаЛисте()  
   Application.StatusBar = ChrW(AscW(Application.StatusBar) + 1) & "  код символа: " & AscW(Application.StatusBar) + 1  
End Sub  
 
Хватило меня ненадолго, но выводы для себя сделал :)  
 
 
> 3. ChrW() - (справка молчит) - чем отличается от Chr()  
Chr() - для символов с кодами до 255  
ChrW() - для символов с кодами до 65535 (unicode)
 
{quote}{login=EducatedFool}{date=13.10.2009 11:03}{thema=}{post}Вот ещё пара вариаций на ту же тему: (обязательно попробуйте - вдруг понравится)  
 
Sub test()  
   For i = 1 To 10000  
       p = i \ 100: s = "": For j = 10102 To 10102 + p \ 10: s = s & ChrW(j): Next  
       Application.StatusBar = "Выполнено: " & p & "%   " & s: DoEvents  
   Next  
   Application.StatusBar = False  
End Sub  
 
 
Sub test2()  
   For i = 1 To 10000  
       p = i \ 100: s = String(p \ 10, ChrW(10152)) & String(11 - p \ 10, ChrW(8700))  
       Application.StatusBar = "Выполнено: " & p & "%   " & s: DoEvents  
   Next  
   Application.StatusBar = False  
End Sub{/post}{/quote}  
 
Второй вариант просто замечательный, но надо стрелку заменить закрашенным кубиком или на худой конец крестиком. Будет круче... Где вы символы видите?
 
{quote}{login=EducatedFool}{date=13.10.2009 11:21}{thema=}{post}> 1. Какой шрифт в строке Статуса по умолчанию.  
Фиг знает :) Попробуй сам угадать :)  
Какой-то из системных...  
 
 
> 2. Где можно символы посмотреть-подобрать.  
Я это сделал так:  
Сначала один раз запустил макрос:  
 
Sub test000()  
   Application.StatusBar = ChrW(10000)  
End Sub  
 
А потом с кнопки много раз запускал такой макрос:  
 
Sub МакросНазначенныйКнопкеНаЛисте()  
   Application.StatusBar = ChrW(AscW(Application.StatusBar) + 1) & "  код символа: " & AscW(Application.StatusBar) + 1  
End Sub  
 
Хватило меня ненадолго, но выводы для себя сделал :)  
 
 
> 3. ChrW() - (справка молчит) - чем отличается от Chr()  
Chr() - для символов с кодами до 255  
ChrW() - для символов с кодами до 65535 (unicode){/post}{/quote}  
 
 
 
Спасибо, теперь я знаю как...
 
Боюсь, эти коды плавают в зависимости от системы. У меня с кубиками работает такое:  
 
Sub test2()  
For i = 1 To 10000  
p = i \ 100: s = String(p \ 10, ChrW(9632)) & String(11 - p \ 10, ChrW(9633))  
Application.StatusBar = "Выполнено: " & p & "% " & s: DoEvents  
Next  
Application.StatusBar = False  
End Sub
KL
 
А таблицу символов Unicode можно поглядеть здесь:  
http://db-maker.narod.ru/indexrus.htm?page=unicode.htm
 
Похоже по умолчанию или Tahoma или Arial...  
Циклом в ячейки прописал сижу - выбираю...
 
{quote}{login=KL}{date=13.10.2009 11:32}{thema=}{post} в зависимости от системы{/post}{/quote}  
Кирилл, Вы по роду своей своей деятельности сталкивались с большим количеством локализаций. Давным давно видел по ТВ передачу, как выглядит печатная машинка (не помню - Япония или Китай), но сути не меняет. А как обстоит ситуация У НИХ с клавиатурой - ведь для такого количества символов, наверное, нужно иметь не один слой шифтов? :-)  
Влад, извините, что не в тему - просто жутко интересно, а создавать отдельную тему - вроде к Excel отношения не имеет...
 
Набрал в Яндексе фразу "китайская клавиатура"  
Узнал много нового :)  
 
http://linyssik.narod.ru/mini-keyboard.jpg  
 
Вот здесь написано про ввод иероглифов с клавиатуры:  
http://community.livejournal.com/all_china/56519.html  
 
 
PS: По работе приходится общаться с китайцами (настраивать интернет на китайских ноутах)  
Смотрел, как они печатают... Ничуть не медленнее, чем мы :)
 
Я Вам могу ответить - у них есть упрощенное написание иероглифов, на каждую букву латиницы вешается выпадающий список, по второй латинице он укорачивается до выбора двух-четырех иероглифов, вообщем как ComboBox. На таком же приципе SMS сообщения. Был в Китае видел сам...
 
{quote}{login=EducatedFool}{date=13.10.2009 11:21}{thema=}{post}  
> 3. ChrW() - (справка молчит) {/post}{/quote}Не молчит, просто мельком упомянуто в разделе про Chr()
Bite my shiny metal ass!      
 
:-) Игорь, я бы ни за что не смог на такой набирать текст. Да ещё быстро... А про печатные машинки - так там там было несколько нечто вроде дополнительных кареток-клавиатур, которые сменяются (передвигаются) по мере необходимости.
 
{quote}{login=KL}{date=13.10.2009 11:32}{thema=}{post}Боюсь, эти коды плавают в зависимости от системы. У меня с кубиками работает такое:{/post}{/quote} Вроде как Unicode задумывалось как не зависящая от рег и системных настроек. Возьмите браузер, меню кодировка - там нет "Unicode кириллица" или "Unicode западноевропейская". Их всего две UTF-8 и UTF-16.  
Ваши "кубики" мне больше всех понравились.
Bite my shiny metal ass!      
 
{quote}{login=Юрий М}{date=13.10.2009 11:49}{thema=Re: }{post}{quote}{login=KL}{date=13.10.2009 11:32}{thema=}{post} в зависимости от системы{/post}{/quote}  
Кирилл, Вы по роду своей своей деятельности сталкивались с большим количеством локализаций. Давным давно видел по ТВ передачу, как выглядит печатная машинка (не помню - Япония или Китай), но сути не меняет. А как обстоит ситуация У НИХ с клавиатурой - ведь для такого количества символов, наверное, нужно иметь не один слой шифтов? :-)  
Влад, извините, что не в тему - просто жутко интересно, а создавать отдельную тему - вроде к Excel отношения не имеет...{/post}{/quote}  
Юрий, в принципе по китайскому уже ответили. Я сам с китайским сталкиваюсь редко, а вот по-японски пишу довольно много. В японском используется несколько алфавитов: канджи (китайские иероглифы), хирагана (слоговый алфавит для слов японского происхождения), катакана (слоговый алфавит для слов иностранного происхождения) и ромаджи (латинская транскрипция). Активно используются где-то 3000-5000 канджи. В хирагане и катакане по 46 символов плюс вариации с надстрочными знаками, т.ч. порядка 73 символов в каждой. Латиница - понятно. Для дальневосточных языков в Windows требуется установка дополнительных библиотек. Японцы для ввода канджи пользуются либо IME Pad (рисовалка OCR), либо клавиатуру с хираганой переключаемой на катакану, которая автоматом превращает нужное в канджи, либо крайне редко латинскую с тем же функционалом. В японском правда в принципе допускается писать все на хирагане и катакане.
KL
 
{quote}{login=Лузер™}{date=14.10.2009 12:13}{thema=Re: }{post}{quote}{login=KL}{date=13.10.2009 11:32}{thema=}{post}Боюсь, эти коды плавают в зависимости от системы. У меня с кубиками работает такое:{/post}{/quote} Вроде как Unicode задумывалось как не зависящая от рег и системных настроек. Возьмите браузер, меню кодировка - там нет "Unicode кириллица" или "Unicode западноевропейская". Их всего две UTF-8 и UTF-16.  
Ваши "кубики" мне больше всех понравились.{/post}{/quote}  
Пожалуй, я ляпнул, не подумав :-)
KL
 
{quote}{login=KL}{date=14.10.2009 01:51}{thema=Re: Re: }{post}  
Пожалуй, я ляпнул, не подумав :-){/post}{/quote}  
Почему же? - Правильное было замечание.  
"В зависимости от систем" может означать разные шрифты систем.    
Unicode-символ с одним и тем же кодом, но с разным шрифтом отображается по разному: примените, например, шрифт MS Outlook к английскому символу A - отобразится звоночек. А для русской А отобразится прямоугольник.  
При этом Debug.Print AscW(ActiveCell) выдаст один и тот же код для разных шрифтов.
 
Про разные шрифты я не подумал. А ведь видел неоднократно в Вставка - Символ.  
Значит надо каким-то способом узнавать шрифт, знать под какими номерами квадратики...
Bite my shiny metal ass!      
 
{quote}{login=EducatedFool}{date=13.10.2009 11:03}{thema=}{post}Вот ещё пара вариаций на ту же тему: (обязательно попробуйте - вдруг понравится)  
 
Sub test()  
   For i = 1 To 10000  
       p = i \ 100: s = "": For j = 10102 To 10102 + p \ 10: s = s & ChrW(j): Next  
       Application.StatusBar = "Выполнено: " & p & "%   " & s: DoEvents  
   Next  
   Application.StatusBar = False  
End Sub  
 
 
Sub test2()  
   For i = 1 To 10000  
       p = i \ 100: s = String(p \ 10, ChrW(10152)) & String(11 - p \ 10, ChrW(8700))  
       Application.StatusBar = "Выполнено: " & p & "%   " & s: DoEvents  
   Next  
   Application.StatusBar = False  
End Sub{/post}{/quote}  
 
Столкнулся с тем, что в 2007 Application.StatusBar дает ошибку. Можно ли выполнить такую фичу на 2007-м?
 
да, нет :)  
 
работает
Живи и дай жить..
Страницы: 1 2 След.
Читают тему
Наверх
Loading...