PDA

Ver la Versión Completa : Inmovilizar Bandas


eduarcol
06-07-2008, 14:53:14
Hola a todos, logre hacer funcionar una rutina de degradado encontrada en el club, las pantallas tienen un tPanel donde coloco los botones. Debido que este componente no tiene el evento onPaint lo cambie por el TControlBar. Todo bien pero los botones se agregan en bandas que permiten ser movidos.

Mi duda es como puedo hacer para inmovilizar estas bandas?? alguien ha logrado hacerlo?

roman
06-07-2008, 20:16:08
Debido que este componente no tiene el evento onPaint lo cambie por el TControlBar

Amigo, eso es un kludge (http://www.clubdelphi.com/foros/showpost.php?p=298553&postcount=3) :D

En lugar de cambiar el panel por un ControlBar, podrías redefinir el método Paint del panel o bien insertarle un PaintBox. Aquí un ejemplito:


unit Unit1;

interface

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

type
TForm1 = class(TForm)
Panel1: TPanel;
PaintBox1: TPaintBox;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
procedure PaintBox1Paint(Sender: TObject);
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

type
TTriVertex = record
X, Y: LongInt;
Red: Word;
Green: Word;
Blue: Word;
Alpha: Word;
end;

function GradientFill(
DC: HDC; var Vertex: TTriVertex; NumVertex: ULONG; Mesh: Pointer; NumMesh,
Mode: ULONG): BOOL; stdcall; external msimg32;

procedure GradientRect(DC: HDC; R: TRect; Color1, Color2: TColor);
var
Vertices: array[0..1] of TTriVertex;
Rect: TGradientRect;
Color: Integer;

begin
Color := ColorToRgb(Color1);
Vertices[0].X := R.Left;
Vertices[0].Y := R.Top;
Vertices[0].Red := $100*GetRValue(Color);
Vertices[0].Green := $100*GetGValue(Color);
Vertices[0].Blue := $100*GetBValue(Color);
Vertices[0].Alpha := 0;

Color := ColorToRgb(Color2);
Vertices[1].X := R.Right;
Vertices[1].Y := R.Bottom;
Vertices[1].Red := $100*GetRValue(Color);
Vertices[1].Green := $100*GetGValue(Color);
Vertices[1].Blue := $100*GetBValue(Color);
Vertices[1].Alpha := 0;

Rect.UpperLeft := 0;
Rect.LowerRight := 1;

GradientFill(DC, Vertices[0], 2, @Rect, 1, GRADIENT_FILL_RECT_H);
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
Paintbox1.Canvas.Brush.Color := clNavy;
GradientRect(Paintbox1.Canvas.Handle, Paintbox1.ClientRect, clWhite, clNavy);
end;

end.


// Saludos

eduarcol
07-07-2008, 00:12:04
Gracias, voy a aplicarlo a ver que tal...

roman
11-07-2008, 01:40:01
Ya. ¿Y qué tal? :)

// Saludos

eduarcol
11-07-2008, 02:19:21
no lo he probdo, tengo problemas al querer imprimir en el canvas de la impresora. Espero tener tiempo esta semana para probar a ver que tal

Gracias por el interes

eduarcol
12-08-2008, 18:00:04
aun no lo he podido probar, pero tan pronto pueda pongo los resultados

roman
12-08-2008, 18:25:15
Tú tranquilo eh? Yo aquí espero a que el camello entre en el ojo de la aguja :D

// Saludos

egostar
12-08-2008, 18:46:12
Tú tranquilo eh? Yo aquí espero a que el camello entre en el ojo de la aguja :D

// Saludos

No pues si tienes razón,


11-06-2008
rastafarey

resp

Y no seri amejor asi.
select avg(costonuevo) from historicocostos where codigoproducto = new.codigo into New.CostoPromedio;
...
Bueno digo.



Hace 42 Minutos
eduarcol
Registrado

lo acabo de probar y funciona perfectamente...


:D:D:D

Salud OS

eduarcol
12-08-2008, 18:55:32
es que cada 5 minutos salen nuevas prioridades, a este ritmo nunca terminare:confused: