Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ProgressBar, "нестандартное" отображение прогресса 
:(
    Опции темы
Illusion Dolphin
  Дата 7.4.2005, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Начиная с виньХР появились в системе забавные ProgressBar'ы, которые не отображают реального "прогресса", а лишь отображают, что что-нибудь работает... такой же появляется при загрузки виндыХР (бегает пару чёрточек слева вправо, а потом обратно возвращаются в начало). Такой же прогресс отображается если в ХР выбрать изображение, в меню нажать на Print (Печать), и вэтом диалоге при выборе шаблона печати - тоже такого стиля есть прогресс. (надеюсь, что теперь ясно что я имел в виду smile )

И сам вопрос: как такой сделать на делфи?


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
ДЫМ
Дата 9.4.2005, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



Если я тебя правильно понял, то посмотри мой компонент LSVGauge. Там все это есть. RunningNext(RepeatAmount:Integer) сдвигает "бегущую полосу" вправо/вверх на шаг RunningStep RepeatAmount раз(подробнее читай в Readme и смотри демку). А сам вызов можешь засунуть в отдельный поток или через таймер.

Вот ссылочка
http://www.lsvhost.narod.ru/LSVGauge.zip
PM MAIL WWW   Вверх
Illusion Dolphin
Дата 9.4.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



Компонентик прикольный smile
Но выовдить через текстуры прогресс я умею, мне интересно как с WinAPI выдавить из винды прогрессс этим отображением, т.к. в случае если у юзера будет стоять не обычная тема, а совершено левая с другой гаммой, то тогда потенциальный прогресс через WinAPI будет нормально смотреться, а вот LSVGauge будет сильно выделяться, чего бы не хотелось.
Вотпрос открыт: как сделать сабж.? (ручками не прикольно, это слишком просто и не гибко)


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 10.4.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Судя по MSDN, надо юзать это:
Код

const
  PBS_MARQUEE            = $08;
  PBM_SETMARQUEE         = WM_USER+10;

...

  with ProgressBar1 do
  begin
    SetWindowLong (Handle, GWL_STYLE, (GetWindowLong (Handle, GWL_STYLE) or PBS_MARQUEE));
    Perform(PBM_SETMARQUEE, 1, 50);
  end;
(вместо 50 поставь время перемещения кубиков)
Цитата(MSDN)
Use this message when you do not know the amount of progress toward completion but wish to indicate that progress is being made.


Добавлено @ 15:38
PS: чтобы это работало, нужно включить в прогу XP-манифест


--------------------
С уважением, г-н Посол.
PM   Вверх
ДЫМ
Дата 11.4.2005, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 6.1.2004

Репутация: 8
Всего: 8



Держи готовый компонент

Код

unit MarqueeProgressBar;

interface

uses
  SysUtils, Windows, Classes, Controls, ComCtrls, CommCtrl, Graphics, Messages;

type
  TMarqueeProgressBar = class(TProgressBar)
  private
    FActive: Boolean;
    FAnimationSpeed: Integer;
    FBarColor: TColor;
    procedure SetActive(const Value: Boolean);
    procedure SetAnimationSpeed(const Value: Integer);
    procedure UpdateProgressBar;
    procedure SetBarColor(const Value: TColor);
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Active: Boolean read FActive write SetActive;
    property AnimationSpeed: Integer read FAnimationSpeed write SetAnimationSpeed;
    property BarColor: TColor read FBarColor write SetBarColor;
  end;

const
  PBS_MARQUEE = $08;
  PBM_SETMARQUEE = WM_USER + 10;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TMarqueeProgressBar]);
end;

constructor TMarqueeProgressBar.Create(AOwner: TComponent);
begin
  inherited;
  FAnimationSpeed := 60;
  FBarColor := clNavy;
end;

procedure TMarqueeProgressBar.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style := Params.Style or PBS_MARQUEE;
end;

procedure TMarqueeProgressBar.SetActive(const Value: Boolean);
begin
  FActive := Value;
  UpdateProgressBar;
end;

procedure TMarqueeProgressBar.SetAnimationSpeed(const Value: Integer);
begin
  FAnimationSpeed := Value;
  UpdateProgressBar;
end;

procedure TMarqueeProgressBar.SetBarColor(const Value: TColor);
begin
  FBarColor := Value;
  SendMessage(Self.Handle, PBM_SETBARCOLOR, 0, FBarColor);
  Invalidate;
end;

procedure TMarqueeProgressBar.UpdateProgressBar;
begin
  if FActive then
    SendMessage(Self.Handle, PBM_SETMARQUEE, 1, FAnimationSpeed)
  else
    SendMessage(Self.Handle, PBM_SETMARQUEE, 0, 0);
end;

end.



PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.