Cuna en DevExpress cxGrid y Delphi 7

Algunas técnicas para trabajar con el componente cxGrid, recopiladas de varias fuentes y útiles para mí personalmente.

Aspecto externo

La coloración del SOFTWARE de las celdas se puede realizar en los eventos OnCustomDrawCell

if (AViewInfo.GridRecord.Values[TableViewColumn1.Index])=1 then begin
   ACanvas.Brush.Color := clRed;
   ACanvas.Font.Style := [fsBold];
 end;

Si desea pintar solo los altavoces individuales (en lugar de la línea completa), pinte el controlador de columna OnCustomDrawCell se puede definir como:

if TableView.Columns[AViewInfo.Item.Index].DataBinding.FieldName='COLUMN_1' then

Lo único que debe tener en cuenta es que este color no se muestra cuando se exporta a Excel. Debe pintar asignando únicamente controladores de tipo de «estilo» predeterminados «TableViewStylesGet***Style»:

procedure TMoneyMoveDetailForm.TableViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin
    if (ARecord.Values[TableViewID_MONEY.Index])=null then begin
        AStyle :=cxStyleBold;
    end;
end;

Colorear diferentes niveles de agrupación en diferentes colores.

procedure TPozSkladForm.TableViewStylesGetGroupStyle(
Sender: TcxGridTableView; ARecord: TcxCustomGridRecord; ALevel: Integer;
out AStyle: TcxStyle);
begin
    if ALevel=0 then AStyle := cxStyleL0;  // $00A0A0A0
    if ALevel=1 then AStyle := cxStyleL1;  // clSilver
    if ALevel=2 then AStyle := cxStyleL2;  // $00E0E0E0
end;

La falta de coloración a través de los estilos (Style) en que el cursor se superpone a la coloración. Esto se puede omitir si en el controlador TableViewCustomDrawCell realiza la selección de la línea en sí (para CellSelect = True):

  if AViewInfo.GridRecord.Selected then begin
    if AViewInfo.Selected then begin // under the inverse cursor, make the white font
      ACanvas.Font.Color := clWhite;
    end else begin // The rest of the line will be highlighted in blue font so as not to overwrite the background
      ACanvas.Font.Color := clBlue;
      ACanvas.Font.Style := [fsBold];
    end;
  end;

Mostrar datos (filtros, agrupación, clasificación)

En el grupo TcxGrid GroupByBox ocultar y limpiar el área de una cuadrícula en la que está escrito «drag a column header here to group by ..»

TableView.OptionsView.GroupByBox := false;

Establezca programáticamente el filtro:

GridDBTableView1.DataController.Filter.Root.Clear;
GridDBTableView1.DataController.Filter.Root.AddItem(GridDBTableView1.Columns[0], cxFilter.foLike,nomzak+"%",nomzak+"%");
GridDBTableView1.DataController.Filter.Active:=true;

Expandir y contraer grupos en tiempo de ejecución

TableView.DataController.Groups.FullCollapse;
TableView.DataController.Groups.FullExpand;
TableView.DataController.Options := TableView.DataController.Options + [dcoGroupsAlwaysExpanded]; // fix expand state

Acceso a datos y metadatos Grid

ejecutar en un bucle a través de todas las líneas visibles:

for I:=0 to cxGrid.DataController.FilteredRecordCount - 1 do begin
cxGrid.DataController.Values[cxGrid.DataController.FilteredRecordIndex[i],YourColumnName.Index])

 

Recorra todas las líneas seleccionadas para dar cada identificador

for i := 0 to GridView1.Controller.SelectedRecordCount-1 do begin
ID_RASHODD := GridView1.DataController.Values[GridView1.Controller.SelectedRecords[i].RecordIndex, GridView1ID_RASHODD.Index];
end;

Obtener cuadrícula de columnas en su nombre

TableView1.GetColumnByFieldName('FIELD_NAME')

Editar datos de usuario

Organización lista ComboBox a la celda:

Las propiedades configuradas en el ComboBox, completan la lista de eventos del conjunto de datos AfterScroll, si intenta hacerlo en onInitPopUp, la lista de caídas anteriores (?). Cómo rellenar:

TcxComboBoxProperties(NTableViewKMPNAME.Properties).Items.Clear;
while not LookupQuery.Eof do begin
TcxComboBoxProperties(NTableViewKMPNAME.Properties).Items.Add(LookupQuery['NM_NAME']);
LookupQuery.Next;
end;

La selección del usuario se verifica y se utiliza en el método OnValidate

Edición de números en la cuadrícula

En la vista Propiedades y configure el controlador CalcEdit OnEditValueChanged yuzaem (Sender as TcxCalcEdit) .Value y la situación actual en el conjunto de datos

Para hacer clic con el botón derecho en una columna en particular:

en el evento OnCellClick:

if ACellViewInfo.Item.Name='DzTableViewNRM_NAME' then
if AButton=mbRight then

Procesando marque la casilla de verificación en la celda. En el evento OnChange:

if (Sender as TcxCheckBox).Checked then

Cambio de tablas en tiempo de ejecución

Agregar columnas en tiempo de ejecución:

var
XCol : TcxGridDBBandedColumn;
begin
XCol := TableView.CreateColumn;
XCol.Position.BandIndex := 1;
XCol.DataBinding.FieldName:='quant'+sl[i];
XCol.DataBinding.ValueType := 'Float';
XCol.Caption := ss[i];
XCol.Width := 50;
XCol.Tag := StrToInt(sl[i]);
XCol.Summary.FooterKind := skSum;
XCol.Summary.GroupFooterKind := skSum;
XCol.Summary.GroupKind := skSum;
XCol.Summary.FooterFormat := '0.##';
XCol.Summary.GroupFooterFormat := '0.##';
XCol.Summary.GroupFormat := '0.##';

Eliminando el tiempo de ejecución de la columna:

TableView.Columns[i].Destroy;

Adición de pandillas (bands):

b0 := TableView.Bands.Add;
b0.Position.BandIndex := b.Index;

Deja un comentario

Tu dirección de correo electrónico no será publicada.