Blokowanie rekordu przed modyfikacją

0

Witam wszystkich.

Baza danych dbf, na formie kontrolka DBGrid. Edycja danych odbywa się bezpośrednio w komórkach DBGrida. W jednej z kolumn są dane typu boolean. Gdy wartość tego pola równa się false rekord można dowolnie modyfikować. Jednak gdy wartość tego pola zmieniam na true to chciałbym aby ten rekord był zablokowany przed zmianami (oprócz oczywiście pola boolean, bo zawsze mogę mieć ochotę zmienić zdanie co do tego rekordu).

Aktualnie zrobiłem coś takiego:

  • wartość dgEditing dla DBGrida ustawiłem na False przez co nie mam automatycznego przechodzenia Data Seta na Edit gdy zaczynam pisać.
  • w zdarzeniu OnKeyPress DBGrida wpisałem coś takiego:
   if Table1.FieldByName('blokada').AsBoolean = false then
    DBGrid1.SelectedField.DataSet.Edit;

czyli jak wartość pola blokada równa się false to wybrane pole można edytować.

Sprawdzam za pomocą kontrolki DBStatusLabel z komponentów RX stan bazy danych i faktycznie wszystko jest ok, czyli gdy wartość pola blokada równa się true to DataSet pozostaje w stanie Browse a gdy blokada = false i próbuje pisać to DataSet przyjmuje stan Edit.
Jedyny problem polega na tym że nie mogę wpisać żadnego znaku ani w rekordzie z wartością true ani z wartością false w polu blokada :(

Pozdrawiam
Robert

0

ok, poradziłem sobie. Jakby kogoś interesowało to w zdarzeniu DBEdit OnKeyPress wpisałem

 if Table1.FieldByName('blokada').AsBoolean = true then
    Abort;

Edycje pola blokada rozwiązałem za pomocą specjalnej czcionki z "ptaszkiem". Opis sposobu pod tym adresem http://codegear.pl/cgi-bin/tip.exe/showtip?mode=1&id_tip=29

1 użytkowników online, w tym zalogowanych: 0, gości: 1