Wykrycie zakończenia edycji komórki w TStringGrid

0

W jaki sposób można wykryć, że użytkownik zakończył edycję jakiejś komórki w TStringGrid?

1

Nie wiem czy tak łatwo się da, bo sposób z: http://stackoverflow.com/questions/5055811/how-can-i-detect-when-a-user-is-finished-editing-a-tstringgrid-cell - nie działa jak powinien, a przynajmniej tak mi wyszło w testach. Ustawiony MessageBox w procedurze DoYourAfterEditingStuff pojawia się podczas wpisywania. Ale chyba najłatwiej zrobić edycję tworząć pole edycyjne o wielkości komórki i dla niego obsługiwać zdarzenia końca edycji czyli OnExit. Ja zrobiłem to w taki sposób w prostym Edytorze Hex napisanym dla próby i według mnie działa jak należy. Jak nic innego nie wymyślisz i nie znajdziesz lepszego sposobu, a nikt inny tutaj Ci nie pomoże, to spróbuj rozwiązania z dołączonego do tego posta kodu.

0

Dzięki za zainteresowanie tematem.
Nie bardzo widzę sensu tworzenia pola edycyjnego w komórce skoro TStringGrid posiada własny mechanizm edycji zawartości komórki.
Na razie testuję coś takiego:

procedure TForm1.StringGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
//...  
  if not StringGrid1.EditorMode then uzytkownik_zakonczyl_edycje_komorki;
end;

Ten sposób jednak nie działa gdy kończę edycję jakiejś komórki poprzez kliknięcie na inną w tym samym TStringGrid.

0

powiem tak.. chcesz być na księżycu.. ale zamiast budować rakietę... budujesz drabinę..

0

@pelsta: to nie wiem jak Tobie pomóc. Nie znałem własności EditorMode, ale można jeszcze spróbować dać zmienną globalną typu boolean i w zdarzeniu OnSetEditText ustawiać ją na True, a w OnSelectCell sprawdzając czy nie jest ona ustawiona na True, jeżeli tak to znaczy, że użytkownik przed chwilą najpewniej edytował zawartość komórki i po wszystkim ustawiać ją na False, ale nie wiem czy to się sprawdzi.

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