[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