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

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

Проблема с DBGrid [D6, IB6.x]


abp ©   (2002-11-25 15:23:00) 

У меня TDBGrid привязан к базе данных, созданных при помощи TClientDataSet. Вешаю на Грид обработчик OnKeyPressed. Код обработчика внизу:
procedure TTempOgrSpeed.DBGrid2KeyPress(Sender: TObject; var Key: Char);
var
s : string;
begin
if (Key = "s") then
begin
MarshDM.SetActiveBD;
if (DBGrid2.Col = 1) then
if (SelectUchastokForm.ShowModal = mrOK) then
begin
MarshDM.OgrSpeedTmpCDS.Edit;
MarshDM.OgrSpeedTmpCDSNAMEP.AsString:= MarshDM.Stanchya.FieldByNAme("NAMEC").AsString;
MarshDM.OgrSpeedTmpCDSONACHV.AsInteger:= MarshDM.Stanchya.FieldByNAme("OSNACH").AsInteger;
MarshDM.OgrSpeedTmpCDSOENDV.AsInteger:= MarshDM.Stanchya.FieldByNAme("OSEND").AsInteger;
MarshDM.OgrSpeedTmpCDSWAY.AsInteger:= MarshDM.Stanchya.FieldByNAme("WAY").AsInteger;
MarshDM.OgrSpeedTmpCDS.Post;
end;
end;
if (Key = #32) then
begin
if (DBGrid2.Col = 1) then
if (KoordForm.ShowModal = mrOk) then
begin
MarshDM.OgrSpeedTmpCDS.Edit;
MarshDM.OgrSpeedTmpCDSNAMEP.AsString:="Перегон "+IntToStr(KoordForm.SpinEdit1.Value)+"км"+IntToStr(KoordForm.SpinEdit2.Value)+"п-"+IntToStr(KoordForm.SpinEdit3.Value)+"км"+IntToStr(KoordForm.SpinEdit4.Value)+"п";
MarshDM.OgrSpeedTmpCDSONACHV.AsInteger:=((KoordForm.SpinEdit1.Value*1000+KoordForm.SpinEdit2.Value*100)-1100);
MarshDM.OgrSpeedTmpCDSOENDV.AsInteger:=((KoordForm.SpinEdit3.Value*1000+KoordForm.SpinEdit4.Value*100)-1100);
MarshDM.OgrSpeedTmpCDSWAY.AsInteger:=KoordForm.SpinEdit5.Value;
MarshDM.OgrSpeedTmpCDS.Post;
end;
if (DBGrid2.Col = 2) then
if (TimeForm.ShowModal = mrOk) then
begin
MarshDM.OgrSpeedTmpCDS.Edit;
MarshDM.OgrSpeedTmpCDSTNACH.AsInteger:= TimeForm.SpinEdit1.Value;
MarshDM.OgrSpeedTmpCDSMNACH.AsInteger:= TimeForm.SpinEdit2.Value;
MarshDM.OgrSpeedTmpCDSTKON.AsInteger:= TimeForm.SpinEdit3.Value;
MarshDM.OgrSpeedTmpCDSMKON.AsInteger:= TimeForm.SpinEdit4.Value;
if ((TimeForm.SpinEdit1.Value = 0) and (TimeForm.SpinEdit2.Value = 0)
and (TimeForm.SpinEdit3.Value = 0) and (TimeForm.SpinEdit4.Value = 0)) then
s:="до отмены";
if (((TimeForm.SpinEdit1.Value <> 0) OR (TimeForm.SpinEdit2.Value <> 0))
and ((TimeForm.SpinEdit3.Value = 0) and (TimeForm.SpinEdit4.Value = 0))) then
s:= "с "+IntToStr(TimeForm.SpinEdit1.Value)+"ч "+IntToStr(TimeForm.SpinEdit2.Value)+"мин и до отмены";
if (((TimeForm.SpinEdit1.Value <> 0) OR (TimeForm.SpinEdit2.Value <> 0))
and ((TimeForm.SpinEdit3.Value <> 0) OR (TimeForm.SpinEdit4.Value <> 0))) then
s:= "с "+IntToStr(TimeForm.SpinEdit1.Value)+"ч "+IntToStr(TimeForm.SpinEdit2.Value)+"мин по "+IntToStr(TimeForm.SpinEdit3.Value)+"ч "+IntToStr(TimeForm.SpinEdit4.Value)+"мин";
MarshDM.OgrSpeedTmpCDSTIMEP.Value:= s;
MarshDM.OgrSpeedTmpCDS.Post;
DBGrid2.Refresh;
end;
end;
end;

После выполнния обработчика в колонке данне не появляются, а появляется или S все забивается пробелом.

Не пойму где я маху дал??????


abp   (2002-11-25 16:13:00) [1]

Спасибо! Уже решил данную проблему


Johnmen   (2002-11-25 15:46:00) [2]

1.Если это не трехзвенка, то чем оправдано использование TClientDataSet вместо специализированных компонент ?
2. Разбираться в вышеприведенном коде вряд ли кто-то будет, в виду его крайней нечитабельности (мазохистов нет...:))


Наверх

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