PDA

Ver la Versión Completa : cambiar color a progressbar


Caroso
06-09-2013, 20:48:14
hola muchachos perdonen la ignorancia pero quería saber si alguien me podría decir como aplicar esta función en delphi para cambiar el color de la progressbar del típico verde a otro color.. por ejemplo rojo...

PostMessage(ProgressBar1.Handle, $0409, 0, clRed);

muchas gracias... saludos

Casimiro Notevi
06-09-2013, 20:58:18
http://www.clubdelphi.com/foros/showthread.php?t=43713

Caroso
06-09-2013, 21:01:30
hola Casimiro Notevi... gracias por tu respuesta...

de ese mismo enlace fue que obtuve la función esa... lo que intento saber es como aplicarla a un progressbar... el cual se ejecuta en windows 7...

muchas gracias...

radenf
06-09-2013, 23:09:57
Estimado Caroso:

Yo utilizo siempre el componente gratuito TQProgressBar en Delphi 2007, que incluye esa opción y muchas más.
Lo puedes descargar desde la página del autor http://mapage.noos.fr/qnno/pages/delphi_en.htm
Saludos

ecfisa
06-09-2013, 23:50:36
hola Casimiro Notevi... gracias por tu respuesta...

de ese mismo enlace fue que obtuve la función esa... lo que intento saber es como aplicarla a un progressbar... el cual se ejecuta en windows 7...
Hola Caroso.

Creo que lo mas reusable es hacerte un procedimiento:

procedure ChangeProgressBarColor(PB: TProgressBar; const Color, BackgroundColor: TColor);
const
PBM_SETBARCOLOR = WM_USER + 9;
begin
PB.Brush.Color := BackgroundColor;
PB.Perform(PBM_SETBARCOLOR, 0, Color);
end;


Ejemplo de uso:

procedure TForm1.Button1Click(Sender: TObject);
begin
ChangeProgressBarColor(ProgressBar1, clLime, clMoneyGreen);
...


Saludos. :)

Caroso
07-09-2013, 00:20:22
hola muchachos muchas gracias por sus respuestas... las voy a aplicar y les comento como me fue...

Saludos... :)

nlsgarcia
07-09-2013, 04:11:45
Caroso,


...cambiar el color de la progressbar del típico verde a otro color...


Revisa este código:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;

begin

// Inicializa el ProgressBar
ProgressBar1.Position := 0;
ProgressBar1.Min := 1;
ProgressBar1.Max := 100000;

// Establece el color del ProgressBar a Green durante su ejecución
SendMessage(ProgressBar1.Handle, $0409, 0, clGreen);

// Llena el ProgressBar
for i := ProgressBar1.Min to ProgressBar1.Max do
begin
// Avanza el ProgressBar una unidad
ProgressBar1.StepBy(1);
end;

// Establece el color del ProgressBar a Navy al final de su ejecución
PostMessage(ProgressBar1.Handle, $0409, 0, clNavy);

end;

end.

El código anterior configura el color del componente TProgressBar por medio de las APIs SendMessage y PostMessage.

Espero sea útil :)

Nelson.

Caroso
07-09-2013, 04:50:25
gracias muchachos por sus respuestas... los codigos que me facilitaron funcionan todos de maravilla en delphi 7... cambia bien el color de la progressbar...

pero queria saber si alguien sabe porque no funciona para la progressbar de delphi 2010?¿?... la de delphi 2010 es la misma del sistema operativo windows 7...

esa por ejemplo:
http://blogs.msdn.com/blogfiles/wpdblog/WindowsLiveWriter/Windows7DeviceImplementationGuidelinesfo_ED18/ProgressBar_PVImport_2.png

y yo queria que quede algo similar a esto:

http://i.stack.imgur.com/CUbLS.pngv

desde ya muchas gracias..

PD:\ los codigos facilitados por ustedes funcionan de 10 en windows 7 con delphi 7... pero yo queria aplicar esos codigos en windows 7 pero con delphi 2010...

Saludos :)

nlsgarcia
07-09-2013, 05:35:14
Caroso,


...los códigos que me facilitaron funcionan todos de maravilla en Delphi 7...¿porque no funciona para la ProgressBar de Delphi 2010?...yo queria aplicar esos códigos en Windows 7 pero con Delphi 2010...


El código sugerido en el Msg #7, funciona correctamente en Delphi 7 y Delphi 2010 bajo Windows 7 Professional x32.

El código sugerido en el Msg #5, funciona correctamente en Delphi 7 bajo Windows 7 Professional x32. En Delphi 2010 con Windows 7 Professional x32 solo requiere una ligera adaptación relacionada al Background del ProgressBar:

procedure ChangeProgressBarColor(PB: TProgressBar; const Color, BackgroundColor: TColor);
const
PBM_SETBARCOLOR = WM_USER + 9;
begin
PB.BackgroundColor := BackgroundColor;
PB.Perform(PBM_SETBARCOLOR, 0, Color);
end;

Espero sea útil :)

Nelson.

nlsgarcia
08-09-2013, 09:24:12
Caroso,


...cambiar el color de la progressbar del típico verde a otro color...en Windows 7 pero con Delphi 2010...

Continuación del Msg #9:

Revisa este código:

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;

begin

ProgressBar1.Position := 0;
ProgressBar1.Min := 1;
ProgressBar1.Max := 10000;
ProgressBar1.Smooth := True;
ProgressBar1.BarColor := clNavy;
ProgressBar1.BackgroundColor := clWhite;

for i:= ProgressBar1.Min to ProgressBar1.Max do
ProgressBar1.StepBy(1);

end;

El código anterior permite cambiar el color de Foreground y Background de un componente TProgressBar en Delphi 2010 bajo Windows 7 Professional x32 si la opción Project -> Options -> Application -> Enable Runtime Themes esta Disabled, lo cual aplica de forma análoga para el código sugerido en los Msgs #7 y #9.

Revisa este link:

Disabling Themes in the IDE and in Your Application : http://docwiki.embarcadero.com/RADStudio/XE3/en/Disabling_Themes_in_the_IDE_and_in_Your_Application

Espero sea útil :)

Nelson.

nlsgarcia
09-09-2013, 00:59:50
Caroso,


...y yo queria que quede algo similar a esto...en Windows 7 pero con Delphi 2010...

Continuación del Msg #10:

Revisa este código:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Buttons, ExtCtrls;

type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
ProgressBar1: TProgressBar;
RadioGroup1: TRadioGroup;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
i : Integer;

begin

case RadioGroup1.ItemIndex of
0 : SendMessage(ProgressBar1.Handle, 1040, 2, 0); // ProgressBar Red
1 : SendMessage(ProgressBar1.Handle, 1040, 3, 0); // ProgressBar Yellow
2 : SendMessage(ProgressBar1.Handle, 1040, 1, 0); // ProgressBar Green
end;

ProgressBar1.Style := pbstNormal;
ProgressBar1.Position := 0;
ProgressBar1.Min := 1;
ProgressBar1.Max := 10000;

for i:= ProgressBar1.Min to ProgressBar1.Max do
ProgressBar1.StepBy(1);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RadioGroup1.ItemIndex := 0;
end;

end.

El código anterior permite cambiar el color de Foreground de un componente TProgressBar en Delphi 2010 bajo Windows 7 Professional x32 si la opción Project -> Options -> Application -> Enable Runtime Themes esta Enabled, como se muestra en la siguiente imagen:

http://imageshack.us/a/img821/5238/2k6f.jpg

Espero sea útil :)

Nelson.

Caroso
10-09-2013, 02:20:46
muchisimas gracias por tu tiempo y dedicacion con las respuestas nlsgarcia... :)

me sirvio mucho la ultima...

Saludos cordiales y gracias a todos :)