Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Problema con IndexFieldNames in firemonkey (FMX) (https://www.clubdelphi.com/foros/showthread.php?t=95511)

balger 29-12-2021 13:55:48

Problema con IndexFieldNames in firemonkey (FMX)
 
Hola a todos. se me presenta el problema trabajando con D 10.3.3

El tema ocurre solamente en FMX. Trabajando con VCL trabaja bien.

Tengo un dataset (de qualquier tipo) conectado a un grid (de cualquier tipo), haciendo click en el titulo de una columna esta se ordena por el campo correspondiente.

En VCL
Código Delphi [-]
procedure TForm2.DBGrid1TitleClick(Column: TColumn);
begin
  qrySec.IndexFieldNames := Column.FieldName;
end;

En FMX
Código Delphi [-]
procedure TManFarmaQry.StringGrid1HeaderClick(Column: TColumn);
begin
     
case Column.Index of
          0:
            if mtblMedica.IndexFieldNames = 'Field1' then
              mtblMedica.IndexFieldNames := 'Field1' + ':D'
            else
              mtblMedica.IndexFieldNames := 'Field1';
    
          1:
            if mtblMedica.IndexFieldNames = 'Field2' then
              mtblMedica.IndexFieldNames := 'Field2' + ':D'
            else
              mtblMedica.IndexFieldNames := 'Field2';
          2:
            if mtblMedica.IndexFieldNames = 'Field3' then
              mtblMedica.IndexFieldNames := 'Field3' + ':D'
            else
              mtblMedica.IndexFieldNames := 'Field3';
        end;
end;

En el caso de FMX, se observa un reacomodamiento de los registros que no se corresponde con nada, todo queda desordenado.

Estimo que dado que en ambos casos se usa Firedac el problema no radica ahí. Entonces existe un problema de sincronización en el bind.
Espero comentarios.

Felices Fiestas para todos.

Pd: la carita sonrriente se deve interpretar como ": D" sin el espacio

balger 29-12-2021 21:55:33

A quien esté buscando la solución, la dejé en el siguiente link.

https://stackoverflow.com/questions/...22078#70522078

Felices fiestas.

Casimiro Notevi 30-12-2021 11:29:32

Pues mejor copiarlo aqui ;)

Código Delphi [-]
procedure TManFarmaQry.StringGrid1HeaderClick(Column: TColumn);
begin
  // Putting things practical    
  if mtblMedica.IndexFieldNames = LinkGridToDataSourceBindSourceDB1.Columns[Column.Index].MemberName then
    mtblMedica.IndexFieldNames := LinkGridToDataSourceBindSourceDB1.Columns[Column.Index].MemberName + ':D'
  else
    mtblMedica.IndexFieldNames := LinkGridToDataSourceBindSourceDB1.Columns[Column.Index].MemberName;

  // Here is the solution. Refresh datasource
  LinkGridToDataSourceBindSourceDB1.Active := False;
  LinkGridToDataSourceBindSourceDB1.Active := True;
end;


La franja horaria es GMT +2. Ahora son las 02:09:48.

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