Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Dataset übernimmt Wert erst wenn TwwDBEdit Focus verliert

  Alt 31. Mär 2020, 19:09
Speichern geht eigentlich auch recht einfach mit DataSet.Post
nein?

Das Dataset.Post speichert ja nur, was schon im Dataset drin ist, aber wenn das Edit den Wert noch nicht übergeben hat,
und dann ist der Wert nach dem Post auch weg, da im AfterPost/AfterScroll die Edits sich den aktuellen Wert des Datasets holen.


Das TDBEdit von Delphi übergibt den Wert sofort beim Edit.OnChange. Beim Dataset.Post wird das dann problemlos gespeichert.

Es gibt aber DBEdits anderer Hersteller, die übergeben "standardmäßig" den eingegebenen Wert erst beim Edit.OnExit oder eben z.B. bei sowas wie Edit.Post oder Edit.Update, bzw. Edit.DataController.Post ...
Bis zu diesem Moment weiß das Dataset noch nichtmal, dass es eine Änderung gab/gibt.


Funktionsbeispiel:
  • dein TDataset und das eine TField darin ist ein TMemo
  • dein Dataset.Post wäre demnach Memo.Lines.SaveToFile
  • das DBEdit ist ein TEdit
    • normal macht das Edit beim Edit.OnChange ein {Memo.Lines[0]} Memo.Lines.Text := Edit.Text
    • aber es gibt auch "bessere" Edits, die machen das nicht bei jedem einzelnen OnChange, sondern nur einmal beim OnExit (oder bei einem expliziten Update-Befehl)
  • Hast du jetzt eines der besseren DBEdits und machst nun dein Post (Memo.Lines.SaveToFile), ohne vorher z.B. den Fokus zu ändern, dann ist dort die Änderung noch nicht enthalten.
  • -
  • ach ja, beim Memo.OnChange natürlich Edit.Text := Memo.Lines[0]; , was dann quasi beim Open/Load/AfterScroll den Inhalt des DBEdits füllt
$2B or not $2B

Geändert von himitsu (31. Mär 2020 um 19:16 Uhr)
  Mit Zitat antworten Zitat