![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте. Интересует метод работы с датой. Хочу соорудить календарь с своими событиями. Ранее делал хорошие проекты на конструкторах. Схему знаю. Вот только там отображалась текущая дату и просмотр другой даты был недоступен. Приходилось создавать файл с списком чисел, подгружать их, вообщем выполнять много обработок. И конечно же все это было ограниченно количеством записей даты. Записано данных на один год и на другой уже все.
Суть то в чем. Думаю в Delphi если возможности считывания системной даты с компьютера пользователя. Я не говорю о ShowMessage('Дата = '+DateToStr(Date));. Необходимо что бы можно было определить дату которая была или будет и соответственно будет строится таблица подобна компоненту MonthCalendar. Вот в DateTimePicker вводишь дату и тебе отображается нужные данные. Вот собственно подобное произведение хочу создать, но с добавление событий. Надеюсь суть вопроса доступно изложена. |
|
#4
|
||||
|
||||
|
Цитата:
Отрисовка месяца ручная. |
|
#5
|
|||
|
|||
|
Цитата:
Я вот запускаю Delphi генерирую пустой проект и уже 360 кб занимает. Есть еще Borland C++ там конечно проект занимает 24.5 кб, но если на системе не установлен модуль С++ то прога не запустится. А Delphi конечно 360 но запускается на чистой системе. Возможно и с этим календарем так же получается и на чистой системе он не запустится... |
|
#6
|
|||
|
|||
|
без форм прога занимает 16 Кб и идёт без проблем хоть-где (а в буилдере можно настроить чтобы тоже везде запускались)
|
|
#7
|
|||
|
|||
|
Цитата:
|
|
#8
|
||||
|
||||
|
у там же не VCL Form, а окна (Windows)
нужно про WinAPI почитать... |
|
#9
|
|||
|
|||
|
Вообщем как я понял WinAPI это использование (ресурсов) компонентов Windows. Таким образом мы не создаем собственную форму, а используем формы Windows что позволяет с экономить размер программы. Но вот тогда получается будет больше возни с кодами, каждый объект нужно вручную создавать, прописывать его свойства и т.д. и т.п.
И все же я не понял как толком создать форму, просто чистую форму для обзора. Может подскажете ![]() |
|
#10
|
||||
|
||||
|
Цитата:
2. Возни с кодом не просто больше, а намного больше. 3. Пример пустой формы: Код:
Program Test;
uses
Windows, Messages;
const
szAppName = 'test';
szCaptionName = 'test';
var
Window : HWND;
Msg : TMsg;
WndClass : TWndClassEX;
//---------------------------------------------------------
function MainProc(Wnd : HWND; Msg : Integer; wParam, lParam : Longint): Integer; stdcall;
begin
Result := 0;
case Msg of
WM_CLOSE :
begin
DestroyWindow(Wnd);
end;
WM_DESTROY :
begin
PostQuitMessage(0);
Exit;
end;
end;
Result := DefWindowProc(Wnd, Msg, wParam, lParam);
end;
//---------------------------------------------------------
begin
FillChar(WndClass, SizeOf(TWndClassEx), 0);
WndClass.cbSize := SizeOf(TWndClassEx);
WndClass.style := CS_HREDRAW or CS_VREDRAW;
WndClass.lpfnWndProc := @MainProc;
WndClass.cbClsExtra := 0;
WndClass.cbWndExtra := 0;
WndClass.hInstance := hInstance;
WndClass.hCursor := LoadCursor(0, IDC_ARROW);
WndClass.hbrBackGround := GetSysColorBrush(COLOR_BTNFACE);
WndClass.lpszClassName := szAppName;
if RegisterClassEx(WndClass) = 0 then
Halt(255);
Window := CreateWindowEx(0, szAppName, szCaptionName,
WS_OVERLAPPEDWINDOW,
0, 0, 800, 600, 0, 0, hInstance, NIL);
ShowWindow(Window, SW_SHOW);
while(GetMessage(Msg, 0, 0, 0)) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(Msg.wParam);
end. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Kaktuz (12.01.2012)
| ||
|
#11
|
|||
|
|||
|
Ну ничего себе код
Жесть! Спасибо большое за код. Думаю при написании чего-то малого пригодится, а так... Проще уже использовать стандартные формы Delphi хоть они и объемней. |
|
#12
|
||||
|
||||
|
Цитата:
|
|
#13
|
|||
|
|||
|
Цитата:
Хотя вот заставку делал... Конечно было бы лучше если бы она была менее объемной. Да это впрочем всегда выгодно. К тому же я так заметил в том календаре есть созданное внутреннее окно которое потом подгружается. Это тоже довольно таки интересно. Получается можно создать свою форму, закинуть в res подключить и потом только подгружать из ресурсов и использовать как нужно и создавать кнопки и т.д. не нужно, они уже созданы получается (что немного упрощает работу). ![]() |
|
#14
|
||||
|
||||
|
Цитата:
|