Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2014
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
Haciendo ventanas con cualquier forma..

Si señor... basta de ventanas rectangulares, aqui les traigo un truquito muy sencillo pero que puede solucionarles alguna situación a la hora de hacer cosas estéticamente raras pero lindas.. se trata de hacer un Form de cualquier forma.. si .. asi es .. no leyeron mal.. de cualquier forma, el límite es su imaginación..
Para este truco vamos a utilizar algunas propiedades que traen los forms y que generalmente no se le da demaciada importancia, estamos hablando de la prpiedad BorderStyle, Color,TransparentColor y TransparentColorValue.
Generalmete los forms tiene un color fijo en casi todas las aplicaciones dependiendo del tema que usemos en windows, nosotros vamos a colocar el color Fucsia como nuetro color de ventana y de esta manera todo lo que sea Fucsia será transparente..

entonces :

BorderStyle = bsNone ----> para que no muestre borde alguno.
Color = clFuchsia ----> color de fondo del Form.
TransparentColor = True ----> Activamos la transparencia
TransparentColorValue = clFuchsia -----> Especificamos que color se tomará como transparente


esto se coloca directamente desde el "Object Inspector" sin necesidad de escribir ni una sola línea de código..

luego agregamos un TImage con una imagen cualquiera para darle la forma que deseamos a nuestro form donde todo lo que querramos que sea transparente debe ser de color fucsia..

en este punto ya logramos lo que deseábamos.. un form de cualquier forma.. pero debemos agregar un mensaje para poder moverla porque ya no tenemos el borde superior que hacia este trabajo...

vamos al código
Código Delphi [-]
unit UForma;

interface

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

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Este procedimiento es para mover la ventana desde cualquier lugar
// que le hagamos Click.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
  begin
    //if Y < 30 then  // habilitamos solo los primeros 30 pixeles superiores para
    begin           // simular la barra superior de un form normal
      ReleaseCapture;
      SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
    end;
  end;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

end.
como ven es realmente sencillo...

lo único que deberán tener en cuenta es el alisado del borde en la imagen, no pude estar alisado sino se verán pequeños puntos fuccias..

si tienen que retocar alguna imagen para pintar el exterior de color fucsia con algún soft tipo Photoshop, deben tener en cuenta que los valores del fucsia en RGB deben ser : RED = 255, GREEN = 0 y BLUE = 255.

adjunto un ejemplo listo para compilar.

espero que les guste.. comenten cualquier inconveniente o duda..

saludos..
Archivos Adjuntos
Tipo de Archivo: rar Ventana con forma.rar (102,1 KB, 125 visitas)

Última edición por Casimiro Notevi fecha: 13-04-2014 a las 10:36:57.
Responder Con Cita
  #2  
Antiguo 13-04-2014
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
Fe de errata :

hay un error en el código mostrado con respecto al evento OnMouseDown.. debe ser el evento del TImage y no el del Form como está puesto alli..

o sea en vez de "FormMouseDown" debería ser "Image1MouseDown"..

Mil disculpas por el error.

Saludos.
Responder Con Cita
  #3  
Antiguo 13-04-2014
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Está muy chulo, porque, sólo cambiando unas cuantas propiedades del formulario conseguimos el efecto deseado.

Gracias por compartirlo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 13-04-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #5  
Antiguo 13-04-2014
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.233
Poder: 20
ElKurgan Va camino a la fama
Thumbs up

Muy buen aporte, amigo
Responder Con Cita
  #6  
Antiguo 13-04-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
FENIXadr,

Excelente

Nelson.
Responder Con Cita
  #7  
Antiguo 13-04-2014
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Podria mejor si se usa un componente PNG contransparencia para poder alisar los bordes digo yo.
Responder Con Cita
  #8  
Antiguo 13-04-2014
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
Cita:
Podria mejor si se usa un componente PNG contransparencia para poder alisar los bordes digo yo.

Hola MAXIUM..

No he probado lo que propones.. pero no creo que funcione porque el problema no es la imagen sino el método de transparencia.. se toma un color específico.. y si el color no es exactamente igual.. no se hace transparente.. por eso hice incapié en el suavisado del borde de la imagen y en que el color fucsia fuese R=255, G=0, B=255, si esto no es así el fucsia deja de ser transparente..

En el caso del ejemplo, a la imagen con Bart Simpson la tuve que retocar en PhotoShop pero cuando rrellené el exterior con el color fucsia usando la herramienta del bote de pinturta, le puse la tolerancia en 0 y desactivé el suavisado de relleno, de otra manera quedan los bordes suavisados y se ven todos los tonos de fucsia que no sean R=255, G=0, B=255..

de todos modos si alguien logra suavisar los bordes.. bienvenido será..

Saludos..
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA .NET 5 05-07-2007 20:51:31
Como Pasar Variables de Forma a Forma con delphi.net ASP ASAPLTDA Internet 2 02-07-2007 16:26:41
Que estoy haciendo Mal esimon SQL 4 04-07-2006 21:55:25
Ventanas,Ventanas Mdi=Dolor de cabeza ? IVAND Varios 7 08-05-2006 17:27:24
Como pasar parametros de una forma hija a otra forma hija luisreg OOP 3 17-09-2003 18:18:50


La franja horaria es GMT +2. Ahora son las 13:44:23.


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