Common controls (индикатор прогресса)
public class MyControl: Control <
Обратите внимание на три вещи. Первый параметр этого варианта конструктора класса TooiboxBitmapAttribute принимает объект Туре, который нужен только для того, чтобы определить сборку, в которой находится требуемый ресурс. Следовательно, это может быть любой тип, определенный в сборке проекта. Второй параметр конструктора чувствителен к регистру. Если файл значка находится в каталоге, отличном от каталога проекта (например, во вложенной папке) и этот файл был добавлен в проект через меню Open Link File (то есть без копирования в каталог проекта), то при указании имени изображения во втором параметре конструктора нужно добавить к названию файла имя папки через точку (например, images .One. ico ).
Создание собственного элемента управления SmoothProgressBar
в заключение мы приведем пример создания собственного элемента управления SmoothProgressBar, который будет ЯВЛЯТЬСЯ реализацией индикатора прогресса с собственным стилем, отличающимся от стандартного индикатора прогресса ProgressBar, который ВХОДИТ В состав .NET Framework. Данный пример основан на статье How to create а smooth progress bar in Visual C# 2005 or in Visual C# .NET из Базы Знаний Microsoft, которую вы можете найти по адресу http: support.microsoft.com/kb/323116/. В ранних версиях элемента управления ProgressBar Существовало два вида индикатора прогресса. Если у вас установлен пакет Visual Basic 6.0, то вы можете увидеть эти два различных стиля работы элементы. Запустите Visual Basic 6.0, выберите в меню Project Components. и в диалоговом окне Components выберите пункт Microsoft Windows Common Controls 6.0 (SP6), который добавит в проект группу элементов ActiveX, в число которых входит и ProgressBar (рис. 6.12).
Далее на панели инструментов найдите элемент ProgressBar и добавьте его на форму. В окне свойств у индикатора прогресса вы увидите свойство Scrolling, состоящее из двух значений- ccscroiiingstandart (Стандартный) и ccScrollingSmooth (ПлавНЫЙ).
Ccntrols Designers j Insertabfe Objects \
: Microsoft Visio Viewer 12.0 Type Ubrary Microsoft Voice Commands .Microsoft Voice Dictation Microsoft Voice Text
Microsoft WindovrfS Common Controls 5.0 (SP2 >. Microsoft Windows Common Controls 6.0 (SP6 . Microsoft Windows Common Controls-2 5,0 (S Microsoft Windows Common Controls-2 6.0 Microsoft VVindov/s Common Contro!s-3 6,0 Microsoft Winsock Control 6,0 I MS Video Control LO Type Libra-y . MSFlexGrid Wizard , Msie ActiveX Control module
Г Selected Items Only
Location: C: \VWJDaVs/S\system32\asctrls.ooJ
Рис. 6.12. Диалоговое окно Components в Visual Basic 6.0
чщес61 — Microsoft Visual Basic [deiig-Гогт1 (FOrmjJ
view Project Format Debug Run Query Diagram lools fidd-lns Windmv Нф
i — Projectl (Projectl)
I Q. Forml (Formll
jProgressBari ProgressBar Alphabetic j Cetegorized
0 — ccOLEDropNone л
Returns/sets a value that determines ivhether the control displays progress with a standard segmented
Рис. 6.13. Два вида индикатора прогресса в Visual Basic
Создание элемента SmoothProgressBar
Но вернемся к Visual С# 2008. Платформа .NET Framework поддерживает только стандартный стиль для индикатора прогресса. Наша цель — разработать свой элемент управления, который будет поддерживать следующие свойства:
□ Minimum- СВОЙСТВО, позволяющее получать или устанавливать минимальное из допустимых значений индикатора прогресса. По умолчанию данное свойство будет установлено в 0. Использовать отрицательные значения в этом свойстве недопустимо;
П Maximum- СВОЙСТВО, позволяющее получать или устанавливать максимальное из допустимых значений индикатора прогресса. По умолчанию значение данного свойства равно 100;
П Value — это СВОЙСТВО получает или устанавливает текущее значение- индикатора прогресса. Значение этого свойства не должно выходить за диапазон, ограниченный свойствами Minimum и Maximum;
П ProgressBarCoior- ЭТО СВОЙСТВО получает ИЛИ устанавливает цвет полоски индикатора прогресса.
Опишем процесс создания собственного элемента управления
SmoothProgressBar ПО шагам.
1. Запустите Microsoft Visual Studio 2008.
2. В меню File выберите команды New Project.
3. В диалоговом окне New Project выберите раздел Visual С# Windows и в списке шаблонов выберите Windows Control Library.
4. В поле Name введите новое имя SmoothProgressBar И нажмите кнопку ОК.
5. В окне Project Explorer замените имя по умолчанию для модуля класса с UserControl 1.CS н SmootliProgressBar.cs.
Первая часть приготовлений к созданию индикатора прогресса закончена. Теперь приступим к написанию кода для разрабатываемого элемента. Откройте редактор кода для файла SmootliProgressBar.cs и вставьте код, приведенный в листинге 6.74.
Плавный стиль заполняет индикатор прогресса сплошной цветной полосой, а стандартный стиль имеет вид маленьких блоков, состоящих из прямоугольников (рис. 6.13).
Common controls (индикатор прогресса)
Что такое ActiveX?
Мой дорогой друг. Когда ты устанавливал на жесткий диск Visual Basic 6.0, то в твой компьютер скачалось много всякого добра, и в том числе куча файлов средств управления ActiveX. Эти файлы лежат в c:\Windows\System или c:\Windows\System32 и имеют расширение .ocx. Большинство этих файлов представляют собой отдельные средства ActiveX, но например, тот, что мы будем рассматривать сегодня (Microsoft Windows Common Controls 6.0) включает в себя аж девять средств управления ActiveX. Некоторые средства ActiveX перечислены на странице «Элементы ActiveX». Сегодня мы поговорим о некоторых.
Начнем с самых нужных и используемых. Одним из таких средств является индикатор хода выполнения — Progress Bar. Если ты достаточно наблюдателен,то наверняка заметил,что при выполнении длительных процессов (копирование файлов, загрузка программ и т.п.) Windows выводит на экран окошко, где синенькая полосочка (индикатор хода выполнения процесса), постепенно увеличиваясь в длине, показывает, какой объем процесса выполнен, и вообще скорость процесса. Индикатор хода выполнения позволяет юзеру не нервничать и утешаться тем, что процесс худо-бедно идет, что он успеет раза два покурить и что компьютер не завис.
Элемент ActiveX: ProgressBar.
Чтобы приступить к использованию Progress Bar, его надо сперва добавить в панель инструментов нашего нового exe-проекта (по-скольку это средство управления ActiveX храниться в файле mscomctl.ocx). Сделать это — раз плюнуть. Для этого надо создать exe-проект, затем в меню Проект надо щелкнуть по строке Компонеты (Рис.22)
Рисунок 22.
Затем, в открывшемся окне списка средств управления найди строку Microsoft Windows Common Controls 6.0 , щелкни в этой строке по полю флажка, поставив галочку и нажми кнопку OK на окне (Рис.23).
Рисунок 23.
У тебя в панели инструментов появилось сразу несколько объектов. И в том числе ProgressBar (Рис.24). Аналогично добавляются и другие средства ActiveX из других файлов.
Рисунок 24.
Теперь ты можешь перетащить его на форму и начать с ним работать. Он будет называться ProgressBar1. Основными свойствами, которыми мы будем пользоваться являются:
.Min — минимальное числовое значение, с которого шкала начнет работать
.Max — максимальное числовое значение, на котором шкала дойдет до конца.
.Value — текущее числовое значение шкалы
кроме того можно использовать
.Scrolling — меняет прерывистую шкалу (0-ccScrollingStandard) на непрерывную (1-ccScrillingSmooth)
.Orientation — установка в вертикальное (если приспичило) или горизонтальное положение
Кроме того, понятно, что имеются всякие стандартные свойства (типа высота-длина, видимый-невидимый и т.п), о которых и говорить-то нечего.
Вообще использовать ProgressBar имеет смысл только в циклах (любых). Ты задаешь начальное и конечное значение, а значение ProgressBar.Value меняется именно в цикле. Собственно именно оно и заставляет шкалу изменяться. Использование этого объекта рассмотри на примере программы Generator, которая иммитирует игрушки-гадалки. Знаешь такие китайские игрушки: загадаешь желание, крутанешь шарик, а он потом остановится и лампочка зажжется у слова типа «Никогда» или «Скоро». Так вот, у нас у аналогичных слов (они заданы в окне свойств, а не в коде) будет останавливаться шкала ProgressBar со свойством .Scrolling — 1-ccScrillingSmooth (неперывная).
Объявим две переменные: первая для хранения сгенерированного случайного числа, вторая — просто для цикла.
Dim MyValue As Long
Dim x As Long
Положим на форму командную кнопку Command1 и в ней напишем процедурку
Private Sub Command1_Click()
Здесь мы используем генератор случайных чисел. Мы уже использовали генерирование случайных чисел в Главе 3 при создании программы «Однорукий бандит», хоть и без оператора Randomize. Этот оператор просто генерирует число и передает его в качестве опорного в функцию Rnd, которая в свою очередь на основе этого числа генерирует случайное число от 0 до 1.
Randomize ‘ Инициализирует генератор случайных чисел.
Поскольку, функция Rnd возвращает число, меньшее единицы, мы умножаем его на 10000, а чтобы избежать нулевого значения, прибавляем единицу. Кроме того, получившийся результат округляем до целого числа с помощью функции Int. Эта функция просто отбрасывает дробную часть (а на самом деле не округляет). Синтаксис ее: Int(число). Аналогична ей функция Fix(число), которая работает так же, как и Int, но при округлении отрицательного числа приближает его к числу большему или равному, в то время как Int — к меньшему или равному.
MyValue = Int((10000 * Rnd) + 1) ‘ Возвращает случайное число от 1 до 10000.
Далее уже задаем начальное (1) и конечное (10000) значение ProgressBar1.
ProgressBar1.Min = 1
ProgressBar1.Max = 10000
Теперь организуем цикл от единицы до полученного нами случайного числа.
В нем при каждом его выполнении значение ProgressBar1.Value изменяется, что отображается на изменении шкалы.
For x = 1 To MyValue
ProgressBar1.Value = x
Next x
End Sub
Вот и вся программка. Да, еще хочу сказать, что число 10 000 выбрано для того, чтобы ProgressBar работал достаточно медленно. Скачать исходник можно вверху страницы.
При загрузке файла средств управления общего назначения в панели инструментов появились и другие объекты ActiveX. Обратим наши взоры на средство Slider, которое располагается через один и ниже ProgressBar’а, думаю, найдешь.
Элемент ActiveX: Slider.
По сути своей этот элемент очень похож на объект «полоса прокрутки ScrollBar«, который мы разбирали в Главе 4. Главными отличиями его являются внешний вид: Slider представляет собой линейку с бегунком и отметками-маркерами (тиками), а также то, что его максимальное значение не ограничено, как у ScrollBar’а значением 32767. Элемент этот простой, я не буду повторять описание его свойств .Min, .Max, .Value и т.п. Если пропустил, посмотри выше на этой странице. Однако у Slider’а есть и другие свойства:
.LargeChange — величина, на которую изменится положение бегунка при щелчке мышью по слайдеру
.TickFrequency — определяет с какой частотой на слайдере будут располагаться маркеры (тики). Например, если у нас Sl >
Как работать со слайдером, мы разберем примере программки SliderPic (скачать ее можно вверху страницы). Практического применения ей я не вижу, но она иллюстрирует, как с помощью слайдера можно изменять объекты. В нашем случае мы с помощью двух слайдеров — горизонтального и вертикального будем менять, соответственно, ширину и высоту Picture для того, чтобы в нее влезла картинка. Сразу оговорюсь, что поскольку единица измерения размеров объектов в VB принята почему-то в твипах, я все в твипах и оставлю. Если тебе охота перевести в другие единицы, например, в пиксели,- пожалуйста (в Главе 6 мы использовали методы ScaleX и ScaleY для перевода в из одного измерения в другое).
Итак, создадим exe-проект, положим на него Picture1 любого размера, но желательно позиционировать его ближе к верхнему левому углу формы (а то куда ж мы его расширять будем), и два слайдера —Slider1 (горизонтальный) и Slider2 (вертикальный). Чтобы Slider2 стал горизонтальным, надо его свойство .Orientation в окне свойств установить в 1-ccOrientationVertical.
Теперь пишем код.
В процедуре загрузки формы привяжем начало каждого слайдера к положению Picture
Private Sub Form_Load()
Устанавливаем левую границу Slider1 вровень с левой границей Picture1
Также устанавливаем верхнюю границу Slider2 вровень с верхней границей Picture1
Как видишь, мы здесь используем свойства .Top и .Left, которые есть практически у всех объектов. Они показывают расстояние от края формы до границы объекта сверху (.Top) и снизу (.Left).
Поскольку бегунок слайдера в нулевой позиции отстоит от начала самого слайдера где-то на 150 твипов, я из значения положения картинки вычел это расстояние.
Далее загружаем картинку в Picture1. Прошу прощения, за ее пошлость, просто под руку попалась.
Picture1.Picture = LoadPicture(App.Path & «\Lopes.jpg»)
Затем устанавливаем свойства для каждого слайдера. Значения .Max слайдеров я взял от фонаря, исходя из того на сколько можно расширить картинку, чтобы она в экран влезала.
Sl > Sl > Sl > Sl > Sl >
Sl > Sl > Sl > Sl > Sl >
Для каждого слайдера создаем процедурку, где присваиваем значению ширины (или длины) Picture1 значение слайдера.
Private Sub Slider1_Click()
Picture1.W > End Sub
Private Sub Slider2_Click()
Picture1.Height = Slider2.Value
End Sub
Common controls (индикатор прогресса)
1. Перейдите в редактор VBA (ALT+F11) и выберите любую форму.
Затем, выполните один из двух вариантов :
2. В меню Сервис/Tools выберите команду Дополнительные элементы/ Additional Controls
2. Подведите курсор мышки к панели инструментов Панель инструментов и кликните правой кнопкой мышки. В появившемся контекстном меню выберите команду Дополнительные элементы /Additional Controls
Важно : вне зависимости от выбора Панель инструментов обязательно должна отображаться на экране, иначе Вы не сможете воспользоваться вышеупомянутой командой. Поэтому, если панель не видна, то в меню Вид/View выберите команду Панель элементов/Toolbox или воспользуйтесь одноимённой кнопкой с панели Стандарт/Standard
3. После этого, в появившемся списке найдите и выберите нужный элемент управления и подтвердите свой выбор нажатием кнопки OK.
4. Теперь, Вы можете кликнуть появившуюся кнопку и расположить дополнительный элемент управления в любом месте нужного диалогового окна.
Ответ :
Если некоторые, наиболее часто используемые элементы управления, отсутствуют на Вашем компьютере, то далее приведены две ссылки, с помощью которых можно скачать файлы mscomctl.ocx и mscomct2.ocx, а затем распаковать их в папку Windows\System\ если речь идёт о Win 98, Me или Windows\System32\ если установлена OC Win 2000, XP
P.S. Если со скачиваем возникли проблемы, то можно повторить попытку, используя следующую ссылку
Ответ :
Если Вас интересует альтернатива некоторым «стандартным» элементам управления, а также, дополнительные контролы, в т.ч. FolderTreeview , то их можно найти и скачать посетив страницу Common Controls Replacement Project
Ответ :
Для того, чтобы создать строку состояния можно воспользоваться любым из трёх нижеперечисленных вариантов :
Вариант I.
Создайте элемент управления Надпись — Label1 и разместите его внизу нужного диалогового окна, затем, используя свойства созданного элемента управления :
— удалите или измените текст, который отображается напротив поля Caption
— напротив поля SpecialEffect выберите 2 — fmSpecialEffectSunken
— при необходимости, скорректируйте высоту, ширину и месторасположение созданного элемента, используя свойства Height , Width , Left , Top
Теперь, для того, чтобы в строке состояния отображался нужный текст, достаточно воспользоваться свойством Caption :
Добавьте элемент управления Microsoft StatusBar Control, version . используя этот [FAQ475]
Теперь, Вы можете кликнуть появившуюся кнопку StatusBar и расположить строку состояния внизу нужного диалогового окна.
А после создания, Вы можете загрузить иконку, создать нужный текст, изменить шрифт, размер, и т.п. Для этого, достаточно всего лишь кликнуть мышкой небольшую серую кнопку в левой части поля (Специальный)/(Custom) и воспользоваться закладками Panels и Font , которые располагаются на диалоговом окне Свойства/Property Pages .
Совет : Обратите внимание на то, что элемент управления StatusBar имеет и другие свойства, которые также могут быть Вам полезны.
Для того, что программно изменить текст в элементе управления StatusBar, достаточно воспользоваться соответствующими свойствами :
‘если значение свойства Style = 0-sbrNormal (по умолчанию)
‘если значение свойства Style = 1-Simple
Создать строку состояния, а затем изменять текст этого окна, можно использовав функции WinAPI [FAQ374]
Ответ :
Если во время выполнения макроса, Вам необходимо наглядно показать процесс его выполнения, то для этого можно использовать ProgressBar. Пример создания и применения собственного прогресс бара можно найти в следующем [FAQ513]
Если же имитация, по каким-то причинам, нежелательна, то можно воспользоваться «стандартным» элементом управления, который является частью Microsoft Windows Common Controls. Для этого, сначала добавьте элемент управления Microsoft ProgressBar Control, version . воспользовавшись следующим [FAQ475]
А затем, используйте нижеприведённый вариант, только не забудьте закомментировать/удалить последнюю строку, если Вам не нужно , чтобы после окончания выполнения макроса, индикатор ProgressBar’а возвращался в исходное состояние.
Ответ :
Для того, чтобы создать свой собственный индикатор прогресса (ProgressBar), проделайте следующее :
1. Создайте элемент управления Надпись — Back, затем, используя свойства созданного элемента управления :
— удалите текст, который отображается напротив поля Caption
— установите нужную высоту, ширину и месторасположение созданного элемента, используя свойства Height , Width , Left , Top
— установите, используя поле BackColor , нужный фоновый цвет, например, белый
— напротив поля SpecialEffect выберите 2 — fmSpecialEffectSunken
2. Затем, создайте второй элемент управления Надпись — Progress
— установите значения его свойств Top , Left , Height равными соответствующим свойствам первого (Back) элемента, а значение свойства Width установите = 0
— удалите текст, который отображается напротив поля Caption
— используя поле BackColor , выберите нужный цвет прогресс бара, например, синий
— напротив поля SpecialEffect выберите 1 — fmSpecialEffectRaised
После чего, используйте следующую процедуру для отображения процесса индикации, естественно, указав своё количество итераций (iMax)
Ответ :
Если во время выполнения макроса, Вам необходимо использовать ProgressBar, но количество итераций(повторений) неизвестно и вычислить общее время выполнения программы, невозможно(или крайне затруднительно), то можно создать имитацию «вечного» прогресс-бара, например, с помощью анимационного .gif
Как, с помощью WebBrowser, отобразить на форме такие файлы, довольно подробно рассказано в следующем [FAQ675]
Если же Вы захотите избавиться от полосы прокрутки, рамки и т.д., то смотрите пример. Обратите внимание, что там также наличествуют два анимационных .gif файла, которые любезно предоставил их создатель Андрей Аганин
Ответ :
Для того, чтобы изменить количество «кирпичиков» у элемента управления Microsoft ProgressBar Control нужно уменьшить высоту контрола (свойство Height ), если необходимо увеличить их количество и, наоборот, увеличить высоту контрола, если количество делений нужно уменьшить.
Сначала добавьте элемент управления Microsoft Common Dialog Control, version . воспользовавшись следующим [FAQ475]
А для отображения стандартного диалогового окна, которое позволит Вам выбрать нужный цвет, используйте, например, следующий код и кнопку :
On Error GoTo ErrHandler
With Me.CommonDialog1
.CancelError = True
.ShowColor
iColor& = .Color
End With
‘Теперь, Вы можете использовать полученный цвет,
‘например, изменить цвет формы
Me.BackColor = iColor&: Exit Sub
ErrHandler:
If Err.Number = 32755 Then
MsgBox «Нужно было выбрать нужный цвет», vbCritical, «»
End If
End Sub
Ответ :
К сожалению, при использовании колёсика(средней кнопки) мышки прокрутки списка не происходит, однако, если оставить в покое стандартный ComboBox и воспользоваться элементом управления ImageComboBox, то добиться желаемого всё таки можно (перечень действий, позволяющих добавить этот контрол — Microsoft ImageComboBox Control, version . см. выше, а небольшой пример заполнения ImageCombo можно скачать здесь)
Ответ :
К сожалению, стандартный ComboBox не позволяет изменять цвет текста у отдельного элемента списка, однако, если создать имитацию разноцветного ComboBox, то добиться желаемого всё таки можно (пример можно скачать здесь)
Ответ :
Увы, но стандартный ListBox не позволяет изменять цвет заливки у отдельного элемента списка (строки), однако, если оставить его в покое и воспользоваться элементом управления TreeView, то добиться желаемого можно (перечень действий, позволяющих добавить этот контрол — Microsoft TreeView Control, version . см. выше, а несколько примеров, демонстрирующих заполнение TreeView, можно скачать здесь)
Однако, чтобы создать иллюзию использования именно ListBox необходимо ещё и изменить значения некоторых свойств TreeView :
Style = 0 — tvwTextOnly
FullRowSelect = True
Checkboxes = True (если необходимо наличие флажков)
Совет : Рекомендую обратить особое внимание на свойство Sorted , которое позволит Вам получить отсортированный по возрастанию список без дополнительных действий.
Ответ : Актуально для MS Excel XP (и старше)
Для того, чтобы на пользовательской форме, создать ListBox, который будет содержать имена всех листов(кроме модулей) текущей рабочей книги, причём заливка каждого элемента списка должна быть идентичной цвету ярлычка, нам придётся воспользоваться предыдущим советом, см. выше, и создать имитацию ListBox.
А для того, чтобы заполнить наш элемент управления, нам достаточно будет всего лишь воспользоваться следующим событием формы :
Ответ :
Увы, но стандартный ListBox, после перетаскивания файлов/папок из проводника на ListBox не позволяет получить имена этих файлов, однако, если воспользоваться элементом управления ListView, то добиться желаемого можно (перечень действий, позволяющих добавить этот контрол — Microsoft ListView Control, version . см. выше, а код, позволяющий создать иллюзию использования именно ListBox, а также заполнение ListView, смотрите ниже. Обратите внимание на то, что все действия связанные с созданием имитации ListBox, можно проделать и вручную, причём только один раз)
Если Вы читаете этот FAQ , то, по всей видимости, уже заметили, что ListView сортирует даты как текст и если Вас это не устраивает, что вполне естественно, то :
Если Вас не устраивает, что для перехода в режим редактирования необходимо сначала выделить нужный элемент списка, а затем и ещё и кликнуть мышкой, то можно ускорить сей процесс. Например, использовав метод StartLabelEdit .
Ответ :
К сожалению, стандартный TextBox не позвляет форматировать часть текста, однако, если воспользоваться элементом управления RichTextBox, то добиться желаемого всё таки можно (перечень действий, позволяющих добавить этот контрол — Microsoft Rich TextBox Control, version . см. выше), а пример, позволяющий непосредственно при вводе выделять жирным кириллицу или латиницу, см. ниже (только не забудьте выбрать одно из нижеопубликованных событий KeyPress, а для кириллицы и правильно указать версию OC)
Ответ :
Если Вы используете элемент управления Image, то возможно замечали, что данный контрол не имеет полос прокрутки, а значит, если размер загружаемого рисунка будет больше, чем размер Image, то Вы увидите только часть рисунка. В некоторых случаях достаточно установить значение свойства PictureSizeMode как 3-fmPictureSizeModeZoom , но если изменение масштаба рисунка недопустимо, и Вам просто необходима возможность «прокручивать» изображение, то в таком случае, можно пойти на маленькую хитрость, а именно :
1) Создайте элемент управления Рамка — Frame1 и разместите его там, где должен находиться Image, затем, используя свойства созданного элемента управления :
— удалите текст, который отображается напротив поля Caption
— напротив поля SpecialEffect выберите 2 — fmSpecialEffectBump (необязательно)
— при необходимости, скорректируйте высоту, ширину и месторасположение созданного элемента, используя свойства Height , Width , Left , Top
2) Создайте элемент управления Рисунок — Image1, и разместите его на Frame1 , после чего, напротив :
— свойств Left и Top введите 0 (или -1)
— поля AutoSize выберите True
— поля PictureAlignment выберите 0-fmPictureAlignmentTopLeft
3) Создайте два элемента управления Полоса прокрутки — ScrollBar1 (вертикальный) и ScrollBar2 (горизонтальный) и разместите их, относительно Frame1 , справа и внизу.
Теперь, при загрузке изображения, используйте код (событие UserForm_Initialize, разумеется, применяется только в качестве примера, равно как и указанный файл)
Вариант II.
Добавьте элемент управления Обозреватель веб-страниц (Microsoft) или Элемент средства просмотра Web Microsoft (Win95) используя этот [FAQ475]
Затем, кликните появившуюся кнопку WebBrowser, и расположите обозреватель в нужном месте диалогового окна.
Теперь, когда Вам понадобится загрузить нужный графический файл, используйте метод Navigate, т.е. :
Однако, у данного варианта есть и свои плюсы, например, WebBrowser позволяет отображать большое количество графических файлов, в т.ч. и .png которые, иногда, используются здесь как скриншоты.
Ответ :
Если Вы когда-нибудь загружали программно анимационный .gif , то, скорее всего, замечали, что стандартные контролы (в т.ч. и Image) не показывают долгожданной анимации и если такой расклад Вас не устраивает, то можно поискать в сети контролы (в т.ч. и бесплатные), которые это позволяют, или же использовать элемент управления Обозреватель веб-страниц (Microsoft) или Элемент средства просмотра Web Microsoft (Win95)
Подробный совет по добавлению дополнительных элементов управления, можно найти здесь [FAQ475] и если Вы им воспользуетесь, то когда Вам понадобится загрузить нужный графический файл, просто воспользуйтесь методом Navigate, т.е. :
Вариант I.
Ответ :
Если Вы используете WebBrowser для отображения картинки(графики), то, возможно, замечали, что картинка отображается в браузере не с крайнего левого верхнего угла, а с некоторым отступом. И если Вы хотите избавиться от этого отступа, то, используя событие UserForm_Activate, просто измените значения двух свойств :
Ответ :
Если возникнет необходимость «разместить» на UserForm содержимое указанной папки, причём с возможностью работы с папками/файлами, то для решения поставленной задачи, можно опять использовать элемент управления Обозреватель веб-страниц (Microsoft) или Элемент средства просмотра Web Microsoft (Win95)
Подробный совет по добавлению дополнительных элементов управления, можно найти здесь [FAQ475] и если Вы им воспользуетесь, то когда Вам понадобится загрузить папку, просто воспользуйтесь методом Navigate, указав путь к реально существующей папке, т.е. :
Ответ :
Возможно Вы замечали, что во время выполнения некоторых операций, к примеру, копирование/удаление файлов, папок можно наблюдать некоторые анимационные эффекты, такие как перемещающиеся из одной папки в другую бумаги, выбрасываемые в мусорную корзину скомканные листы и т.п. Если такие же анимационные ролики Вы хотите видеть и на своём нестандартном диалоговом окне, то, используя этот [FAQ475] добавьте элемент управления Microsoft Animation Control, version . , а затем, для загрузки avi файлов используйте метод Open, для их демонстрации метод Play, а для остановки метод Stop (небольшой пример, а также некоторые avi файлы, можно скачать здесь)
Если же необходимого элемента управления нет в списке доступных элементов управления, например, в случае отсутствия на компьютере файла MSComct2.ocx или Comct232.ocx, то осуществить задуманное можно с помощью функций WinAPI (более подробно)
Ответ : Актуально только для DialogSheet + ListBox
19 Progress Bar and Progress Indicator
In this chapter, you learn about the progress indicator and progress bar, the UI controls that visualize progress of any operations in your JavaFX applications.
The ProgressIndicator class and its direct subclass ProgressBar provide the capabilities to indicate that a particular task is processing and to detect how much of this work has been already done. While the ProgressBar class visualizes the progress as a completion bar, the ProgressIndicator class visualizes the progress in the form of a dynamically changing pie chart, as shown in Figure 19-1.
Figure 19-1 Progress Bar and Progress Indicator
Creating Progress Controls
Use the code fragment in Example 19-1 to insert the progress controls in your JavaFX application.
Example 19-1 Implementing the Progress Bar and Progress Indicator
You can also create the progress controls without parameters by using an empty constructor. In that case, you can assign the value by using the setProgress method.
Sometimes an application cannot determine the full completion time of a task. In that case, progress controls remain in indeterminate mode until the length of the task is determined. Figure 19-2 shows different states of the progress controls depending on their progress variable value.
Figure 19-2 Various States of Progress Controls
Example 19-2 shows the source code of the application shown in Figure 19-2.
Example 19-2 Enabling Different States of Progress Controls
A positive value of the progress variable between 0 and 1 indicates the percentage of progress. For example, 0.4 corresponds to 40%. A negative value for this variable indicates that the progress is in the indeterminate mode. Use the isIndeterminate method to check whether the progress control is in the indeterminate mode.
Indicating Progress in Your User Interface
Example 19-2 was initially simplified to render all the possible states of the progress controls. In real-world applications, the progress value can be obtained through the value of other UI elements.
Study the code in Example 19-3 to learn how set values for the progress bar and progress indicator based on the slider position.
Example 19-3 Receiving the Progress Value from a Slider
When you compile and run this application, it produces the window shown in Figure 19-3.
Figure 19-3 Indicating the Progress Set by a Slider
An ChangeListener object determines if the slider’s value is changed and computes the progress for the progress bar and progress indicator so that the values of the progress controls are in the range of 0.0 to 1.0.
Индикатор прогресса HTML5
В HTML5 появился элемент индикатора прогресса, который выводит состояние процесса выполнения определенных задач, например, таких как загрузка данных на сервер.
В данном уроке мы рассмотрим, как добавлять такой элемент в документ, как определять для него стили CSS и анимировать индикатор прогресса.
Основы
Индикатор прогресса добавляется с помощью элемента
. Значение индикатора определяется атрибутами value , min и max :
Так как базовая реализация использует стандартные формы, то визуальное представление будет зависеть от платформы реализации. Ниже приводится пример того, как выглядит индикатор прогресса в Windows и OSX.
Теперь определим стили для индикатора прогресса, чтобы он выглядел одинаково на любых платформах.
Стили для индикатора прогресса
В таблице стилей мы можем использовать селектор элемента для выбора элемента и добавления правил для элемента
. В ниже приведенном примере мы изменяем фоновый цвет, удаляем обводку и скругляем углы на радиус равный половине высоты элемента.
Однако, каждый браузер обрабатывает правила немного по своему.
В Firefox стили влияют на полоску индикатора, а на текущее значение не оказывают воздействия.
В Chrome и Safari стили не используются и применяются установки Webkit (в текущий момент времени).
Поэтому потребуется больше действий.
В Chrome и Safari элемент прогресса преобразуется следующим образом.
Таким образом для изменения полоски индикатора и текущего значения в браузере нужно добавить псевдо-классы:
Firefox также имеет специальный псевдо-класс ::-moz-progress-bar. В отличие от Chrome и Safari данный псевдо-класс ссылается на текущее значение:
В завершение представим все селекторы для определения стилей HTML5 индикатора прогресса.
Анимирование прогресса
Теперь рассмотрим, как анимировать индикатор прогресса. Обычно, полоска расширяется слева направо по мере выполнения задачи.
Идея заключается в том, что индикатор прогресса расширяется от 0 и останавливается в момент достижения максимального значения. Мы также будем выводить числовое значение прогресса. Ниже приводится структура HTML.
В данном примере мы используем jQuery для анимации индикатора прогресса. Поэтому добавляем jQuery в документ:
Затем мы добавляем скрипт, который выполняет расширение полоски прогресса. Сначала сохраняем элемент индикатора прогресса, текущее и максимальное значения, а также и частоту кадров:
Затем мы создаем переменную, которая хранит функцию анимации. В нашем примере она называется loading .
Внутри выше приведенной функции устанавливаем интервал прогресса. Будем увеличивать данное значение на 1 за один кадр — можно увеличивать значение на большую величину, чтобы ускорить ход индикатора.
А затем мы добавляем результат к полоске прогресса.
Мы также показываем значение рядом с индикатором прогресса:
Затем мы создаем новую функцию для выполнения анимации:
В данной точке анимация уже работает, но значение будет увеличиваться бесконечно. Поэтому нам надо создать условное выражение для остановки анимации в момент достижения максимального значения.
Сохраним выше приведенную функцию в переменной:
В переменной loading добавляем условное выражение:
Выше приведенный код после достижения максимального значения сбрасывает интервал, что останавливает анимацию.
Приведем полный код анимации индикатора прогресса:
Поддержка в браузерах
Элемент HTML5 для индикатора прогресса поддерживается в следующих браузерах: Firefox 16+, Chrome 8+, Safari 6+ и Opera 11+.
Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.hongkiat.com/blog/html5-progress-bar/
Перевел: Сергей Фастунов
Урок создан: 4 Марта 2013
Просмотров: 34851
Правила перепечатки
5 последних уроков рубрики «CSS»
Забавные эффекты для букв
Небольшой эффект с интерактивной анимацией букв.
Реализация забавных подсказок
Небольшой концепт забавных подсказок, которые реализованы на SVG и anime.js. Помимо особого стиля в примере реализована анимация и трансформация графических объектов.
Анимированные буквы
Эксперимент: анимированные SVG буквы на базе библиотеки anime.js.
Солнцезащитные очки от первого лица
Прикольный эксперимент веб страницы отображение которой осуществляется “от первого лица” через солнцезащитные очки.
Раскрывающаяся навигация
Экспериментальный скрипт раскрывающейся навигации.
Complex_Common — индикатор для MetaTrader 4
Автор: Семён Семёныч
Это импульсный индикатор или сигнальный. Он очень чувствительный и быстро реагирует на ценовые движения.
Статья про кластерные индикаторы.
Для определения сигнала необходимо наличие четко выраженного фрактала. Второй элемент – это наличие вспомогательного (опорного) пика. От фрактала через этот вспомогательный пик проводится сигнальная линия.
Модифицированная версия индикатора DayImplus 1.1.
Основана на пересечении средних. Автор системы — утверждает, что где-то 90% сделок идут в плюс. А учитывая ее систему выходов можно собирать немаленький профит во время тренда.
Благодаря использованию более совершенных алгоритмов сглаживания этот RSI имеет меньшее запаздывание и более гладкую форму кривой.
Индикатор прогресса
Элемент управления, визуально отображающий степень выполнения (прогресс) какого-то процесса (задачи). Анимация производится с помощью прямоугольника, вначале отображающегося пустым, и постепенно (по мере того, как процесс близится к завершению) закрашивающимся пропорционально тому, какой процент задачи выполнен к данному моменту времени. При необходимости в поле элемента управления можно также отображать численное значение процента выполненной задачи.
Чтобы показать, что выполняется задача неопределенной длительности, вы можете использовать нефиксированный режим строки прогресса. В этом режиме строка прогресса будет просто отображать анимацию того, что процесс выполняется. Как только вы сможете оценить длительность задачи и текущий прогресс ее выполнения, нужно будет обновить значение строки прогресса и переключить ее в Фиксированный режим.
Чтобы добавить индикатор прогресса
- Перетащите элемент Индикатор прогресса из палитры Элементы управления в то место графического редактора, где вы хотите его нарисовать.
Свойства
Имя – Имя индикатора прогресса. Имя используется для идентификации элемента и доступа к нему из кода.
Исключить – Если опция выбрана, то индикатор прогресса будет исключена из модели.
Отображается на верхнем агенте – Если опция выбрана, то индикатор прогресса будет виден на презентации типа агента, в который будет вложен данный агент.
Ориентация – Задает ориентацию индикатора прогресса ( Горизонтальная или Вертикальная ).
Отображать строку прогресса – Если опция выбрана, то в поле индикатора прогресса отображается текстовая строка. Обычно она показывает текущее значение прогресса выполнения задачи. Содержимое строки задается в поле справа от флажка. Здесь вы можете ввести выражение, возвращающее значение типа String — текст, который и будет отображаться в поле элемента управления. Вы можете использовать в выражении две локальные переменные: value (хранит значение текущего прогресса) и percent (хранит текущее значение процента выполненной задачи).
Пример строки: percent + » процент(ов) выполнен(о)»
Минимальное значение – Минимальное значение индикатора прогресса.
Максимальное значение – Максимальное значение индикатора прогресса.
Значение прогресса – Выражение, возвращающее значение типа double — значение прогресса выполнения задачи.
Простейший пример: если вы хотите отслеживать с помощью индикатора прогресса ход течения времени, напишите здесь time()
Фиксированный – Логическое выражение, определяющее, находится ли индикатор прогресса в фиксированном или нефиксированном режиме. В нефиксированном режиме элемент управления будет показывать с помощью анимации, что выполняется задача неопределенной длительности.
Код, который будет выполняться при заполнении индикатора.
Местоположение и размер
Уровень – Уровень, на котором расположен этот элемент.
X – X-координата верхнего левого угла индикатора прогресса.
Y – Y-координата верхнего левого угла индикатора прогресса.
Ширина – Ширина индикатора прогресса (в пикселах).
Высота – Высота индикатора прогресса (в пикселах).
Видимость – Элемент будет виден, если заданное здесь выражение будет истинно ( true ), в противном случае он отображаться не будет.
Количество – Количество экземпляров данного элемента управления. Если вы оставите это поле пустым, то будет создан только один такой элемент управления.
Отображать имя – Если опция выбрана, то имя индикатора прогресса будет отображаться в графическом редакторе.
Значок – Если опция выбрана, то индикатор прогресса будет считаться частью значка типа агентов.
Функции
Значение индикатора прогресса