Последние записи
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
2nd
Июн
Как по дню недели создать список дат?
Posted by Chas under Пост-обзор
Помогите создать процедурку, которая по дню недели создаст список дат. Например, у меня есть 5 checkbox, соответствующие дням неделям, потом определяем промежуток на который нам надо определить даты (пример-10, программно задается). и начиная с текущей даты надо вывести даты соответствующее дням неделям по checkbox.
Serge_Bliznykov:
я бы предложил такой вариант:
unit DateExampleUnit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
cbDayWeek: TComboBox;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var Year, Month, Day : word;
begin
DecodeDate(Date, Year, Month, Day);
DateTimePicker1.Date := EncodeDate(Year, Month, 1);
DateTimePicker2.Date := IncMonth(DateTimePicker1.Date, 1)-1;
cbDayWeek.ItemIndex := 0;
end;
function DayOfTheWeek(DateTime : TDateTime) : word;
const ISOFirstWeekDay = 2; {неделя по ISO начинается с понедельника}
begin
DayOfTheWeek := ((DayOfWeek(DateTime) - ISOFirstWeekDay + 7) mod 7) + 1;
end;
procedure TForm1.Button1Click(Sender: TObject);
var dat : TDateTime;
IncrementValue : integer;
begin
Memo1.Lines.Clear;
dat := DateTimePicker1.Date;
IncrementValue := 1; //на сколько дней увеличивать дату...
while dat <= DateTimePicker2.Date do begin
if DayOfTheWeek(Dat) = (cbDayWeek.ItemIndex + 1) then begin
Memo1.Lines.Add(DateToStr(Dat));
IncrementValue := 7; // нашли нужный день недели, теперь через каждые 7 дней
end;
dat := dat + IncrementValue;
end;
end;
end.[/code]
полные исходники в приложении (и отдельно EXEшник)
DateExample.rar (1.5 Кб) | |
DateExample_EXE_only.rar (142.0 Кб) |
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)