Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.149 Beiträge
 
Delphi 12 Athens
 
#4

AW: TDBGrid: Read-Only-Feld

  Alt 19. Jul 2016, 12:35
Col.SetReadOnly > Grid.InvalidateCol scheint wohl nur die Anzeige/Grafik, aber nicht den ReadOnly-Status zu aktualisieren.

Delphi-Quellcode:
procedure TForm1.dbGridAssistentenCellClick(Column: TColumn);
begin
  if Column.Field.FieldName='markiertthen
    Column.ReadOnly := True;
end;

procedure TForm1.dbGridAssistentenDblClick(Sender: TObject);
begin
  //if not (cdAssistent.State in [dsEdit,dsInsert]) then // Edit macht eh nichts, wenn es schon im Edit/Insert-Modus ist
    cdAssistent.Edit;

  if dbGridAssistenten.SelectedField.FieldName='markiertthen // was wohl passiert, wenn kein Feld markiert währe?
  begin
    if dbGridAssistenten.SelectedField.AsString='then
      dbGridAssistenten.SelectedField.AsString := 'x'
    else
      dbGridAssistenten.SelectedField.AsString := '';
    cdAssistent.Post;
    // hier das Grid dazu bringen den "Eingabe"-Modus zu beenden
  end;
end;
Coumn.ReadOnly := True; : ReadOnly wird bestimmt schon beim ColumChange ausgewertet,
aber warum erst beim Click setzen und nicht gleich im FormCreate, beim Laden der Daten oder nach Erstellen der Gridspalten?


cdAssistent.Post; speichert nur das DataSet, aber das DataSet hat nichts mit dem Grid zu tun, bzw. die beiden "EDIT" sind nicht das Selbe/Gleiche.
Das DataSet wird (automatisch) erst bei einer Wert-Änderung in den Editmodus versetzt und die Zelle ist schon vorher unabhängig in ihrem EditEingabeModus.

Du könntest es mit den Protected-Methoden Grid.InvalidateEditor und Grid.ShowEditor versuchen, welche den InplaceEditor aktualisieren. (Grid.UpdateEdit)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Jul 2016 um 12:43 Uhr)
  Mit Zitat antworten Zitat