К сожалению на работе перешли на лиц. софт. А Delphi не есть необходимое ПО в сфере работы. Поэтому сижу тут на Лазарусе. Поэтому функции и модули в Делфи поищешь сам.
А Общая идея такая:
1. Заводим переменные dYear, dMonth, dDay: Word; (Хотя для дня и месяца было бы достаточно Byte)
2. Для указанного года и месяца (в переменных dYear, dMonth - см. п.1) вычисляем количество дней в месяце:
2.1 Можно составить табличку. В лазарусе она выглядит так:
Код:
type
TDayTable = array[1..12] of Word;
const
MonthDays: array [Boolean] of TDayTable =
((31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),
(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31));
2.2 Почему Таблицы 2? Да потому, что год может быть високосный. А определить это можно функцией IsLeapYear, которая по указанному году вернет True/False взависимости от високосности.
2.3 По результату этой функции выбираешь, по какой табличке тебе смотреть количество дней в месяце.
3. Теперь необходимо узнать, с какого дня недели начинается месяц. В этом поможет функция DayOfWeek. Если не ошибаюсь, то она вернет результат от 0..6, где 0 - Воскресенье. (Проверь!)
4. Ну а дальше отрисовываешь свой компонент как тебе нравится. Ты знаешь сколько дней в месяце, знаешь с какого дня начинать. Заводишь табличку в 7 столбцов. первую строку подписываешь
пн...
вс. А со следующей строки, с определенного столбца (см. п.3) заполняешь построчно от
1 до
количество дней в месяце (см. п.2). А если указанный день совпадает с номером отрисовываемого дня, можншь его пометить как-нибудь.
Собственно, это касается вычислений, необходимых для правильного построения календаря (примитивных собственно

). А что касается создания компонент - это уже другой вопрос, и вариантов реализации уйма.
Можешь создавать массив TRect, в котором запоминать "расположение" дней в месяце. И по клике по компоненту проверять, в какой день кликнули, и выполнить соответствующее действие. Можешь усложнить структуру и хранить информацию, например, о цвете отрисовки (например для пометки важного дня). Можешь добавить хинты для каждого дня и т.п. Вобщем, тут полет фантазии.
Почему я это расписал? Да потому, что меня спугнула твоя идея создания календаря из контролов в ДизайнТайм. Расставление лейблов и прочего. Нафига? Посмотри тут на формуме, полно тем про динамическое создание компонент. Очень удобно 