Existe un componente Edit con las esquinas redondas?
#1
Posted 07 August 2010 - 04:04 AM
asi como este de la imagen:
si existe en que suite se encuentra o como hago ese efecto, me gustaria que fuera como el de la imgen
#2
Posted 07 August 2010 - 10:00 AM
Visita webs de controles...
Nada te impide hacerlo tu mismo. En caso de que te animes comienza estudiando el mensaje NM_CUSTOMDRAW, que es enviado por los controles tipo "common controls" para notificar a su parent cuando van a realizar procesos de dibujado de si mismos.
Saludos.
#3
Posted 07 August 2010 - 11:28 AM
No existe en el entorno de delphi o Builer, a no ser que terceros lo tengan hecho...
Visita webs de controles...
Nada te impide hacerlo tu mismo. En caso de que te animes comienza estudiando el mensaje NM_CUSTOMDRAW, que es enviado por los controles tipo "common controls" para notificar a su parent cuando van a realizar procesos de dibujado de si mismos.
Saludos.
Pues e estado buscando, lamentablemente no conozco todos los distribuidores de componentes para delphi que existen, e probado con los tms, los bergsoft, los alpha, en estos momento estoy bajando unos demos de los suipack.
Si no tengo otra opcion vere el tema de hacerlos yo mismo, por lo pronto estoy buscando informes, quizas alguien los vio o uso en algun momento.
#4
Posted 07 August 2010 - 12:24 PM
procedure Redondear(Control: TWinControl) ; var R: TRect; Rgn: HRGN; begin with Control do begin R := ClientRect; rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ; Perform(EM_GETRECT, 0, lParam(@r)) ; InflateRect(r, - 4, - 4) ; Perform(EM_SETRECTNP, 0, lParam(@r)) ; SetWindowRgn(Handle, rgn, True) ; Invalidate; end; end;
Lo pones en el código aparte luego para usarlo solo tienes que ir a el evento create del form
y escribir Redondear(edit1); eso es un ejemplo osea Redondear y entre parentesis el componente que quieras .
si no lo quieres muy redondeado bájale el inflate a menos -2 o el que prefieras y consideres más adecuado.
#5
Posted 07 August 2010 - 01:12 PM
Claro que puedes hacerlo por código por ejemplo:
delphi
procedure Redondear(Control: TWinControl) ; var R: TRect; Rgn: HRGN; begin with Control do begin R := ClientRect; rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20) ; Perform(EM_GETRECT, 0, lParam(@r)) ; InflateRect(r, - 4, - 4) ; Perform(EM_SETRECTNP, 0, lParam(@r)) ; SetWindowRgn(Handle, rgn, True) ; Invalidate; end; end;
Lo pones en el código aparte luego para usarlo solo tienes que ir a el evento create del form
y escribir Redondear(edit1); eso es un ejemplo osea Redondear y entre parentesis el componente que quieras .
si no lo quieres muy redondeado bájale el inflate a menos -2 o el que prefieras y consideres más adecuado.
probe el codigo que pusiste alli pero el efecto no es el deseado, no se ve muy bien que digamos.
#6
Posted 07 August 2010 - 02:03 PM
procedure Redondear(Control: TWinControl) ; var R: TRect; Rgn: HRGN; begin with Control do begin R := ClientRect; rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 4, 4) ; Perform(EM_GETRECT, 0, lParam(@r)) ; InflateRect(r, -4, -4) ; Perform(EM_SETRECTNP, 0, lParam(@r)) ; SetWindowRgn(Handle, rgn, True) ; Invalidate;
Intenta con esto cambie algo a ver que pasa y me dices como se ve el efecto. utiliza el mismo procedimiento con el edit en create ya sabes que hacer.
#7
Posted 07 August 2010 - 02:44 PM
Me parece muy interesante el codigo que facilito Master23 ya que trabaja con los wincontrols.Como este de la imagen, incluso que se pueda colorear el bordo al foco
asi como este de la imagen:
si existe en que suite se encuentra o como hago ese efecto, me gustaria que fuera como el de la imgen
Simplemente se usa lo que se tiene a mano.
Esto se puede hacer como un componente sin problemas.
Este ejemplo se puede hacer de mil maneras, con un poco de imaginación.
Saludos
PD: Si os gusta os paso el código
PD2: Presionen el mundo.
PD3: El color del borde cambia de color cada 3 segundos
Attached Files
#8
Posted 07 August 2010 - 08:37 PM
Salud OS
#9
Posted 07 August 2010 - 08:59 PM
Como que no, si lo que hago es solo copiar y pegar....Anda tu, eso de novato ya no me lo creo para nada
Salud OS
Saludos
#10
Posted 07 August 2010 - 09:00 PM
Hola
Como que no, si lo que hago es solo copiar y pegar....
Anda tu, eso de novato ya no me lo creo para nada
Salud OS
Saludos
Ajá, pero hasta en eso hay que saber, un novato no lo hace tan bien como ustéd señor
Y ya suelta el código
Salud OS
#11
Posted 08 August 2010 - 12:04 PM
Lo de: ''Si os gusta os paso el código'' era para ver que decían
El codigo lo facilito Master23 yo solo le di algunos toques de novato.
Saludos
#12
Posted 08 August 2010 - 12:37 PM
Jugando con esto:
Este tambien es sencillo y queda bien.
Saludos
Attached Files
#13
Posted 09 August 2010 - 08:38 AM
#14
Posted 09 August 2010 - 08:51 AM
Saludox "novato" !
#15
Posted 09 August 2010 - 10:07 AM
El codigo es el que puso el amigo Master23.
Lo único que hay que hacer es:
Modificar el largo de la curva.
No modificar el edit.
Colocar un Panel
Colocar un Shape.
Orden:
Panel, Shape, Edit.
El Shape ya tiene la opcion de redondear las esquinas.
El panel viene de wincontrol.
El edit se le quita el marco y se pone encima del shape.
Osea: Una chapuza pero se ve bien jejejeje.
Saludos
PD: Aqui os dejo los dos códigos para que os riáis un rato de este novato.
Attached Files
#16
Posted 09 August 2010 - 05:44 PM
Me falto ponerles que si lo e intentado hacer de esa forma, incluso se pueden hacer "minicomponentes" usando frames segun el tipo de entrada para el edit, o la version db usando dbedit en lugar de edits, como sea seguira buscando.Hola
El codigo es el que puso el amigo Master23.
Lo único que hay que hacer es:
Modificar el largo de la curva.
No modificar el edit.
Colocar un Panel
Colocar un Shape.
Orden:
Panel, Shape, Edit.
El Shape ya tiene la opcion de redondear las esquinas.
El panel viene de wincontrol.
El edit se le quita el marco y se pone encima del shape.
Osea: Una chapuza pero se ve bien jejejeje.
Saludos
PD: Aqui os dejo los dos códigos para que os riáis un rato de este novato.
#17
Posted 09 August 2010 - 06:12 PM
Saludox !
#18
Posted 09 August 2010 - 06:29 PM
Es que lo que hicimos con el codigo de Master23 no es un componente, es una chapuza.Mmmmm.... y porqué no es como lo esperebas amigo romfrost13 ?... Qué le hace falta al componente ? o mejor dicho, cómo deseas que se comporte ?... a lo mejor nos surgen más ideas ("nos" ? )
Saludox !
Lo que esta buscando romfrost13 es un componente.
Saludos
#19
Posted 10 August 2010 - 12:42 AM
Exacto, lo que hace el codigo del amigo Master23 es dibujar un circulo en los lados del edit, por mas que le busque siempre parecia que las lineas se cortaban, porque las cubre el circulo que se dibuja sobre ellas, al parecer no existe un componente que se vea como yo quiero por lo que te tendre que ponerme manos a la obra sobre uno que se vea asi, pero sera un poco mas adelante porque tengo unos cuantos pendientes que terminar...Hola
Es que lo que hicimos con el codigo de Master23 no es un componente, es una chapuza.
Mmmmm.... y porqué no es como lo esperebas amigo romfrost13 ?... Qué le hace falta al componente ? o mejor dicho, cómo deseas que se comporte ?... a lo mejor nos surgen más ideas ("nos" ? )
Saludox !
Lo que esta buscando romfrost13 es un componente.
Saludos
#20
Posted 10 August 2010 - 01:42 AM
procedure TForm1.Redondear(Control: TWinControl;Round:integer;ColorLine,ColorFondo:Tcolor;WidthLine,Style,Border,space,STyleF:integer) ; //----------------------------------------------------------------------------- // Bueno basandome en el código de master23 y en el código de about // página [url]http://delphi.about.com/od/adptips2006/qt/focusrectangle.htm[/url] // más unas modificaciones mias queda bastante cuioso // No llega al nivel del Novato JEFE "Caral" Espero te guste el cargo :) // // Ejemplo Redondear(Edit1,2,clGreen,clyellow,2,1,3,3,1); // //----------------------------------------------------------------------------- var R: TRect; Rgn: HRGN; focusRectangle:tshape; //unit ExtCtrls begin focusRectangle := TShape.Create(self) ; case border of 1: focusRectangle.Shape := stRectangle; 2: focusRectangle.Shape := stSquare; //queda mal 3: focusRectangle.Shape := stRoundRect; 4: focusRectangle.Shape := stRoundSquare; //queda mal 5: focusRectangle.Shape := stEllipse; //queda mal 6: focusRectangle.Shape := stCircle; //queda mal end; focusRectangle.Visible := false; case Style of 1: focusRectangle.Pen.Style := psSolid; 2: focusRectangle.Pen.Style := psDash; 3: focusRectangle.Pen.Style := psDot; 4: focusRectangle.Pen.Style := psDashDot; 5: focusRectangle.Pen.Style := psDashDotDot; 6: focusRectangle.Pen.Style := psClear; 7: focusRectangle.Pen.Style := psInsideFrame; 8: focusRectangle.Pen.Style := psUserStyle; 9: focusRectangle.Pen.Style := psAlternate; end; focusRectangle.Brush.Color:=ColorFondo; case STyleF of 1:focusRectangle.Brush.Style := bsSolid; 2:focusRectangle.Brush.Style := bsClear; 3:focusRectangle.Brush.Style := bsHorizontal; 4:focusRectangle.Brush.Style := bsVertical; 5:focusRectangle.Brush.Style := bsFDiagonal; 6:focusRectangle.Brush.Style := bsCross; 7:focusRectangle.Brush.Style := bsDiagCross; end; FocusRectangle.Pen.Color := ColorLine; focusRectangle.Pen.Width := WidthLine; with Control do begin R := ClientRect; rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, Round, Round) ; Perform(EM_GETRECT, 0, lParam(@r)) ; InflateRect(r, - 4, - 4) ; Perform(EM_SETRECTNP, 0, lParam(@r)) ; SetWindowRgn(Handle, rgn, True) ; with focusRectangle do begin Parent := Control.Parent; Top := Control.Top - (space+WidthLine); Height := Control.Height + ((space*2)+WidthLine); Left := Control.Left - (space+WidthLine); Width := Control.Width + ((Space*2)+WidthLine); Visible := true; end; Invalidate; end; end;