Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.01.2012, 00:03
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию Календарь

Здравствуйте. Интересует метод работы с датой. Хочу соорудить календарь с своими событиями. Ранее делал хорошие проекты на конструкторах. Схему знаю. Вот только там отображалась текущая дату и просмотр другой даты был недоступен. Приходилось создавать файл с списком чисел, подгружать их, вообщем выполнять много обработок. И конечно же все это было ограниченно количеством записей даты. Записано данных на один год и на другой уже все.
Суть то в чем. Думаю в Delphi если возможности считывания системной даты с компьютера пользователя. Я не говорю о ShowMessage('Дата = '+DateToStr(Date));. Необходимо что бы можно было определить дату которая была или будет и соответственно будет строится таблица подобна компоненту MonthCalendar. Вот в DateTimePicker вводишь дату и тебе отображается нужные данные.
Вот собственно подобное произведение хочу создать, но с добавление событий. Надеюсь суть вопроса доступно изложена.
Ответить с цитированием
  #2  
Старый 12.01.2012, 00:06
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Посмотри это.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 12.01.2012, 00:20
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Посмотри это.
Первый главный вопрос. Это написано на Delphi?
Удивление:
Размер: 56,5 кб.
Формы: отсутствуют.

Там случайно не MonthCalendar используются?
Ответить с цитированием
  #4  
Старый 12.01.2012, 00:48
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Kaktuz
Первый главный вопрос. Это написано на Delphi?
Удивление:
Размер: 56,5 кб.
Формы: отсутствуют.

Там случайно не MonthCalendar используются?
Написано на Дельфи.
Отрисовка месяца ручная.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 12.01.2012, 14:23
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Написано на Дельфи.
Отрисовка месяца ручная.
Я не пойму. Она не сжата, но все же размер довольно маленький. Как так получается?
Я вот запускаю Delphi генерирую пустой проект и уже 360 кб занимает.
Есть еще Borland C++ там конечно проект занимает 24.5 кб, но если на системе не установлен модуль С++ то прога не запустится. А Delphi конечно 360 но запускается на чистой системе. Возможно и с этим календарем так же получается и на чистой системе он не запустится...
Ответить с цитированием
  #6  
Старый 12.01.2012, 14:38
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

без форм прога занимает 16 Кб и идёт без проблем хоть-где (а в буилдере можно настроить чтобы тоже везде запускались)
Ответить с цитированием
  #7  
Старый 12.01.2012, 14:41
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pyro
без форм прога занимает 16 Кб и идёт без проблем хоть-где
Стоп! Но там же (в календаре) есть формы и не одна. Они... Они создаются в процессе выполнения кода или как? Расскажите, безумно интересно и в тоже время непонятно.
Ответить с цитированием
  #8  
Старый 12.01.2012, 14:51
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

у там же не VCL Form, а окна (Windows)
нужно про WinAPI почитать...
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #9  
Старый 12.01.2012, 20:52
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Вообщем как я понял WinAPI это использование (ресурсов) компонентов Windows. Таким образом мы не создаем собственную форму, а используем формы Windows что позволяет с экономить размер программы. Но вот тогда получается будет больше возни с кодами, каждый объект нужно вручную создавать, прописывать его свойства и т.д. и т.п.
И все же я не понял как толком создать форму, просто чистую форму для обзора. Может подскажете
Ответить с цитированием
  #10  
Старый 12.01.2012, 21:35
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Kaktuz
Вообщем как я понял WinAPI это использование (ресурсов) компонентов Windows. Таким образом мы не создаем собственную форму, а используем формы Windows что позволяет с экономить размер программы. Но вот тогда получается будет больше возни с кодами, каждый объект нужно вручную создавать, прописывать его свойства и т.д. и т.п.
И все же я не понял как толком создать форму, просто чистую форму для обзора. Может подскажете
1. Дельфи так же использует контролы Windows.
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.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Этот пользователь сказал Спасибо angvelem за это полезное сообщение:
Kaktuz (12.01.2012)
  #11  
Старый 12.01.2012, 22:05
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Ну ничего себе код Жесть!
Спасибо большое за код. Думаю при написании чего-то малого пригодится, а так... Проще уже использовать стандартные формы Delphi хоть они и объемней.
Ответить с цитированием
  #12  
Старый 12.01.2012, 22:08
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Kaktuz
... Думаю при написании чего-то малого пригодится, а так... Проще уже использовать стандартные формы Delphi хоть они и объемней.
Ну это как сказать, всё зависит от навыков и поставленной задачи.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #13  
Старый 12.01.2012, 22:52
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Ну это как сказать, всё зависит от навыков и поставленной задачи.
Да! Конечно. Если хорошо знать WinAPI то можно и с ним повозится. Но для меня это еще дремучий лес Хотя вот заставку делал... Конечно было бы лучше если бы она была менее объемной. Да это впрочем всегда выгодно. К тому же я так заметил в том календаре есть созданное внутреннее окно которое потом подгружается. Это тоже довольно таки интересно. Получается можно создать свою форму, закинуть в res подключить и потом только подгружать из ресурсов и использовать как нужно и создавать кнопки и т.д. не нужно, они уже созданы получается (что немного упрощает работу).
Ответить с цитированием
  #14  
Старый 12.01.2012, 23:00
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Kaktuz
... Получается можно создать свою форму, закинуть в res подключить и потом только подгружать из ресурсов и использовать как нужно и создавать кнопки и т.д. не нужно, они уже созданы получается (что немного упрощает работу).
Несколько не так, окно с контролами не создаётся извне, а описывается напрямую в RC файле (либо воспользоваться какой-либо визуальной средой для создания такого файла). Так можно описать и главное окно и все необходимые второстепенные.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter