2011-01-06 4 views
1

Ich habe eine Situation, wo ich, damit der Benutzer entweder von 2 Feldern eines DBTabelle aktualisieren (der mit einem CDS) persistierenden die letzte eingegeben. Also (nachdem der Benutzer Daten eingibt) muss ich die aktuelle fokussierte Kontrolle bekommen, so dass ich die vorherigen Felddaten entfernen werde, wenn es welche hat. Ich habe auch andere Felder abgesehen von diesen beiden.aktuelles fokussiertes Feld eines TClientDataSet

Es wurde darauf bestanden, keine netzbezogenen Ereignisse zu verwenden, ich muss nur CDS-Ereignis verwenden, um dies zu erreichen.

Vielen Dank im Voraus, Vijay.

Antwort

4

Verwenden Sie das OnChange-Ereignis des Feldes, und deaktivieren Sie einfach den anderen Feldwert falls vorhanden:

Etwas wie folgt aus:

TForm1.cdsField1Change(Sender: TField); 
begin 
    if not Sender.IsNull then 
    cdsField2.Clear; 
end; 

TForm1.cdsField2Change(Sender: TField); 
begin 
    if not Sender.IsNull then 
    cdsField1.Clear; 
end; 
+2

Correct Prinzip, aber dieser Code nicht zu einer Endlosschleife führen (field1 Abspaltungen field2 ändert field1 ad infinitum)? – Stuart

+0

Danke dafür @Stuart, ich habe jetzt den Code geändert, um den StartOveflow auf meiner Antwort zu verhindern. – jachguate

+0

keine probs - nur upvoted ur antwort :) – Stuart