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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2012, 15:48   #1
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию никак неполучается обновить dbgrid

использую базу access у меня есть dbgrid а в нем процедура, которая при окраске ячейки (окрашивается она по разному по наступлению даты) выводит на форму label с текстом и в зависимости от цвета(а значит и даты) текст всегда разный.

проблема заключается в том что когда наступает одна дата текст вылазиет, потом вторая то вылазиет другой текст, но при этом этот остается!!!!!!!

А самое главное что если выйти из проги и зайти то все супер, выходит нужно обновить грид или его процедуры, процедуры не знаю как , а сам грид, адо конектион все перепробывал ни черта только с презапуском программы
undead92 вне форума Ответить с цитированием
Старый 19.01.2012, 16:05   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Может вы лучше покажите кусок кода, где всё это происходит.
А то я слабо понял допустим что значит
1
Цитата:
у меня есть dbgrid а в нем процедура
что значит в нём процедура? это обработчик какого то события?
2
Цитата:
выводит на форму label с текстом
это как? создаёт новый, делает видимым заранее подготовленный?
3
Цитата:
проблема заключается в том что когда наступает одна дата текст вылазиет
что значитнаступает дата? где наступает?

ЗЫ телепатну,
вы создаёте label программно, а потом не уничтожаете его, или не меняете его текст, а просто создаёте ещё 1.

Последний раз редактировалось vovk; 19.01.2012 в 16:07.
vovk вне форума Ответить с цитированием
Старый 19.01.2012, 16:16   #3
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию

нет у меня заготовлены 3 label с текстом все невидимы

в дбгриде есть дата, за один день до которой, в день которой, по истечении которой меняется цвет ячейки в гриде и на форме 1 из 3 label взависимости от события показывается.



когда например я ставлю в грид 20 число текст проявляется с надписью НАСТУПИЛО , потом меняю число на 23 появляется надпись ПРОСРОЧЕНО , беда в том что НАСТУПИЛО тоже остается и убирается только после презапуска программы

вот код







procedure TForm13.DBGrid1DrawColumnCell(Sende r: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);


var
day, month, year : word;
begin
if Column.Field.FieldName = 'oplachenodo' then begin
DecodeDate( Column.Field.AsDateTime, year, month, day );
// заранее
if (Column.Field.AsDateTime > Now) and
(DaysBetween(Now, EncodeDate( YearOf(Now), month, day )) = 0) then
TDBGrid(Sender).Canvas.Brush.Color := clYellow;

if (Column.Field.AsDateTime > Now) and
(DaysBetween(Now, EncodeDate( YearOf(Now), month, day )) = 0) then
label9.Visible:=true ;


//сегодня
if (Column.Field.AsDateTime < Now) and
(DaysBetween(Now, EncodeDate( YearOf(Now), month, day )) = 0) then
TDBGrid(Sender).Canvas.Brush.Color := clRed ;
if (Column.Field.AsDateTime < Now) and
(DaysBetween(Now, EncodeDate( YearOf(Now), month, day )) = 0) then
label8.Visible:=true;


//просрочили!
if (Column.Field.AsDateTime < Now)

then
TDBGrid(Sender).Canvas.Brush.Color := clred ;
if (Column.Field.AsDateTime < Now)
then label10.Visible:=true;





end;
TDBGrid(Sender).Canvas.FillRect(Rec t);
TDBGrid(Sender).Canvas.TextRect(Rec t,Rect.Left+2,Rect.Top+2,Column.Fie ld.Text);
undead92 вне форума Ответить с цитированием
Старый 19.01.2012, 16:20   #4
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию

я помню что в институте как то делали обновление процедуры, то есть если бы она опять заново сработала то показывала бы правильны текст
undead92 вне форума Ответить с цитированием
Старый 19.01.2012, 16:28   #5
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию

даже помню как то так выглядело

form13.DBGrid1DrawColumnCell(refres h);
undead92 вне форума Ответить с цитированием
Старый 19.01.2012, 17:24   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
// заранее
.......
.... then
begin
label9.Visible:=true;
label8.Visible:=false;
label10.Visible:=false;
end;
//сегодня
.........
.... then
begin
label8.Visible:=true;
label9.Visible:=false;
label10.Visible:=false;
end;

//просрочили!
........
....then
begin
label10.Visible:=true;
label8.Visible:=false;
label9.Visible:=false;
end;
вы их отображаете, а потом не прячете.

Уж не знаю для чего вы так всё это используете, ну да ладно.
vovk вне форума Ответить с цитированием
Старый 19.01.2012, 17:39   #7
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

а вообще для обновления следуют юзать Refresh.
SovereignSun вне форума Ответить с цитированием
Старый 20.01.2012, 09:16   #8
undead92
Пользователь
 
Регистрация: 26.12.2009
Сообщений: 95
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
Код:
// заранее
.......
.... then
begin
label9.Visible:=true;
label8.Visible:=false;
label10.Visible:=false;
end;
//сегодня
.........
.... then
begin
label8.Visible:=true;
label9.Visible:=false;
label10.Visible:=false;
end;

//просрочили!
........
....then
begin
label10.Visible:=true;
label8.Visible:=false;
label9.Visible:=false;
end;
вы их отображаете, а потом не прячете.

Уж не знаю для чего вы так всё это используете, ну да ладно.


Все очень просто, это раздел в моей клиентской программе с абонентской платой, то есть когда наступит время им платить или отключать им оборудование, чтобы это выводилось в виде текста крупно а в гриде они подсвечивались, клиентов >тысячи , такая вещь полезна))

Спасибо большое за помощь!
undead92 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++..неполучается задача MaxStill Общие вопросы C/C++ 1 11.10.2011 15:38
Неполучается разослать почту. mylifeyd Помощь студентам 0 03.07.2011 23:31
как обновить DBGrid bmb_66 БД в Delphi 0 29.11.2010 14:48
Обновить данные в DBGRID sl963 БД в Delphi 7 04.06.2010 18:06