Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2016, 22:51   #1
vaso465
Пользователь
 
Регистрация: 28.12.2015
Сообщений: 29
По умолчанию Создание записи в ячейке DBgridEH При выполнение определённого действия? (Delphi Связь с ACCESS)

Доброго времени суток!
Прошу помощи в составление алгоритма добавления записи в ячейку при выполнение определённого действия!
На форме расположен DbGridEh в нём отображаются такие колонки как-
(Дата) (Преподаватель) (Дисциплина) (ХодВыполнения) (Дата сдачи)
ХодВыполнения является логической колонкой(True\False)!
В программе реализовано закрашивание строки по клику на логический элемент
Необходимо чтоб при клике на логический элемент в соседнюю ячейку В столбце (Дата Сдачи) добавлялась сегодняшняя дата!
Как это лучше организовать?
среда программирования Delphi
пример прилагается
Вложения
Тип файла: 7z пример.7z (575.3 Кб, 7 просмотров)
vaso465 вне форума Ответить с цитированием
Старый 05.06.2016, 21:27   #2
vaso465
Пользователь
 
Регистрация: 28.12.2015
Сообщений: 29
По умолчанию

Должно выглядеть как то так правда немного некорректно работает
Код:
procedure TForm2.DBGridEh1CellClick(Column: TColumnEh);
var
  P: TDateTime;
  Year, Month, Day : Word;
 begin
P:= Now; // Now - функция, возвращает текущую дату и время
DecodeDate(P, Year, Month, Day);
if combobox1.ItemIndex>0 then
begin
if (ADOquery1['ХодВыполнения'])= True then
adoquery1.FieldByName('Дата Сдачи').text:=datetostr(p);
end;
end;
vaso465 вне форума Ответить с цитированием
Старый 06.06.2016, 00:08   #3
vaso465
Пользователь
 
Регистрация: 28.12.2015
Сообщений: 29
По умолчанию

Кому интересно вот решение!
Код:
procedure TForm2.DBGridEh1CellMouseClick(Grid: TCustomGridEh;
  Cell: TGridCoord; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
var
  P: TDateTime;
  Year, Month, Day : Word;
  State: TGridDrawState;
            begin
P:= Now; // Now - функция, возвращает текущую дату и время
DecodeDate(P, Year, Month, Day);
if combobox1.ItemIndex>0 then
             begin
with DBGrideh1.Canvas do
             begin
if (ADOquery1['ХодВыполнения'])= true and
not (gdSelected in State) then
begin
IF adoquery1.FieldByName('Дата Сдачи').text=''THEN
adoquery1.FieldByName('Дата Сдачи').text:=datetostr(p);
end;
end;
end;
end;
vaso465 вне форума Ответить с цитированием
Старый 07.06.2016, 15:55   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
DecodeDate(P, Year, Month, Day);
if combobox1.ItemIndex>0 then
             begin
with DBGrideh1.Canvas do
             begin
Это все зачем? Если нужна просто дата без времени, то функция Date есть

Присвоение в поле Дата Сдачи даст ошибку, если запись датасета не в состоянии редактирования
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.06.2016, 16:38   #5
vaso465
Пользователь
 
Регистрация: 28.12.2015
Сообщений: 29
По умолчанию

Это сделано под пример который указывается в вопросе темы
а
Код:
if combobox1.ItemIndex>0 then
сделанно так только потому что первая запись в combobox открывает немного иную таблицу'сводную' где нет некоторых таблиц
vaso465 вне форума Ответить с цитированием
Старый 07.06.2016, 16:40   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
with DBGrideh1.Canvas do
Это зачем? Ты же не рисуешь на канвас грида. Хотя можно, только не в этом событии
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.06.2016, 16:46   #7
vaso465
Пользователь
 
Регистрация: 28.12.2015
Сообщений: 29
По умолчанию

В программе так же и цвет использовался на основе него сделал!
vaso465 вне форума Ответить с цитированием
Старый 07.06.2016, 16:58   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Подергай теперь в том гриде вверх-вниз и понаблюдай за цветом
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.06.2016, 17:02   #9
vaso465
Пользователь
 
Регистрация: 28.12.2015
Сообщений: 29
По умолчанию

Всё норм работает! Правда обратно не работает типа если false то очистить
vaso465 вне форума Ответить с цитированием
Старый 09.06.2016, 19:17   #10
vaso465
Пользователь
 
Регистрация: 28.12.2015
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Подергай теперь в том гриде вверх-вниз и понаблюдай за цветом
Посмотрите Может Придумаете как Очищать При False
Вложения
Тип файла: 7z Рабочий Стол-Новая папка (5).7z (460.1 Кб, 4 просмотров)
vaso465 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Связь Delphi и Access Juliett Помощь студентам 12 15.05.2012 20:28
DBGridEh тормозит при добавлении записи Jora_Kornev БД в Delphi 5 02.03.2012 09:17
при добавлении новой записи в dbgrideh автоматическое отмечивание галочкой scroyler БД в Delphi 2 23.02.2012 12:27
Связь Delphi с Access Light БД в Delphi 7 14.04.2008 18:09