[Lazarus-es] Error SIGSEGV en TDBGridencolumna conpropiedad .ButtonStyle:=cbsEllipsis

Ismael L. Donis Garcia ismael en citricos.co.cu
Sab Ago 3 15:32:48 CEST 2013


1 Millón de Gracias (La verdad que me has ayudado más de 1 millón)

Funcionó perfecto, solo le tuve que hacer un pequeño cambio al código que me mandaste. Y otro cambio más porque yo programé una tecla caliente que simula el click del botón sin haber dado click en el, por lo que dicha tecla caliente dispara el botón sin estar este visible.

Al final quedó de la siguiente forma:

...
type

  TCompositeCellEditorAccess=class(TCompositeCellEditor);

...

var
  Editor: TWinControl;
...
Editor := DbGrid1.EditorByStyle(cbsAuto);
if Editor is TCompositeCellEditor then begin
  if (TCompositeCellEditorAccess(Editor).Visible) then //esto fue lo que agregé por la tecla caliente
    TCompositeCellEditorAccess(Editor).GetActiveControl.SetFocus;
end;



Jesus creo que sería bueno que le implementaras una propiedad al TCompositeCellEditor para que el botón no tomara el focus. Ósea una propiedad como: TCustomBoton.TabStop que si pones como valor False siempre deje el foco en el TCustomEdit y si le asignas True que si deje el focu en el boton. Que crees?. Podrás implementar dicha propiedad?

Perdona que con tu ayuda te asigne trabajo, pero creo que esto lo que trae consigo es un sistema mejor por lo que repercute en el bien de todos.

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: Friday, August 02, 2013 4:55 PM
  Subject: Re: [Lazarus-es] Error SIGSEGV en TDBGridencolumna conpropiedad .ButtonStyle:=cbsEllipsis


  Alfred seguramente se refería a usar la misma técnica de la "clase de acceso" usada en el evento OnSelectEditor, solo que hay una diferencia, en el evento OnSelectEditor, la instancia del editor viene dada en el parámetro "Editor", pero como el evento OnEditButtonClick es solo una notificación y no proporciona información a cerca del editor  (el parámetro Sender del OnEditButtonClick es el grid especifico que originó la notificación) lo que se necesita es un medio alternativo de obtener el editor.  Justo para eso existe la función EditorByStyle, y su uso sería algo así como:



  procedure DBGrid1EditButtonClick(Sender: TObject);

  var

    Editor: TWinControl;

  ....

    Editor := DbGrid1.EditorByStyle(cbsAuto); 
    if Editor is TCompositeCellEditor then begin
      ...

      TCompositeCellEditor(Editor).GetActiveControl.SetFocus;

      ...

    end;



  Para poder usar cbsAuto el unit Grids debe estar en el uses. cbsAuto en un DbGrid nos regresa el editor seleccionado para el campo (o columna) actualmente seleccionado.


  No lo probé pero debería funcionar :)


  Saludos.


  Jesus Reyes A.



------------------------------------------------------------------------------
  De: Ismael L. Donis Garcia <ismael en citricos.co.cu>
  Para: Spanish version of Lazarus List <lazarus-es en lists.lazarus.freepascal.org> 
  Enviado: Jueves, 1 de agosto, 2013 16:01:53
  Asunto: Re: [Lazarus-es] Error SIGSEGV en TDBGrid encolumna conpropiedad .ButtonStyle:=cbsEllipsis


  Me podrías explicar esto un poquito más (yo nunca he trabajado con delphi, 
  es más nunca lo he instalado), vengo de Visual Estudio, o mejor dicho quiero 
  venir. Y por tal motivo este entorno y modo de hacer las me resulta bastante 
  estraño.

  Yo en el formulario lo que tengo es el evento:
  procedure DBGrid1EditButtonClick(Sender: TObject);

  Si en ese evento pongo:
  TCustomEdit.Focused := True;

  Me da el error:
  ufcini.pas(760,23) Error: Only class class methods, class properties and 
  class variables can be accessed in class methods
  ufcini.pas(760,23) Error: Only class methods, class properties and class 
  variables can be referred with class references




------------------------------------------------------------------------------


  _______________________________________________
  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/20130803/e5f7eec6/attachment-0002.html>


More information about the Lazarus-es mailing list