PDA

Ver la Versión Completa : Evitar Proceso StringGrid1SelectCell


miguel_fr
26-06-2004, 07:01:33
Buenas les planteo este nuevo problemilla, resulta que al redimencionar un StringGrid con RowCount, luego de asignarle el nuevo valor, salta al proceso SelectCell y yo no quiero que esto suceda, porque sino se me es imposible controlar que no realize el codigo que alli se encuentra.
PD: me podrian explicar en que parte de la ayuda de delphi indica que se va a seguir con este proceso.

roman
26-06-2004, 07:34:19
PD: me podrian explicar en que parte de la ayuda de delphi indica que se va a seguir con este proceso.

Pues en la parte correspondiente al evento OnSelectCell:


OnSelectCell event (TCustomDrawGrid)

Occurs before a cell in the grid is selected.


Si, por ejemplo, la celda seleccionada actualmente está en el renglón 5 y reduces los renglones a 3 entonces la selección forzosamente cambia y de ahí que se genere el evento.

Puedes inhabilitar temporalmente el evento:



StringGrid1.OnSelectCell := nil;
StringGrid1.RowCount := nuevo valor;
StringGrid1.OnSelectCell := StringGrid1SelectCell;


// Saludos

miguel_fr
26-06-2004, 07:59:26
Muchas gracias por tu ayuda roman, la verdad es que nunca avia entendido algo de esto
StringGrid1.OnSelectCellMe podrias explicar un poco mas que es lo que hacescon la linea siguiente por favorStringGrid1.OnSelectCell := StringGrid1SelectCell;

roman
26-06-2004, 08:14:34
¿Se descompuso tu barra espaciadora? :D

Los eventos en Delphi son propiedades de los objetos. Así por ejemplo, un TEdit tiene las propiedades OnChange, OnExit, etc. al igual que propiedades "normales" como Color, Font, etc.

La diferencia es que los valores de estas propiedades son funciones o procedimientos.

Cuando implementas un evento dando doble click sobre él en el inspector de objetos, Delphi automáticamente asigna el procedimiento a la propiedad:

StringGrid1SelectCell -> StringGrid1.OnSelectCell

Si no hay ningún evento asociado quiere decir que la propiedad tiene el valor nil.

Así, la asignación

StringGrid1.OnSelectCell := nil;

desasigna el evento y

StringGrid1.OnSelectCell := StringGrid1SelectCell;

vuelve a asignarlo.

// Saludos