[Lazarus-es] Error SIGSEGV en TDBGrid en columna conpropiedad .ButtonStyle:=cbsEllipsis
Ismael L. Donis Garcia
ismael en citricos.co.cu
Mie Jul 24 21:55:00 CEST 2013
Jesus 1 millón de gracias, funcionó perfecto.
Me sería de utilidad que comunicases a la lista cuando agregues dicha propiedad al control para modificar el código y de esta forma no tener que hacer refencia a dicha clase.
Saludos Cordiales
========
| ISMAEL |
========
Only for the small landowners and Cubans companies
Website: www.sisconge.byethost15.com
www.sisconge.hol.es
----- Original Message -----
From: Jesus Reyes
To: Spanish version of Lazarus List
Sent: Wednesday, July 24, 2013 1:38 PM
Subject: Re: [Lazarus-es] Error SIGSEGV en TDBGrid en columna conpropiedad .ButtonStyle:=cbsEllipsis
Hola Ismael,
Primeramente, perdón por no contestar siguiendo el flujo del mensaje como acostumbro y por el formato, no se si yahoo usa el mismo formato de mensaje al contestar o es algún ajuste que aún no he hallado. Esta nueva interfaz de yahoo mail lo hace cada vez mas difícil, en fin.
En el caso de "cbsEllipsis" el editor esta implementado usando un control llamado TCompositeCellEditor, así que en el evento OnSelectEditor no estas recibiendo un TCustomEdit sino un TCompositeCellEditor.
TCompositeCellEditor es solo un contenedor para un par de controles, un TCustomEdit y un Boton, el TCustomEdit esta designado como el "ActiveControl". Desafortunadamente TCompositeCellEditor no tiene ninguna propiedad publica para acceder al "ActiveControl" así que debemos hacer uso de los llamadas clases de acceso o por otro nombre "crack classes" de la siguiente forma:
...
type
TCompositeCellEditorAccess=class(TCompositeCellEditor);
...
var
ed: TWinControl;
...
if Editor is TCompositeCellEditor then begin
ed := TCompositeCellEditorAccess(Editor).GetActiveControl;
// ahora si
TCustomEdit(Ed).CharCase := ecUpperCase;
end;
En versiones posteriores agregaré a TCompositeCellEditor una propiedad "ActiveControl" para acceder directamente a ella y evitar el uso de clases de acceso.
Saludos.
Jesus Reyes A.
------------------------------------------------------------------------------
De: Ismael L. Donis Garcia <ismael en citricos.co.cu>
Para: Spanish Lazarus <lazarus-es en lists.lazarus.freepascal.org>
Enviado: Martes, 23 de julio, 2013 10:35:47
Asunto: [Lazarus-es] Error SIGSEGV en TDBGrid en columna con propiedad .ButtonStyle:=cbsEllipsis
Cuando le pongo a una columna de un TDGrid la propiedad .ButtonStyle:=cbsEllipsis e intento hacer lo siguiente:
procedure Tform1.TDGrid1SelectEditor(Sender: TObject; Column: TColumn;
var Editor: TWinControl);
begin
if (Editor <> nil) then begin
if (Column.Index = 5) then
TCustomEdit(Editor).CharCase := ecUppercase;
end;
end;
En la línea: TCustomEdit(Editor).CharCase := ecUppercase; me salta el error "External SIGSEGV"
Si elimino la propiedad .ButtonStyle:=cbsEllipsis de dicha columna todo funciona normal.
Ahora mi problema es que necesito tener las 2 cosas, ósea necesito ponerle el boton a esa columna y además necesito implementar el procedimiento en el evento SelectEditor del TDGrid.
Ahora mi pregunta:
Como prodría resolver este problema para que no me salga dicho error?
Desde ya Gracias
========
| ISMAEL |
========
Website: www.sisconge.byethost15.com
www.sisconge.hol.es
PD: Toda ayuda será bien venida.
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------------------------------------------------------------------------
_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20130724/de2b14aa/attachment-0002.html>
More information about the Lazarus-es
mailing list