Wenn du nochmal genau lesen möchtest: Im Zitat ging es um ein TDB
Edit und nicht um ein TDB
Grid.
Etwas ausführlicher: Ich stelle in den meisten meiner
DB-Anwendungen eine Tabelle nebst einem Formular zur Verfügung. Die Tabelle (DBGrid) dient der Auswahl des zu bearbeitenden Datensatzes. Das Eingabe-Formular dient der Änderung des aktuellen bzw. dem Einfügen eines neuen Datensatzes. Dabei ist das DBGrid stets auf ReadOnly, die
DB-Eingabefelder dagegen werden in den Read-Write-Modus geschalten, sobald der Anwender das entsprechende Dataset in den Edit- oder Appendmodus versetzt. Will der Anwender den aktuellen Record bearbeiten, schaltet er um in die Formular-Darstellung und betätigt den Edit-Button. Zum Umschalten der der Komponenten habe ich immer eigene Methoden:
Delphi-Quellcode:
// ---------- Schreiben erlaubt -------------------------------------------------------------------------------------------------- Privat
Procedure TFormMain.SchreibenErlaubt;
Var
FarbeAktuell : TColor;
begin
GLD.EditModus := True;
TS_ToDo_Tabelle.Enabled := False;
TS_Kat.Enabled := False;
TS_Option.Enabled := False;
Navi_Liste.Enabled := False;
AL_DB_Close.Enabled := False;
AL_ED_Append.Enabled := False;
AL_ED_Del.Enabled := False;
AL_ED_Edit.Enabled := False;
AL_ED_Post.Enabled := True;
AL_ED_Cancel.Enabled := True;
AL_ED_Find.Enabled := False;
AL_ED_Import.Enabled := False;
AL_ED_Export.Enabled := False;
AL_ED_Print.Enabled := False;
AL_TXT_SchriftDlg.Enabled := True;
AL_TXT_Normal.Enabled := True;
AL_TXT_Fett.Enabled := True;
AL_TXT_Kursiv.Enabled := True;
AL_TXT_FettKursiv.Enabled := True;
AL_TXT_Unter.Enabled := True;
AL_TXT_FettUnter.Enabled := True;
AL_TXT_KursivUnter.Enabled := True;
AL_TXT_Durch.Enabled := True;
AL_TXT_Schwarz.Enabled := True;
AL_TXT_Rot.Enabled := True;
AL_TXT_Gruen.Enabled := True;
AL_TXT_Blau.Enabled := True;
GLD.URec.Sicht := 0;
Sichtbar;
AL_SICHT_Alle.Enabled := False;
AL_SICHT_Jahr.Enabled := False;
AL_SICHT_Monat.Enabled := False;
AL_SICHT_Woche.Enabled := False;
AL_SICHT_Heute.Enabled := False;
Bit_Append.Enabled := False;
Bit_Delete.Enabled := False;
Bit_Edit.Enabled := False;
Bit_Post.Enabled := True;
Bit_Cancel.Enabled := True;
Bit_Find.Enabled := False;
Bit_Import.Enabled := False;
Bit_Export.Enabled := False;
Bit_Print.Enabled := False;
DBEd_Titel.ReadOnly := False;
DBLU_Kategorie.ReadOnly := False;
DBDatePick.ReadOnly := False;
DBTimePick.ReadOnly := False;
DBCheck_OK.ReadOnly := False;
DBRich_Notizen.ReadOnly := False;
If GLD.AppendModus Then
FarbeAktuell := GLD.FarbeAppend Else
FarbeAktuell := GLD.FarbeEdit;
DBEd_Titel.Color := FarbeAktuell;
DBLU_Kategorie.Color := FarbeAktuell;
DBDatePick.Color := FarbeAktuell;
DBTimePick.Color := FarbeAktuell;
DBCheck_OK.Color := FarbeAktuell;
DBRich_Notizen.Color := FarbeAktuell;
StatusBarAktuell;
DBEd_Titel.SetFocus;
end;
// ---------- Schreiben verboten ------------------------------------------------------------------------------------------------- Privat
Procedure TFormMain.SchreibenVerboten;
begin
GLD.EditModus := False;
GLD.AppendModus := False;
AL_DB_Close.Enabled := True;
AL_ED_Append.Enabled := True;
AL_ED_Del.Enabled := True;
AL_ED_Edit.Enabled := True;
AL_ED_Post.Enabled := False;
AL_ED_Cancel.Enabled := False;
AL_ED_Find.Enabled := True;
AL_ED_Import.Enabled := True;
AL_ED_Export.Enabled := True;
AL_ED_Print.Enabled := True;
AL_TXT_SchriftDlg.Enabled := False;
AL_TXT_Normal.Enabled := False;
AL_TXT_Fett.Enabled := False;
AL_TXT_Kursiv.Enabled := False;
AL_TXT_FettKursiv.Enabled := False;
AL_TXT_Unter.Enabled := False;
AL_TXT_FettUnter.Enabled := False;
AL_TXT_KursivUnter.Enabled := False;
AL_TXT_Durch.Enabled := False;
AL_TXT_Schwarz.Enabled := False;
AL_TXT_Rot.Enabled := False;
AL_TXT_Gruen.Enabled := False;
AL_TXT_Blau.Enabled := False;
AL_SICHT_Alle.Enabled := True;
AL_SICHT_Jahr.Enabled := True;
AL_SICHT_Monat.Enabled := True;
AL_SICHT_Woche.Enabled := True;
AL_SICHT_Heute.Enabled := True;
GLD.URec.Sicht := 0;
Sichtbar;
Bit_Append.Enabled := True;
Bit_Delete.Enabled := True;
Bit_Edit.Enabled := True;
Bit_Post.Enabled := False;
Bit_Cancel.Enabled := False;
Bit_Find.Enabled := True;
Bit_Import.Enabled := True;
Bit_Export.Enabled := True;
Bit_Print.Enabled := True;
DBEd_Titel.ReadOnly := True;
DBLU_Kategorie.ReadOnly := True;
DBDatePick.ReadOnly := True;
DBTimePick.ReadOnly := True;
DBCheck_OK.ReadOnly := True;
DBRich_Notizen.ReadOnly := True;
DBEd_Titel.Color := GLD.FarbeBrowse;
DBLU_Kategorie.Color := GLD.FarbeBrowse;
DBDatePick.Color := GLD.FarbeBrowse;
DBTimePick.Color := GLD.FarbeBrowse;
DBCheck_OK.Color := PgCtrl_ToDo.Color;
DBRich_Notizen.Color := GLD.FarbeBrowse;
TS_ToDo_Tabelle.Enabled := True;
TS_Kat.Enabled := True;
TS_Option.Enabled := True;
DatMod.V_Liste.Locate('ID',DatMod.Qset_Liste.FieldByName('ID_LISTE').AsInteger,[]);
StatusBarAktuell;
Navi_Liste.Enabled := True;
DBEd_Titel.SetFocus;
end;