Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus-es / 2010-11

rxdbgrid, duda

6 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Paola Bruccoleri

Hola a todos..
para los que usan este componente...
estoy mirando el demo que viene del rxdbgrid, donde lo usa con un rxmemorydata. Veo que ahi funciona perfectamente el que haciendo clic en el titulo de la columna, ordene por dicha columna, en orden asc o desc seg�n se sigan haciendo siguientes clics. adem�s, aparece la flechita correspondiente indicando la ordenaci�n.
Todo muy lindo, pero a mi no me funciona cuando uso el rxdbgrid con un tztable. En el ejemplo no veo d�nde est� el c�digo que indica la ordenaci�n.. no se si es una caracter�stica del rxmemorydata o qu�. Tampoco me aparece esa flechita en forma autom�tica. Lo unico que tengo seteado es la propiedad TitleButton en true..
Si en el evento ontitleclick del grid pongo esto:
showmessage(inttostr(Column.index)
me devuelve mal el indice de la columna elegida..

otro bug o algo que no se c�mo hacer?
agradezco cq ayuda
chauuuuuuuu

Reply by email

José Mejuto
to Paola Bruccoleri

Hello Paola,

Thursday, November 18, 2010, 1:35:34 PM, you wrote:

PB> Si en el evento ontitleclick del grid pongo esto: PB> showmessage(inttostr(Column.index)
PB> me devuelve mal el indice de la columna elegida.. PB> otro bug o algo que no se c�mo hacer?

Yo lo he hecho hace tiempo con esto:

procedure TfrmReport_Oficio.DBGrid1TitleClick(Column: TColumn);
begin
  qryHashAlias.IndexFieldNames:=Column.Title.Caption;
  qryHashAlias.Refresh;
end;

Pero claro, s�lo ordenaba de menor a mayor y sin informaci�n visual, pero el column era el correcto :-?

Best regards, Jos�

Reply by email

Paola Bruccoleri
to José Mejuto

El 18/11/2010 11:48 a.m., Jos� Mejuto escribi�:

Show quoted text 20 lines
Hello Paola, Thursday, November 18, 2010, 1:35:34 PM, you wrote: PB> Si en el evento ontitleclick del grid pongo esto: PB> showmessage(inttostr(Column.index) PB> me devuelve mal el indice de la columna elegida.. PB> otro bug o algo que no se c�mo hacer? Yo lo he hecho hace tiempo con esto: procedure TfrmReport_Oficio.DBGrid1TitleClick(Column: TColumn); begin qryHashAlias.IndexFieldNames:=Column.Title.Caption; qryHashAlias.Refresh; end; Pero claro, s�lo ordenaba de menor a mayor y sin informaci�n visual, pero el column era el correcto :-?

Hola Jos�.. con el dbgrid com�n no hay problema.. el problema es con el de las rx.
no me sirve el column.title.caption xq mi caption no es el nombre del campo. us� esto: dbForm03.IndexFieldNames:=Column.Field.FieldName; pero tmbi�n funciona mal, igual que el column.index, que me devuelve el valor de la columna anterior; a la primera no accedo y a la �ltima tampoco.

lo que no entiendo es como funciona bien en el demo.. no logro entender qu� diferente tiene ese grid del m�o.
muchas gracias
chauuuuuu

Reply by email

Walter Mesón
to José Mejuto: PB> Si en el evento ontitleclick del grid pongo esto: PB>…

Hola Jos�...

Show quoted text 12 lines
Yo lo he hecho hace tiempo con esto: procedure TfrmReport_Oficio.DBGrid1TitleClick(Column: TColumn); begin qryHashAlias.IndexFieldNames:=Column.Title.Caption; qryHashAlias.Refresh; end; Pero claro, s�lo ordenaba de menor a mayor y sin informaci�n visual, pero el column era el correcto :-?

El tema es que el Column del parametro que te pasa est� corrida una columna hacia la derecha, o sea que el valor que obten�s es es de la columna siguiente al que clikeaste.
En las RX para Delphi me cans� de usarlo sin este problema...

Gracias.- Saludos. * Walter *

Reply by email

José Mejuto
to Paola Bruccoleri: El 18/11/2010 11:48 a.m., Jos� Mejuto escribi�: Hola Jos�.. con el dbgrid com�n…

Hello Paola,

you wrote
> Pero claro, s�lo ordenaba de menor a mayor y sin informaci�n visual, > pero el column era el correcto :-? >

PB> Hola Jos�.. con el dbgrid com�n no hay problema.. el problema es con el PB> de las rx.
PB> no me sirve el column.title.caption xq mi caption no es el nombre del campo. PB> us� esto: dbForm03.IndexFieldNames:=Column.Field.FieldName; PB> pero tmbi�n funciona mal, igual que el column.index, que me devuelve el PB> valor de la columna anterior; a la primera no accedo y a la �ltima tampoco. PB> lo que no entiendo es como funciona bien en el demo.. no logro entender PB> qu� diferente tiene ese grid del m�o.

Uy!, no me di cuenta de que era el rx :-/ Quiz� sea base 0, o base 1, vamos diferente. En el onclick ese haz un messagebox por ejemplo que te saque las columnas usando la coleccion columns a ver si ves el "orden".

Best regards, Jos�

Reply by email

José Antonio Cuello
to Walter Mesón: Hola Jos�... El tema es que el Column del parametro que te pasa est� corrida una…

Hola, recuerdo haber tenido problemas con el TColumn.Index, y era por las columnas visibles o no visibles o por la colocaci�n de las mismas (si se hace un drag and drop y se cambian de lugar). En Delphi el TColumn.Index era el indice de creaci�n y exist�a el TColumn.VisibleIndex que era el orden de colocaci�n en el grid. Por todo eso en Lazarus termin� cambiando la manera de plantearlo.

  ChangeOrderBy( Column.Field );

ChangeOrderBy es un procedimiento que rehace la clausula ORDER BY del sql de selecci�n. Para el tema de la ordenaci�n ASC o DESC simplemente guardo el Field.FieldNo (numero de campo dentro del sql que no me varia) en myGrid.Tag y si coincide es DESC y si no ASC:

  vSql := UpperCase(FQuery.Sql.Text);
  if Pos(' ORDER BY ', vSql)  0 then
    vSql := copy( vSql, 1, (Pos(' ORDER BY ', vSql) - 1) );
  vSql := vSql + ' ORDER BY ' + Field.FieldName;
  if myGrid.Tag = Field.FieldNo then
  begin
    vSql := vSql + ' DESC';
    myGrid.Tag = 0;
  end
  else
  begin
    vSql := vSql + ' ASC';
    myGrid.Tag = Field.FieldNo;
  end;
  FQuery.Sql.Text := vSql;

Solo queda refrescar el dataset. Espero que les sirva o aclare algo. Un saludo.

________________________________________________________________________

ARTEX TRADING S.A.
Jos� Antonio Cuello Principal

El jue, 18-11-2010 a las 12:34 -0300, Walter Mes�n escribi�:

Show quoted text 18 lines
Hola Jos�... > > Yo lo he hecho hace tiempo con esto: > > procedure TfrmReport_Oficio.DBGrid1TitleClick(Column: TColumn); > begin > qryHashAlias.IndexFieldNames:=Column.Title.Caption; > qryHashAlias.Refresh; > end; > > Pero claro, s�lo ordenaba de menor a mayor y sin informaci�n visual, > pero el column era el correcto :-? > El tema es que el Column del parametro que te pasa est� corrida una columna hacia la derecha, o sea que el valor que obten�s es es de la columna siguiente al que clikeaste. En las RX para Delphi me cans� de usarlo sin este problema...

------------ pr�xima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus-es/attachments/20101119/b460ac3f/attachment.html>

Reply by email