Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка выхода из ячейки в TStringGrid [D7, WinXP]


GreySerg ©   (2007-11-02 14:42:00) 

Есть StringGrid, в котором редактирую ячейки. Надо чтобы по выходу из режима редактирования ячейки выполнялся набор действий, в частности отредактированное значение ячейки сохранялось в БД. Как лучше поступить, Мастера, обработать у StringGrida OnKeyDown, OnMouseDown, OnExit (из грида) или сделать свой InplaceEditor, в котором по выходу из ячейки писать в БД ?


Leonid Troyanovsky   (2007-11-03 13:55:00) [1]


> GreySerg   (02.11.07 14:42)  

> Есть StringGrid, в котором редактирую ячейки. Надо чтобы
> по выходу из режима редактирования ячейки выполнялся набор
> действий, в частности отредактированное значение ячейки
> сохранялось в БД. Как лучше поступить, Мастера, обработать
> у StringGrida OnKeyDown, OnMouseDown, OnExit (из грида)

Например, в OnSelectCell

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
 var CanSelect: Boolean);
begin
 with Sender as TStringgrid do
   begin
   if Cells[Col, Row] <> OldValue then // OldValue: String - поле формы
     DoSomething (Cells[Col, Row]);
   OldValue := Cells[ACol, ARow];
 end;
end;

Ну, и требуемая обработка OnEnter/Exit

Про InplaceEditor можно посмотреть здесь
http://groups.google.com/group/fido7.ru.delphi/msg/b7f75355f95bbd2b

--
Regards, LVT.


Reindeer Moss Eater   (2007-11-02 21:06:00) [2]

If StringGrid1.Cells[ACol,  ARow] <> Value then

Это недоразумение можно заменить на более простое :

if False then


Reindeer Moss Eater   (2007-11-02 21:02:00) [3]

Все это хорошо, но он генерится на каждое новое нажатие


TStas   (2007-11-02 20:55:00) [4]

Ну да, вот сейчас посмотрел:
procedureTForm1.StringGrid1SetEditText(Sender: TObject; ACol,  ARow: Integer; const Value: String);
If StringGrid1.Cells[ACol,  ARow] <> Value then
текст отредактирован и Вы выполняете нужные действия.


TStas   (2007-11-02 20:49:00) [5]

У него же, вроде, был OnSetText


Anatoly Podgoretsky   (2007-11-02 16:12:00) [6]

> Greyserg  (02.11.2007 15:22:10)  [10]

Ну и славо богу, если хватает, но тогда не надо жаловаться.


Reindeer Moss Eater   (2007-11-02 15:24:00) [7]

Забыли уже давно про дбгрид.
Тебе про стринггрид говорят


Greyserg   (2007-11-02 15:22:00) [8]


> Anatoly Podgoretsky ©   (02.11.07 15:20) [9]
> > Greyserg  (02.11.2007 15:06:07)  [7]И что, какая связь
> между отображением и реальным содержимым базы, имеешь право
> даже кино показывать


так зачем тогда DBGrid, мне StringGrida хватает


Anatoly Podgoretsky   (2007-11-02 15:20:00) [9]

> Greyserg  (02.11.2007 15:06:07)  [7]

И что, какая связь между отображением и реальным содержимым базы, имеешь право даже кино показывать


Reindeer Moss Eater   (2007-11-02 15:07:00) [10]

А кто сказал, что будет легко?


Greyserg   (2007-11-02 15:06:00) [11]

так грид же отображается особым образом и число записей в БД не сответствует числу строк  в гриде , есть фиксированные строки и колонки


Reindeer Moss Eater   (2007-11-02 14:58:00) [12]

тогда [4]

потому что я как пользователь могу отредактировать ячейку, и никуда больше не выходить из нее, закрыв форму.


Greyserg   (2007-11-02 14:54:00) [13]

И грид отображает особенным образом записи в БД - строка грида - не соответствует записи в БД


Reindeer Moss Eater   (2007-11-02 14:51:00) [14]

либо отложи запись в бд до момента когда весь стрингрид не будет заполнен нужными данными


Reindeer Moss Eater   (2007-11-02 14:50:00) [15]

дбгриду это и не надо


Greyserg   (2007-11-02 14:49:00) [16]

не пойдет , там определенным образом данные сохраняются и их изначально нет в БД


Reindeer Moss Eater   (2007-11-02 14:46:00) [17]

замени стринггрид дбгридом


Наверх

Титульная страница Поиск, карта сайта Написать письмо