StringGrid – jak zrobić kontrolę edycji?

0

Witam.

Szukam koncepcji jak w własnym komponencie StringGrid zrobić kontrolę czy coś zostało zmodyfikowane,
by przy zamykaniu formy przypomnieć użytkownikowi o konieczności zapisu danych lub odrzuceniu zapisu.

Taki sam mechanizm jak we wszystkich edytorach tekstu.

Pozdrawiaim
Janusz

0

Zdarzenie OnSetEditText jest wołane po edycji zawartości komórki – użyj go.

Potrzebujesz do implementacji tej funkcji wyłącznie jednej zmiennej logicznej. W konstruktorze formularza (lub po załadowaniu danych) ustawiasz ją na False, a w zdarzeniu OnSetEditText na True. Zawartość sprawdzasz w zdarzeniu OnCloseQuery i jeśli zawiera wartość True (dane zmodyfikowano), wyświetlasz okno dialogowe. Jeśli użytkownik owe okienko anuluje (czyli okno zwróci mrCancel), ustawiasz parametr ACanClose na False.

To tak w skrócie. ;)

0

Dziękuje za podpowiedź.

Pozdrawiam
Janusz

0

Rozwiązanie które zaproponowałeś zdaje egzamin,
ale z względu na fakt że parę rzeczy zmieniam samą myszą lub wcale nie wchodzę w tryb edycji,
to odwołanie się do OnSetEditText, w moim przypadku nie zdaje egzaminu.

screenshot-20171227091723.png

Dodatkowo mam kasowanie zawartości jednej komórki, oprogramowane pod klawiszem [ Delete ]
i dlatego zmienną DataChange wstawiłem do poniższej procedury.
Procedura jest wywoływane tylko i wyłącznie wtedy gdy do komórki coś dodajemy lub z niej ujmujemy.

procedure TgGrid.SetCells(ACol, ARow: Integer; const Value: string);
begin

  DataChange := true;  // tuuEdit


{$IF DEFINED(CLR)}
  TStringSparseList(EnsureDataRow(ARow))[ACol] := Value;
{$ELSE}
  TStringGridStrings(EnsureDataRow(ARow))[ACol] := Value;
{$IFEND}
  EnsureColRow(ACol, True);
  EnsureColRow(ARow, False);
  Update(ACol, ARow);

end;


Dziękuje za podpowiedź.
Janusz

0

@dasej: klasa tego komponentu posiada mnóstwo zdarzeń, więc bez problemu możesz sobie dobrać kolejne do reakcji na naciśnięcie przycisku Del i na akcje myszy. Dodatkowo, klasa bazowa udostępnia szereg metod umożliwiających np. określenie współrzędnych klikniętej komórki, więc wszystko możesz bez problemu oprogramować.

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