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
Earlier message 74 lines
----- 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
------------------------------------------------------------------------------