Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Период между DateTimePicker1 и DateTimePicker2


Автор: ABUTAEV 18.5.2010, 21:15
Подскажите пожалуйста начинающему. У меня на форме ListBox1, ListBox2, ListBox3 и так далее.
В первом листе  -  в столбик записаны одни даты, во втором – записаны произведенные работы, в третьем - комментарии к этим работам и все по одной строчке. Как мне удалить во всех этих листах  до даты показанной в DateTimePicker1  и все после даты показанной в DateTimePicker2. То есть, меня интересует определенный период работы. Так как я пытаюсь познать программирование по самоучителям без наставников то очень Вас прошу пожалуйста , чтобы по понятнее. 
 smile 

Автор: Frees 18.5.2010, 21:59
Цитата(ABUTAEV @  19.5.2010,  00:15 Найти цитируемый пост)
ListBox1, ListBox2, ListBox3 и так далее.

вот что ты тут не так делаешь....TStringGrid тебе наверно нужен... откуда ты эти ListBox заполняешь?

Автор: kami 18.5.2010, 23:29
Цитата(ABUTAEV @  18.5.2010,  21:15 Найти цитируемый пост)
Как мне удалить во всех этих листах  до даты показанной в DateTimePicker1  и все после даты показанной в DateTimePicker2. 

Код

for i:=ListBox1.Count-1 downto 0 do
  if (StrToDate(ListBox1.items[i])<DateTimePicker1.Date) or (StrToDate(ListBox1.items[i])>DateTimePicker2.Date) then
    begin
      ListBox1.Items.Delete(i);
      ListBox2.Items.Delete(i);
      ListBox3.Items.Delete(i);
    end;

Комментарии, думаю, излишни. Проблема может возникнуть, когда количество записей в листбоксах отличается друг от друга.

Цитата(Frees @  18.5.2010,  21:59 Найти цитируемый пост)
.TStringGrid тебе наверно нужен

А я бы взял VT и скрывал/отображал ненужные ноды.

Автор: ABUTAEV 19.5.2010, 19:02
Спасибо  ОГРОМНОЕ kami,  работает как часы . Только после  NachZarpForm.DateTimePicker1.Date пришлось поставить «-1», ато немного не правильно  показывает:
Код

for k:=ZarpForm.ListBox1.Count-1 downto 0 do
  if (StrToDate(ZarpForm.ListBox1.items[k])<NachZarpForm.DateTimePicker1.Date-1) or (StrToDate(ZarpForm.ListBox1.items[k])>NachZarpForm.DateTimePicker2.Date) then
    begin
      ZarpForm.ListBox1.Items.Delete(k);
      ZarpForm.ListBox2.Items.Delete(k);
      ZarpForm.ListBox3.Items.Delete(k);
      ZarpForm.ListBox4.Items.Delete(k);
      ZarpForm.ListBox5.Items.Delete(k);
      ZarpForm.ListBox6.Items.Delete(k);
end;

                                                                 smile 



M
THandle
Модератор: используйте подсветку кода!

Автор: kami 19.5.2010, 19:17
Цитата(ABUTAEV @  19.5.2010,  19:02 Найти цитируемый пост)
  
ZarpForm.ListBox1.Items.Delete(k);
ZarpForm.ListBox2.Items.Delete(k);
ZarpForm.ListBox3.Items.Delete(k);
ZarpForm.ListBox4.Items.Delete(k);
ZarpForm.ListBox5.Items.Delete(k);
ZarpForm.ListBox6.Items.Delete(k);

Пожалей пользователя - пересмотри интерфейс. Шесть (!) листбоксов на одной форме, имхо, перебор.

Автор: ABUTAEV 19.5.2010, 19:23
А на счет  того что, я не так делаю, то конечно не так! Я начал изучать Delphi  по самоучителю только из - за интереса. Прочитал пол книжки, и захотелось программу по рабочим сделать.
В интернете не нашел ту которую мне надо,  пришлось пыхтеть самому. Вот ваш форум помог немного. А на счет TStringGrid, так я еще не дошел до этого. Но я доволен до невозможности.
Пусть неуклюже, но работает ведь!

Автор: ABUTAEV 31.5.2010, 22:22
Нагородил я с этими ЛистБоксами черт знает что.  Вроде все устраивало, пока на принтер не вывел. А здесь такая ерунда получается, что ничего не понятно. Каждый лист печатается отдельно, но все строчки  ложаться друг на дружку, и все норовять на левую сторону бумаги, в общем ничего не разберешь, что напечатано. Не подскажите ли как мне эти строчки во всех шести ЛистВоксах , что на одной Форме, уложить в один  лист, желательно конечно в StringGrid в отдельные колонки, чтобы потом можно было вывести на принтер.  smile.

Автор: kami 1.6.2010, 19:08
Цитата(ABUTAEV @  31.5.2010,  22:22 Найти цитируемый пост)
Нагородил я с этими ЛистБоксами черт знает что. 

Ага. smile На ошибках учатся. В другой раз будешь делать так, как удобно работать пользователю, а не так, как проще (по началу) писать код. В конечном итоге - это выйдет и проще по коду.

Цитата(ABUTAEV @  31.5.2010,  22:22 Найти цитируемый пост)
как мне эти строчки во всех шести ЛистВоксах , что на одной Форме, уложить в один  лист, желательно конечно в StringGrid в отдельные колонки, чтобы потом можно было вывести на принтер.

Мое имхо - лучше сразу переделать интерфейс на StringGrid. А еще лучше - на VirtualStringTree. Последнее (vt) в конечном итоге будет гораздо полезнее, ибо тогда станут легко решаемы довольно многие последующие задачи...

Автор: ABUTAEV 1.6.2010, 19:35
Спасибо за совет! Хорошо, попытаюсь.  smile 
А код всеже вот он:

  ZarpForm2.StringGrid1.RowCount:=ZarpForm.ListBox1.Count;
 ZarpForm2.StringGrid1.Cols[0]:=ZarpForm.ListBox1.Items;
 zarpForm2.StringGrid1.Cols[1]:=ZarpForm.ListBox2.Items;
 ZarpForm2.StringGrid1.Cols[2]:=ZarpForm.ListBox3.Items;
 zarpForm2.StringGrid1.Cols[3]:=ZarpForm.ListBox4.Items;
 ZarpForm2.StringGrid1.Cols[4]:=ZarpForm.ListBox5.Items;
 zarpForm2.StringGrid1.Cols[5]:=ZarpForm.ListBox6.Items;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)