AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi D7: TField.OnChange wann löst der Event aus?
Thema durchsuchen
Ansicht
Themen-Optionen

D7: TField.OnChange wann löst der Event aus?

Ein Thema von Bodenseematze · begonnen am 29. Apr 2025 · letzter Beitrag vom 29. Apr 2025
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#1

AW: D7: TField.OnChange wann löst der Event aus?

  Alt 29. Apr 2025, 16:19
@Uwe: werden in einer TDBRadioGroup für jeden Wert intern eine TDBCheckbox erzeugt?
Nein, aber auch bei einer TDBRadioGroup wird das Field erst auf Anforderung aktualisiert:
Delphi-Quellcode:
procedure TDBRadioGroup.UpdateData(Sender: TObject);
begin
  if FDataLink.Field <> nil then FDataLink.Field.Text := Value;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#2

AW: D7: TField.OnChange wann löst der Event aus?

  Alt 29. Apr 2025, 16:31
War es nicht so, dass wenn man in den DB-Aware Controls etwas ändert, dann ändert man das in der Datasource und gibt die Änderung somit auch an das Dataset (hier die Query) weiter, die dann in den State dsEdit gesetzt wird. Die Änderung wird aber noch nicht an die Datenbank weiter gegeben. Das passiert erst mit dem Absetzen eines Query.Post Befehls.

Ich bin jetzt nicht mehr sicher, aber konnte man nicht auch eine Property so setzen, dass jede Änderung autom. direkt gepostet wird, dann wäre das explizite "if Query.State=dsEdit then Query.Post" nicht nötig.
Ralph
  Mit Zitat antworten Zitat
Bodenseematze

Registriert seit: 10. Jul 2023
77 Beiträge
 
#3

AW: D7: TField.OnChange wann löst der Event aus?

  Alt 29. Apr 2025, 16:32
Arrrglll - ich bin mal wieder auf einen Spezialfall reingefallen.

In dem von mir skizzierten Beispiel war eine Information nicht enthalten:
Beim angesprochenen TField handelt es sich in dem Fall um ein TFloatField (weil die Datenbank-Spalte (leider) ein "DECIMAL(18,3)"-Wert ist).
Sie enthält zwar nur die möglichen Werte 0, 1, 2 - das sind aber eben "offiziell" Kommawerte...
Und da scheint das automatische Setzen des Wertes bei einer TDBRadioGroup nicht zu funktionieren (der umgekehrte Weg, d.h. vom TFloatField-Wert zur Auswahl der richtigen Checkbox funktioniert komischerweise).

Bei einem Test mit einem TIntegerField als Basis für die TDBRadioGroup funktioniert das - und im testweise angelegten OnClick-Handler der TDBRadioGroup ist der TField-Wert bereits auf den ausgewählten Wert gesetzt (obwohl der OnChange-Handler erst danach aufgerufen wird).

Leider kann / darf ich die Datenbankstruktur nicht anpassen, um das zu korrigieren - muss mir jetzt also überlegen, wie ich das (besser) löse...
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz