Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2007, 08:19   #1
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию Индикатор

Всем доброго утра. Товарищи прогаммеры видел ли кто нибудь компонент индикатора (примерно как в сотовом телефоне индикатор уровня сигнала сети). Пишу прогу для управления GSM модемом хотелось бы этот индикатор сети покрасивее сделать, а то progressbar и gaude как то не очень.
SERG1980 вне форума Ответить с цитированием
Старый 28.09.2007, 08:50   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Компонентов таких не видел (т.е. чтоб прогресбар, но ступеньками был). В Raize Components (установочник 15 метров) есть прогресбар, но по красивше.
Можно и самому написать простенькую процедурку и выводить на канву хоть картинки.

Последний раз редактировалось zetrix; 29.09.2007 в 08:20.
zetrix вне форума Ответить с цитированием
Старый 28.09.2007, 08:53   #3
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

попробуй нарисовать несколько рисунков и в засисимости от уровня сигнала подгружай определенный рисунок в imege... думаю будет сматреться очень даже не плохо
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 28.09.2007, 21:54   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

1) Проще всего в ImageList загрузить красивые картинки с различным уровнем и выводить нужную.

2) Если тебе двухцветного на канве достаточно будет, могу дать готовый код, я в плеере громкость так сделал.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 28.09.2007 в 21:57.
mutabor вне форума Ответить с цитированием
Старый 29.09.2007, 06:39   #5
KORN
Банхаммер
Участник клуба
 
Аватар для KORN
 
Регистрация: 17.02.2007
Сообщений: 1,754
По умолчанию

скинь мне... моэжет я почти так жэ в сваем плеере сделаю
Перед тем как спросить ищи на форуме и в GOOGLE
KORN вне форума Ответить с цитированием
Старый 29.09.2007, 08:25   #6
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

mutabor буду признателен!. Только инет у меня на работе поэтому можно до понедельника. Заранее благодарю. Мой e-mail serg8681@yandex.ru

Последний раз редактировалось SERG1980; 29.09.2007 в 08:30.
SERG1980 вне форума Ответить с цитированием
Старый 29.09.2007, 21:49   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Выкладываю здесь так как еще есть желающие )

x,y - координаты нижнего левого угла
lev - уровень сигнала 0-100
aCanvas - канва на к-рую выводить
showlev - выводить значение в цифрах или нет, параметр не обязательный, по умолчанию не выводит

Вызывать по событию OnPaint. При изменении уровня сигнала вызывать не эту процедуру а Repaint, если уровень изменяется очень часто и появляется мерцание то свойство DoubleBuffered:=true; того компонента на к-ром рисуешь.
Код:
const
spaces: set of byte = [5,6,12,13,19,20,26,27,33,34,40,41,47,48,54,55,61,62];
forecolor = clBlue;
backcolor = clBtnShadow;

procedure DrawLevel(x,y: integer; lev: byte; aCanvas: TCanvas;
  showlev: boolean = false);
var
i,tlev: byte;
begin
with aCanvas do
  begin
  Pen.Color:=forecolor;
  if lev > 0 then
  tlev:=round(lev*0.7)-1
  else tlev:=0;
  for i:=0 to 67 do
    begin
    if i = tlev then Pen.Color:=backcolor;
    moveto(x+i,y);
    if not(i in spaces)then lineto(x+i,y-round(i*0.2));
    end;
  if showlev then
    begin
    Brush.Style:=bsClear;
    TextOut(x+72,y-11,IntToStr(lev)+'%');
    end;
  end;
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
USB индикатор Kn793 Компьютерное железо 31 21.03.2009 10:37
Индикатор громкости Air Компоненты Delphi 11 19.07.2008 19:13
"Зажечь" индикатор активнасти HDD Олвин Помощь студентам 3 25.04.2008 08:40