Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите в описании класса, Обработка даті 
V
    Опции темы
Rodman
Дата 4.10.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Дароф.

Мне попросили доделать вот этот исходник...
Код


unit frmTimePeriodSelector;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, ComCtrls, StdCtrls, DateUtils;

type
  TTimeUnitTypes = (All, Year, Month, Week, Day);
  TWeekNo = String[7]; // '2006:23' is week 23 in 2006
  TfmTimePeriodSelector = class(TForm)
    CmbTimeUnitSelector: TComboBox;
    BtnFirst: TButton;
    BtnPrior: TButton;
    BtnNext: TButton;
    BtnLast: TButton;
    LblFirst: TLabel;
    BtnFirstDate: TSpeedButton;
    BtnLastDate: TSpeedButton;
    LblLast: TLabel;
    DtpFirstDate: TDateTimePicker;
    DtpLastDate: TDateTimePicker;
    procedure CmbTimeUnitSelectorChange(Sender: TObject);
    procedure GotoFirstPossibleDate(Sender: TObject);
    procedure GotoLastPossibleDate(Sender: TObject);
    procedure GotoNextTimeUnit(Sender: TObject);
    procedure GotoPreviousTimeUnit(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BtnFirstDateClick(Sender: TObject);
    procedure BtnLastDateClick(Sender: TObject);
    procedure BtnFirstClick(Sender: TObject);
    procedure BtnLastClick(Sender: TObject);
  private
    fFirstAvailableDate : TDate;
    fLastAvailableDate  : TDate;
    fSelectedTimeUnit   : TTimeUnitTypes;
    fWholeTimeUnitsOnly : Boolean;
    fFirstSelectedDate  : TDate;
    fLastSelectedDate   : TDate;
    fFirstSelectedWeek  : TWeekNo;
    fLastSelectedWeek   : TWeekNo;
  public
    function  GetFirstAvailableDate: TDate;
    procedure SetFirstAvailableDate(TheFirstDate: TDate);
    function  GetLastAvailableDate: TDate;
    procedure SetLastAvailableDate(TheFirstDate: TDate);
    function GetSelectedTimeUnit: TTimeUnitTypes;
    procedure SetSelectedTimeUnit(TheSelectedTime: TTimeUnitTypes);
    function GetFirstSelectedDate: TDate;
    procedure SetFirstSelectedDate(TheFirstSelected: TDate);
    function GetLastSelectedDate: TDate;
    procedure SetLastSelectedDate(TheFirstDate: TDate);
    function GetFirstSelectedWeek: TWeekNo;
    procedure SetFirstSelectedWeek(TheFirstWeek: TWeekNo);
    function GetLastSelectedWeek: TWeekNo;
    procedure SetLastSelectedWeek(TheLastWeek: TWeekNo);
  published
    property FirstAvailableDate : TDate read fFirstAvailableDate write SetFirstAvailableDate;
    property LastAvailableDate  : TDate read fLastAvailableDate write SetLastAvailableDate;
    property SelectedTimeUnit   : TTimeUnitTypes read fSelectedTimeUnit write SetSelectedTimeUnit;
    property WholeTimeUnitsOnly : Boolean read fWholeTimeUnitsOnly write fWholeTimeUnitsOnly;
    property FirstSelectedDate  : TDate read fFirstSelectedDate write SetFirstSelectedDate;
    property LastSelectedDate   : TDate read fLastSelectedDate write SetLastSelectedDate;
    property FirstSelectedWeek  : TWeekNo read fFirstSelectedWeek write SetFirstSelectedWeek; // Calculation of the week number in which the FirstSelectedDate falls
    property LastSelectedWeek   : TWeekNo read fLastSelectedWeek write SetLastSelectedWeek; // Calculation of the week number in which the LastSelectedDate falls
  end;

var
  fmTimePeriodSelector: TfmTimePeriodSelector;

implementation

uses FrmCalend;

{$R *.dfm}

procedure TfmTimePeriodSelector.CmbTimeUnitSelectorChange(Sender: TObject);
begin
  if (CmbTimeUnitSelector.Text = 'All') then
  begin
    LblFirst.Caption := 'First Date';
    LblLast.Caption := 'Last Date';
    BtnFirstDate.Enabled:=True;
    BtnLastDate.Enabled:=True;
  end
  else if (CmbTimeUnitSelector.Text = 'Years') then
  begin
    LblFirst.Caption := 'First Year';
    LblLast.Caption := 'Last Year';
    BtnFirstDate.Enabled:=False;
    BtnLastDate.Enabled:=False;
    DtpFirstDate.Date:=StrToDate('01.01.'+copy(DateToStr(Now),7,4));
    DtpLastDate.Date:=StrToDate('31.12.'+copy(DateToStr(Now),7,4));
    fmTimePeriodSelector.BtnFirst.Enabled:=True;
    fmTimePeriodSelector.BtnLast.Enabled:=True;
  end
  else if (CmbTimeUnitSelector.Text = 'Quarters') then
  begin
    LblFirst.Caption := 'First Date';
    LblLast.Caption := 'Last Date';
    BtnFirstDate.Enabled:=True;
    if(StrToInt(copy(DateToStr(DtpFirstDate.Date),4,2)) in [1..3])then
    begin
      DtpFirstDate.Date:=StrToDate('01.01.'+copy(DateToStr(DtpFirstDate.Date),7,4));
      DtpLastDate.Date:=StrToDate(IntToStr(DaysInAMonth(StrToInt(copy(DateToStr(DtpFirstDate.Date),7,4)),3))+'.03'+'.'+copy(DateToStr(DtpFirstDate.Date),7,4));
    end
    else if(StrToInt(copy(DateToStr(DtpFirstDate.Date),4,2)) in [4..6])then
    begin
      DtpFirstDate.Date:=StrToDate('01.04.'+copy(DateToStr(DtpFirstDate.Date),7,4));
      DtpLastDate.Date:=StrToDate(IntToStr(DaysInAMonth(StrToInt(copy(DateToStr(DtpFirstDate.Date),7,4)),6))+'.06.'+copy(DateToStr(DtpFirstDate.Date),7,4));
    end
    else if(StrToInt(copy(DateToStr(DtpFirstDate.Date),4,2)) in [7..9])then
    begin
      DtpFirstDate.Date:=StrToDate('01.07.'+copy(DateToStr(DtpFirstDate.Date),7,4));
      DtpLastDate.Date:=StrToDate(IntToStr(DaysInAMonth(StrToInt(copy(DateToStr(DtpFirstDate.Date),7,4)),9))+'.09.'+copy(DateToStr(DtpFirstDate.Date),7,4));
    end
    else if(StrToInt(copy(DateToStr(DtpFirstDate.Date),4,2)) in [10..12])then
    begin
      DtpFirstDate.Date:=StrToDate('01.10.'+copy(DateToStr(DtpFirstDate.Date),7,4));
      DtpLastDate.Date:=StrToDate(IntToStr(DaysInAMonth(StrToInt(copy(DateToStr(DtpFirstDate.Date),7,4)),12))+'.12.'+copy(DateToStr(DtpFirstDate.Date),7,4));
    end
  end
  else if(CmbTimeUnitSelector.Text = 'Months')then
  begin
    LblFirst.Caption := 'First Day';
    LblLast.Caption := 'Last Day';
    BtnFirstDate.Enabled:=True;
  end
  else if(CmbTimeUnitSelector.Text = 'Weeks') then
  begin
    LblFirst.Caption := 'First Day';
    LblLast.Caption := 'Last Day';
    BtnFirstDate.Enabled:=True;
  end
  else if(CmbTimeUnitSelector.Text = 'Custom')then
  begin
    LblFirst.Caption := 'First Date';
    LblLast.Caption := 'Last Date';
    BtnFirstDate.Enabled:=True;
    BtnLastDate.Enabled:=True;
  end;
end;

procedure TfmTimePeriodSelector.GotoFirstPossibleDate(Sender: TObject);
begin
  // This event moves the StartDate of the SelectedTimeWindow to the first possible date
  
end;

procedure TfmTimePeriodSelector.GotoLastPossibleDate(Sender: TObject);
begin
  // This event moves the EndDate of the SelectedTimeWindow to the last possible date
end;

procedure TfmTimePeriodSelector.GotoNextTimeUnit(Sender: TObject);
begin
  // This event moves the rolling window one TimeUnit forward
end;

procedure TfmTimePeriodSelector.GotoPreviousTimeUnit(Sender: TObject);
begin
  //I added
end;

function  TfmTimePeriodSelector.GetFirstAvailableDate: TDate;
begin
  fFirstAvailableDate:=DtpFirstDate.Date;
  Result:=DtpFirstDate.Date;
end;

procedure TfmTimePeriodSelector.SetFirstAvailableDate(TheFirstDate: TDate);
begin
  if(fmTimePeriodSelector.CmbTimeUnitSelector.Text='All')then
  begin
    
  end
end;

function TfmTimePeriodSelector.GetLastAvailableDate: TDate;
begin
  // 55
end;

procedure TfmTimePeriodSelector.SetLastAvailableDate(TheFirstDate: TDate);
begin
  //dd
end;

function TfmTimePeriodSelector.GetSelectedTimeUnit: TTimeUnitTypes;
begin
  //gdfgdf
end;

procedure TfmTimePeriodSelector.SetSelectedTimeUnit(TheSelectedTime: TTimeUnitTypes);
begin
  //dasd
end;

function TfmTimePeriodSelector.GetFirstSelectedDate: TDate;
begin
  //dsf
end;

procedure TfmTimePeriodSelector.SetFirstSelectedDate(TheFirstSelected: TDate);
begin
  //dsfv
end;

function TfmTimePeriodSelector.GetLastSelectedDate: TDate;
begin
  //bgbdf
end;

procedure TfmTimePeriodSelector.SetLastSelectedDate(TheFirstDate: TDate);
begin
  //fsdfs
end;

function TfmTimePeriodSelector.GetFirstSelectedWeek: TWeekNo;
begin
  //bcxvbcvb
end;

procedure TfmTimePeriodSelector.SetFirstSelectedWeek(TheFirstWeek: TWeekNo);
begin
  //vzxbv
end;

function TfmTimePeriodSelector.GetLastSelectedWeek: TWeekNo;
begin
  //vxcv
end;

procedure TfmTimePeriodSelector.SetLastSelectedWeek(TheLastWeek: TWeekNo);
begin
  //bxcvb
end;

procedure TfmTimePeriodSelector.FormShow(Sender: TObject);
begin
  CmbTimeUnitSelector.Enabled:=True;
end;

procedure TfmTimePeriodSelector.BtnFirstDateClick(Sender: TObject);
begin
  FrmCalendShow.whichAdd:='First';
  FrmCalendShow.Show;
  if (CmbTimeUnitSelector.Text = 'All') then
  begin
    DtpFirstDate.Enabled:=True;
  end
  else if (CmbTimeUnitSelector.Text = 'Years') then
  begin
    DtpFirstDate.Enabled:=True;
  end
  else if (CmbTimeUnitSelector.Text = 'Quarters') then
  begin
    DtpFirstDate.Enabled:=True;
  end
  else if(CmbTimeUnitSelector.Text = 'Months')then
  begin
    DtpFirstDate.Enabled:=True;
  end
  else if(CmbTimeUnitSelector.Text = 'Weeks') then
  begin
    DtpFirstDate.Enabled:=True;
  end
  else if(CmbTimeUnitSelector.Text = 'Custom')then
  begin
    DtpFirstDate.Enabled:=True;
    DtpLastDate.Enabled:=True;
  end;
end;

procedure TfmTimePeriodSelector.BtnLastDateClick(Sender: TObject);
begin
  FrmCalendShow.whichAdd:='Last';
end;

procedure TfmTimePeriodSelector.BtnFirstClick(Sender: TObject);
begin
  if(CmbTimeUnitSelector.Text='Years')then
  begin
    DtpFirstDate.Date:=StrToDate('01.01.'+IntToStr(StrToInt(copy(DateToStr(DtpFirstDate.Date),7,4))-1));
    DtpLastDate.Date:=StrToDate('31.12.'+IntToStr(StrToInt(copy(DateToStr(DtpLastDate.Date),7,4))-1));
  end;
end;

procedure TfmTimePeriodSelector.BtnLastClick(Sender: TObject);
begin
  if(CmbTimeUnitSelector.Text='Years')then
  begin
    DtpFirstDate.Date:=StrToDate('01.01.'+IntToStr(StrToInt(copy(DateToStr(DtpFirstDate.Date),7,4))+1));
    DtpLastDate.Date:=StrToDate('31.12.'+IntToStr(StrToInt(copy(DateToStr(DtpLastDate.Date),7,4))+1));
  end;
end;

end.


я понимаю как все реализовать без класса, но нужно использовать
Как например описать один из property, что за переменные в нем используются??? и с ним связаны функция и процудура...

опишите хотя бы несколько этих функций, чтобы я понял принцип...

прошу не кидать ссылки на ООП... все на форуме пересмотрел...

Спасибо...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
tigger
Дата 5.10.2006, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: нет
Всего: 4



Может это тебе поможет

Код

//описание класса
type
  TMyClass = class
  private
    { Private declarations }
  A:integer;
  B:boolean;
  FDate: integer;
  procedure SetDate(const Value: integer);
  public
    { Public declarations }
  function  GetFirstAvailableDate: TDate;
  procedure SetFirstAvailableDate(TheFirstDate: TDate);
  property Date:integer read FDate write SetDate;
  end;

//тут реализация

function  TMyClass.GetFirstAvailableDate: TDate;
begin

end;

procedure TMyClass.SetDate(const Value: integer);
begin
  FDate := Value;
end;

procedure TMyClass.SetFirstAvailableDate(TheFirstDate: TDate);
begin

end;




сам понимаешь все данные от балды так ради знаний
а вообще пишешь свойство 
property WWW:integer;
нажимаешь Ctrl + Shift + C IDE сама достраивает описание


--------------------
user posted image
PM MAIL   Вверх
Rodman
Дата 5.10.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Спасибо.... но у меня появился вопрос еще...

Почему Get... функция??? Кому и что она возвращает???
PM MAIL WWW Skype GTalk YIM MSN   Вверх
jsa
Дата 5.10.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 1
Всего: 20



это просто иделогия программирования, есть свойства(поля и т.п.) класса, причем доступ к ним осуществялестя через так называемые seter... и geter.... методы. Нельзя напримую обращятся напрямую к свойству класса, только можно чере его geter-метод, отсуда и Get...


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Rodman
Дата 5.10.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



вот например

Код

function  TfmTimePeriodSelector.GetFirstAvailableDate: TDate;
begin
  fFirstAvailableDate:=DtpFirstDate.Date;///тут я расчитаю эту дату, но почему это функция???
  Result:=DtpFirstDate.Date;
end;
procedure TfmTimePeriodSelector.SetFirstAvailableDate(TheFirstDate: TDate);
begin
   FirstAvailableDate:=TheFirstDate;
end;


Добавлено @ 12:07 
jsa, т.е. не факт что значение нужно возврашать?!?!?!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
jsa
Дата 5.10.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 1
Всего: 20



только потому что этого может требовать функциональность программы, вполне может быть что это могла бы быть и процедура, все зависит от того, какая должна быть логика, вот и все

Добавлено @ 12:15 
Цитата

jsa, т.е. не факт что значение нужно возврашать?!?!?!

да, именно так


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Rodman
Дата 5.10.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 7
Всего: 122



Все чуваки... jsa и tigger СПАСИБО ОГРОМНОЕ... Понял...
PM MAIL WWW Skype GTalk YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1642 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.