Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.298 Beiträge
 
Delphi 12 Athens
 
#9

AW: Devexpress Grid: Focus Cell

  Alt 24. Feb 2020, 09:49
Danke an Alle...

Manchmal muß man nur drüber reden...
Zitat:
Hast du mal im runtime abgefragt ob Focusing bei den Spalten tatsächlich an ist?
...war der entscheidende Hinweis. Ich habe ein Rechtesystem was entsprechend dem Recht die Colums setzt. (Quasi optisch edtitierbar oder nicht - über Focused)
Delphi-Quellcode:
class procedure TToolsForms.SetAndVisualEnabledState(Item: TdxLayoutItem; NewState: Boolean; NewVisible: Boolean = True);

  function HasItemGridView: Boolean;
  var
    J: Integer;
    Grid: TcxGrid;
    View: TcxGridTableView;

    procedure SetGridColumsState(Enabled: Boolean);
    var
      I: Integer;
      Column: TcxGridColumn;
    begin
      for I := 0 to View.ColumnCount - 1 do
      begin
        Column := View.Columns[I];
        Column.Options.Focusing := Enabled; //evt. and (Column.Tag = 1);
      end;
    end;

  begin
    Result := False;
    if Item.Control is TcxGrid then
    begin
      Result := True;
      Grid := TcxGrid(Item.Control);
      for J := 0 to Grid.ViewCount - 1 do
      begin
        View := TcxGridTableView(Grid.Views[J]);
        SetGridColumsState(NewState);
        if NewState then
        begin
          View.Styles.Background := nil;
          View.Styles.Selection := dmStyle.cxStyleYellowLight;
        end
        else
        begin
          View.Styles.Background := dmStyle.cxStyleDisabledBackground;
          View.Styles.Selection := dmStyle.cxStyleNature;
        end;
      end;
    end;
  end;

begin
  Item.Visible := NewVisible;
  if not HasItemGridView then // ist eine View -> dann nur Farben tauschen statt disabled
  begin
    Item.Enabled := NewState;
  end;
end;
Was ich übersehen hatte, daß die Grids, die nur einzelne Spalten zum Editieren "freigeben" haben, das Flag "only ReadOnly" brauchen. Das wollte ich über den Tag regeln. Wenn aber die Zeile nicht einkommentiert ist, kann das auch nicht funktionieren. Den Teil hatte ich aber ohne Prüfung als funktionierend eingestuft.



PS: Warum hat das andere Grid funktioniert? Weil alle Spalten entsprechend dem Recht "focusiert" waren. Bei dem anderen Grid waren Spalten dabei die immer nicht Focused sein sollten. Darum ist das aufgefallen.

Geändert von haentschman (24. Feb 2020 um 10:08 Uhr)
  Mit Zitat antworten Zitat