|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
datetimepicker+stringgrid выборка дат
Всем доброго времени суток! Помогите решить проблему:
Есть 2 формы - на одной заполненный грид, на второй грид и 2 datetimepicker для указания периода. По нажатию кнопки на форме №2 значение ячеек 12-го столбца грида формы №1 проверяется условием – если значение ячейки больше или равно значению пикера №1 и не больше значения пикера №2, то тогда вся строка переносится в грид №2. НО при нажатии на кнопку ничего не происходит. Возможно в коде я «хомутнул», но никак не могу найти где именно… Код:
var Form18: TForm18; t1,t3,x,y,temp,k,k1,k3,c,row: integer; t2,t4,tempstr,f,f1,f2: string; i, j: Integer; implementation ...... procedure TForm18.Button1Click(Sender: TObject); begin f:=datetostr(form18.DateTimePicker1.Date); f1:=datetostr(form18.DateTimePicker2.date); form18.sg1.RowCount:=2; for k:=2 to form4.sg1.RowCount do for k1:=12 to form18.sg1.RowCount do k3:=2; for k:=2 to form18.sg1.RowCount do //вариант проверки на соответствие №1 if form18.DateTimePicker1.Date=strtodate(form4.sg1.Cells[12,k])then if form18.DateTimePicker2.date=strtodate(form4.sg1.Cells[12,k]) then //вариант проверки на соответствие №2 {if datetostr(form18.DateTimePicker1.Date)>=form4.sg1.Cells[12,k] then if datetostr(form18.DateTimePicker2.date)<form4.sg1.Cells[12,k] then} //вариант проверки на соответствие №3 {if f>=form4.sg1.Cells[12,k] then if f1<form4.sg1.Cells[12,k] then} begin k3:=k3+1; for k1:=12 to form18.sg1.RowCount do begin //c:=1; form18.sg1.Cells[k1,k3]:=form4.sg1.Cells[k1,k]; end; form18.sg1.RowCount:=form18.sg1.RowCount+1; end; |
#2
|
|||
|
|||
Код:
if ((form18.DateTimePicker1.Date)>=strtodate(form4.sg1.Cells[12,k]) and (form18.DateTimePicker2.Date<=strtodate(form4.sg1.Cells[12,k]))) then begin k3:=k3+1; for k1:=12 to form18.sg1.RowCount do begin //c:=1; form18.sg1.Cells[k1,k3]:=form4.sg1.Cells[k1,k]; end; |
#3
|
|||
|
|||
Цитата:
пишет ошибку [Error] Unit18.pas(77): Operator not applicable to this operand type |
#4
|
|||
|
|||
не проверял но должно работать
Код:
procedure TForm1.Button1Click(Sender: TObject); var i ,r,j:integer; begin StringGrid2.RowCount:=2; r:=1; for i:=1 To StringGrid1.RowCount do begin] if (datetostr(StringGrid1.Cells[12,i])>=DateTimePicker1.date) and (datetostr(StringGrid1.Cells[12,i])<=DateTimePicker1.date) then begin for j:=0 to StringGrid2.ColCount do StringGrid2.Cells[j,r]:=StringGrid1.Cells[j,i]; inc(r); StringGrid2.RowCount:=StringGrid2.RowCount+1; end; end; Последний раз редактировалось freedomman, 08.12.2011 в 15:50. |
#5
|
|||
|
|||
Цитата:
Код:
procedure TForm18.Button1Click(Sender: TObject); begin form18.sg1.RowCount:=2; r:=1; for i:=1 To form4.sg1.RowCount do begin if (strtodate(form4.sg1.Cells[12,i])>=form18.DateTimePicker1.date) and (strtodate(form4.sg1.Cells[12,i])<=form18.DateTimePicker2.date) then begin for j:=0 to form4.sg1.ColCount do form18.sg1.Cells[j,r]:=form4.sg1.Cells[j,i]; inc(r); form18.sg1.RowCount:=form18.sg1.RowCount+1; end; end; end; Единственное НО - выкидывает окно с ошибкой - '' is not valid date - хотя я все пустые строки из первого грида убрал |