mam dataset Ado
i w nim załóżmy dwa pola typu Boolean.
Teraz na formie mam dwa DBCheckBoxy połączone z tymi polami.
I jak kliknę ka któryś z tych checkboxów to dataset automatycznie przechodzi w tryb edycji.
I chciałbym wiedzieć (na zdarzeniu BeforeEdit) który z tych checkbox kliknąłem czyli które pole wywołało przejście w tryb edycji, bo czasem mogę ustawić to pole w datasecie, a czasem chcę zrobić Abort.
Jest to to możliwe?
które pole wywołało przejście w tryb edycji
- Rejestracja: dni
- Ostatnio: dni
- Postów: 119
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Gorlice
Nie testowałem ale wydaje mi się, że najprościej to nadaj każdemu z TDBCheckBox inną wartość właściwościTag w momencie kliknięcia (zdarzenie onClick) na na TDBCheckBox przypisz tą wartość z tego komponentu do Tag od TDataSet wtedy wystarczy w BeforeEdit ją odczytać będziesz wiedział, który był kliknięty. Później po wszystkim jeszcze dla formalności zmieniasz Tag od TDataSet na 0 i powinno działać.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6610
Mam bardzo mocne wrażenie, że właśnie próbujesz rozwiązać problem XY - napisz po co Ci to i co chcesz osiągnąć
- Rejestracja: dni
- Ostatnio: dni
- Postów: 119
chodzi o to, że na oknie mam dużo kontrolek. I jeśli dany rekord jest Zaakceptowany (czyli zamknięty, nie można go zmieniać) to wtedy każde naciśniecie którejś kontrolki wywołuje Edit na datasecie. A tam na BeforeEdit sprawdzam czy dany rekord jest Zaakceptowany.i jeśli tak to Abort.
I teraz doszło kilka nowych pól, które można zmienić mimo zaakceptowania.
I muszę wiedzieć czy w tym przypadku mam zrobić abort czy pozwolić na zapis jeśli zmieniłem któreś z tych nowych pól.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 6610
nie prościej wyłączyć kontrolki edycyjne? BTW i tak musisz iść w tę stronę jeśli chcesz zezwolić na edycję tylko niektórych pól
- Rejestracja: dni
- Ostatnio: dni
- Postów: 1084
To zdarzenie:
https://docwiki.embarcadero.com/Libraries/Athens/en/Data.DB.TDataSource.OnDataChange
PS.
Aaa... Nie będę nawet komentował 🫨