Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 12
ElMug Va por buen camino
Interpretar como usar esto:

Hola amigos,

El KDBGrid tiene esta facilidad:

procedure DefaultEditorCreate(ACol, ARow: Integer; var AEditor: TWinControl); override;

y solicito sugerencias/ayuda en cuanto a interpretar su uso, pensando que tal vez alguien haya visto un uso similar.

Creo que es para llamar al editor default del sistema, y editar datos en el, mas no he logrado interpretar como mandar los parametros.

website de KDBGrid:
http://www.tkweb.eu/en/delphicomp

Toda sugerencia o explicacion es bienvenida, para probarla.

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 14-08-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Sin tener ni idea del componente y sin haberlo visto nunca, diría que ese procedimiento puede servir para crear un componente de edición personalizado en una celda del Grid.

Código Delphi [-]
procedure DefaultEditorCreate(ACol, ARow: Integer; var AEditor: TWinControl); override;

Si tienes el código fuente del componente revisa dónde se llama este procedimiento y cómo se usa.

Podrías probar a llamarlo con una referencia de fila y columna y pasando como el parámetro AEditor, un control edit que ya exista en el form.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 14-08-2012
CSIE CSIE is offline
Miembro
 
Registrado: feb 2008
Ubicación: Universo paralelo
Posts: 69
Poder: 17
CSIE Va por buen camino
Ejemplo de uso:

Código Delphi [-]
procedure TFieldFrm.GridFieldEditorCreate(Sender: TObject; ACol, ARow: Integer;
  var AEditor: TWinControl);
begin
  if ACol=1 then
    case ARow of
    2, 3, 4, 6, 12, 18, 21, 25: AEditor := TCheckBox.Create(nil);
    1, 27:
      begin
        AEditor := TMemo.Create(nil);
        TMemo(AEditor).ScrollBars:= ssVertical;
      end;
    7, 8, 9, 19, 26: begin
        AEditor:= TComboBox.Create(nil);
        if (ARow <> 9) and (ARow <> 26) then TComboBox(AEditor).Style := csDropDownList;
       end;
    10, 13, 14, 15:
      begin
        AEditor:= TSpinEdit.Create(nil);
        TSpinEdit(AEditor).AutoSize := false;
        TSpinEdit(AEditor).OnChange := OnSpinEditChange;
      end;
    else
      AEditor := TEdit.Create(nil);
    end;
end;
Responder Con Cita
  #4  
Antiguo 15-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 12
ElMug Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Sin tener ni idea del componente y sin haberlo visto nunca, diría que ese procedimiento puede servir para crear un componente de edición personalizado en una celda del Grid.

Código Delphi [-]procedure DefaultEditorCreate(ACol, ARow: Integer; var AEditor: TWinControl); override;


Si tienes el código fuente del componente revisa dónde se llama este procedimiento y cómo se usa.

Podrías probar a llamarlo con una referencia de fila y columna y pasando como el parámetro AEditor, un control edit que ya exista en el form.
Esto me parece logico.

Si, ya he revisado todo lo que se puede, pero no logro aun poner un TEDit que sea TwinControl en la forma.

Se puede poner uno asi al diseñar la forma?

Trate con codigo, y compila. Mas no se ve nada en la forma. Luego, creo que debe de haber un "handle", mas no me es muy claro lo que he leido. El caso es que el KDBGrid le pase el texto de la celda actual al tal memo (automaticamente, o por medio de un boton?); pienso que seria automaticamente, mas no capto como relacionar esa funcion.

Aun sigo investigando.

Gracias Neftali.
Responder Con Cita
  #5  
Antiguo 15-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 12
ElMug Va por buen camino
Cita:
Empezado por CSIE Ver Mensaje
Ejemplo de uso:
Puse el codigo mostrado en el evento "OnEditorCreate" (Object Inspector) y en una sola linea me marca error, la excluyo, y ya compila:
// TSpinEdit(AEditor).OnChange := OnSpinEditChange;

Pero aun no estoy claro en esto:

1. Que es lo que activaria este procedimiento, pues creo que el simple ponerla "OnEditorCreate" del Object Inspector, nada aun la activa. Aparte no se si esta bien poner el procedure alli.

2. Que es lo que necesito hacer para que el KDBGrid la active automaticamente?

Gracias, CSIE.
Responder Con Cita
  #6  
Antiguo 16-08-2012
CSIE CSIE is offline
Miembro
 
Registrado: feb 2008
Ubicación: Universo paralelo
Posts: 69
Poder: 17
CSIE Va por buen camino
Hola,

En este procedimiento lo que determinas es el tipo de control que TKDBGrid va ha utilizar para editar los datos. Si te fijas en el demo verás:


Código Delphi [-]
procedure TMainForm.DBGridEditorCreate(Sender: TObject; ACol, ARow: Integer;
  var AEditor: TWinControl);
begin
  // you have still full control about the inplace editor but
  // here we just use the default handling
  // (if you delete this event the same is used in TKDBGridCell)
  DBGrid.DefaultEditorCreate(ACol, ARow, AEditor);
  // use default handling for other inplace editor events
end;

Lo que hace aqui es usar el procedimiento por defecto de TKDBGrid, donde asigna el TWinControl a utilizar.


Código Delphi [-]
procedure TKCustomDBGrid.DefaultEditorCreate(ACol, ARow: Integer; var AEditor: TWinControl);
begin
  // create custom editors according to table column type
  if Cols[ACol] is TKDBGridCol then
    case TKDBGridCol(Cols[ACol]).DataType of
      ftString, ftWideString, ftInteger, ftSmallInt, ftWord, ftLargeInt, ftFloat, ftCurrency, ftBcd:
      begin
        AEditor := TEdit.Create(nil);
      end;
      ftMemo
    {$IF DEFINED(FPC) OR DEFINED(COMPILER10_UP)}
      , ftWideMemo
    {$IFEND}
        :
      begin
        AEditor := TMemo.Create(nil);
      end;
      ftDate, ftTime, ftDateTime:
      begin
        AEditor := {$IFDEF FPC}TDateEdit{$ELSE}TDateTimePicker{$ENDIF}.Create(nil);
      end;
      ftBoolean:
      begin
        AEditor := TCheckBox.Create(nil);
      end;
    else
      AEditor := nil;
    end
  else
    AEditor := nil;
end;

Pero utilizando la misma técnica del procedimiento anterior, tu puedes personalizar los controles a utilizar. Por ejemplo si te fijas, cuando el DataType es integer, o string utiliza un TEdit estándard:

Código Delphi [-]
case TKDBGridCol(Cols[ACol]).DataType of
      ftString, ftWideString, ftInteger, ftSmallInt, ftWord, ftLargeInt, ftFloat, ftCurrency, ftBcd:
      begin
        AEditor := TEdit.Create(nil);
      end;

Pero tu podrías mejorarlo usando controles específicos para datos numéricos o de texto o memos.
Responder Con Cita
  #7  
Antiguo 16-08-2012
ElMug ElMug is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 163
Poder: 12
ElMug Va por buen camino
Hola CSIE,

Mucho te agradezco tu valiosa contribucion. Me va a tomar, creo, algo de tiempo revisar esto, pero no dejare de hacerlo.

Es algo bastante importante para mi.

Ya logre usar el KDBGid y terminar mi aplicacion maestra, pero usando un DBMemo.

Me gusto mucho el KDBGrid, peor aun me falta bastante para aprovecharla mas.

De nuevo, gracias!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como interpretar WM_KEYDOWN casacham OOP 3 14-04-2009 09:32:00
Interpretar achivos dwg (CAD) Val Gráficos 1 16-01-2008 06:56:14
como interpretar un error FGarcia Varios 4 03-01-2008 01:13:09
Interpretar SQL juanpe Firebird e Interbase 4 11-07-2007 10:07:58
Interpretar ficheros XSD kes Conexión con bases de datos 0 20-01-2005 12:16:37


La franja horaria es GMT +2. Ahora son las 16:19:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi