Текущий архив: 2002.12.12;
Скачать: CL | DM;
Вниз
Проблема с DBGrid Найти похожие ветки
← →
abp © (2002-11-25 15:23) [0]У меня 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 все забивается пробелом.
Не пойму где я маху дал??????
← →
Johnmen © (2002-11-25 15:46) [1]1.Если это не трехзвенка, то чем оправдано использование TClientDataSet вместо специализированных компонент ?
2. Разбираться в вышеприведенном коде вряд ли кто-то будет, в виду его крайней нечитабельности (мазохистов нет...:))
← →
abp © (2002-11-25 16:13) [2]Спасибо! Уже решил данную проблему
Страницы: 1 вся ветка
Текущий архив: 2002.12.12;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.017 c