PDA

Ver la Versión Completa : Como hacer un SelectAll en un DBGrid


sitrico
11-02-2004, 23:20:37
Buenas.

Tengo un dbGrid asociado a una base de datos (que novedad :rolleyes: ) que asigna valores por defecto a los nuevos registros (en el evento DBGridColEnter). Lo que necesito saber es como hacer un SelectAll en la celda activa para permitir al usuario cambiar el valor por defecto sin tener que seleccionarlo primero.

Gracias de antemano.

jachguate
12-02-2004, 03:53:33
No puedo responderte la pregunta original... pero te recomiendo que uses el evento OnNewRecord para asignar valores por defecto en los campos de un dataset. Tiene varias ventajas, entre las que está que el componente no tomará estos datos como modificados... con la consiguiente ventaja para el usuario, al evitarle preguntas como:

Este registro ha sido modificado... seguro que desea cancelar su inserción?

Hasta luego.

;)

sitrico
17-02-2004, 18:29:41
Ya intenté usar el evento OnNewRecord pero tengo el problema que el valor sólo lo puedo calcular el valor usando algunos datos del nuevo registro y en el OnNewrecord todavía no están disponibles.

En cuanto al SelectAll encontré (revizando el código de la unidad DBGrid) que existe una clase llamada TInplaceEdit y que a su vez define varias propiedades y métodos.

TInplaceEdit = class(TCustomMaskEdit)

function CreateEditor: TInplaceEdit; virtual;

property InplaceEditor: TInplaceEdit read FInplaceEdit;


(También hay herederos especializados TInplaceEditorList, TDBGridInplaceEditor)

Pero estas propiedades son "Protected"

El problema lo solucionaría su pudiera de alguna manera aceder al metodo
TCustomDBGrid.InplaceEditor.SelectAll (Que si existe). En alguna parte leí que existe una manera para accesar los métodos y propiedades protegidas de un componente pero no recuerdo donde.

Nota: Preferiría usar el objeto DBGrid Original de Delphi 6.

Gracias

__cadetill
17-02-2004, 19:18:01
Tendrías que hacer tu propio TDbGrid heredando de TDbGrid por ejemplo


TMiGrid = class(TDBGrid)
private
FInplaceEdit: TInplaceEdit;
public
property InplaceEditor: TInplaceEdit read FInplaceEdit;
end;

jachguate
18-02-2004, 15:12:27
Si el valor de un campo depende de otros... también podes calcularlo en el OnChange de estos.

Hasta luego.

;)

sitrico
18-02-2004, 18:52:41
Gracias a todos, al final me tuve que conformar con usar el evento OnNewRecord y calcular todos los valores con los valores por defecto, así cuando el usuario entra a la celda correspondiente, automáticamente se efectua el SelectAll.