Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Inmovilizar Bandas (https://www.clubdelphi.com/foros/showthread.php?t=58043)

eduarcol 06-07-2008 14:53:14

Inmovilizar Bandas
 
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

Cita:

Empezado por eduarcol
Debido que este componente no tiene el evento onPaint lo cambie por el TControlBar

Amigo, eso es un kludge :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:

Código Delphi [-]
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

Cita:

Empezado por roman (Mensaje 307136)
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,

Cita:

Empezado por rastafarey
11-06-2008
rastafarey

resp

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

Cita:

Empezado por eduarcol
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:


La franja horaria es GMT +2. Ahora son las 01:52:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi