⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 photoopunit.pas

📁 jvcl driver development envionment
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{******************************************************************

                       JEDI-VCL Demo

 Copyright (C) 2002 Project JEDI

 Original author:

 Contributor(s):

 You may retrieve the latest version of this file at the JEDI-JVCL
 home page, located at http://jvcl.sourceforge.net

 The contents of this file are used with permission, subject to
 the Mozilla Public License Version 1.1 (the "License"); you may
 not use this file except in compliance with the License. You may
 obtain a copy of the License at
 http://www.mozilla.org/MPL/MPL-1_1Final.html

 Software distributed under the License is distributed on an
 "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
 implied. See the License for the specific language governing
 rights and limitations under the License.

******************************************************************}

unit PhotoOpUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables, ComCtrls, StdCtrls, Buttons, ExtCtrls,
  ImgList, JvTFManager, JvTFDays, JvTFGlance, JvTFGlanceTextViewer, JvTFMonths, JvTFWeeks,
  JvComponent, JvExControls;

type
  TPhotoOpMain = class(TForm)
    utfScheduleManager1: TJvTFScheduleManager;
    StateImageList: TImageList;
    NeedApptsQuery: TQuery;
    ApptSchedulesQuery: TQuery;
    GetApptQuery: TQuery;
    DeleteApptLinkQuery: TQuery;
    DeleteApptQuery: TQuery;
    SchedulesQuery: TQuery;
    JvTFDaysPrinter1: TJvTFDaysPrinter;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    JvTFDays1: TJvTFDays;
    JvTFWeeks1: TJvTFWeeks;
    JvTFMonths1: TJvTFMonths;
    GlanceTextViewer1: TJvTFGlanceTextViewer;
    GlanceTextViewer2: TJvTFGlanceTextViewer;
    Panel1: TPanel;
    ResourceCombo: TComboBox;
    PrevDateButton: TBitBtn;
    NextDateButton: TBitBtn;
    NewApptButton: TBitBtn;
    EditApptButton: TBitBtn;
    DeleteApptButton: TBitBtn;
    ViewSchedsButton: TBitBtn;
    HideSchedButton: TBitBtn;
    ShareButton: TBitBtn;
    TimeIncCombo: TComboBox;
    GotoDatePicker: TDateTimePicker;
    ModeCombo: TComboBox;
    DaysCombo: TComboBox;
    PrintButton: TBitBtn;
    dbUTF: TDatabase;
    procedure utfScheduleManager1PostAppt(Sender: TObject; Appt: TJvTFAppt);
    procedure utfScheduleManager1DeleteAppt(Sender: TObject; Appt: TJvTFAppt);
    procedure utfScheduleManager1RefreshAppt(Sender: TObject; Appt: TJvTFAppt);
    procedure ModeComboChange(Sender: TObject);
    procedure ViewSchedsButtonClick(Sender: TObject);
    procedure HideSchedButtonClick(Sender: TObject);
    procedure ResourceComboChange(Sender: TObject);
    procedure DaysComboChange(Sender: TObject);
    procedure ShareButtonClick(Sender: TObject);
    procedure PrevDateButtonClick(Sender: TObject);
    procedure NextDateButtonClick(Sender: TObject);
    procedure GotoDatePickerChange(Sender: TObject);
    procedure GotoDatePickerUserInput(Sender: TObject;
      const UserString: String; var DateAndTime: TDateTime;
      var AllowChange: Boolean);
    procedure TimeIncComboChange(Sender: TObject);
    procedure NewApptButtonClick(Sender: TObject);
    procedure EditApptButtonClick(Sender: TObject);
    procedure DeleteApptButtonClick(Sender: TObject);
    procedure JvTFDays1DateChanging(Sender: TObject; var NewDate: TDate);
    procedure JvTFDays1DateChanged(Sender: TObject);
    procedure JvTFDays1GranularityChanged(Sender: TObject);
    procedure JvTFDays1DblClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure PrintButtonClick(Sender: TObject);
    procedure JvTFDaysPrinter1ApptProgress(Sender: TObject; Current,
      Total: Integer);
    procedure JvTFDaysPrinter1AssembleProgress(Sender: TObject; Current,
      Total: Integer);
    procedure JvTFDaysPrinter1PrintProgress(Sender: TObject; Current,
      Total: Integer);
    procedure utfScheduleManager1LoadBatch(Sender: TObject; BatchName: String;
      BatchStartDate, BatchEndDate: TDate);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  PhotoOpMain: TPhotoOpMain;

implementation

Uses VisibleResourcesUnit, ShareUnit, ApptEditUnit, PrintProgressUnit;

{$R *.DFM}

procedure TPhotoOpMain.utfScheduleManager1PostAppt(Sender: TObject;
  Appt: TJvTFAppt);
var
  I : Integer;
begin
  With GetApptQuery do
    Begin
      ParamByName('ApptID').AsString := Appt.ID;
      Open;

      If RecordCount > 0 Then // SQL RecordCount not reliable except on local tables
        Edit
      Else
        Begin
          Insert;
          FieldByName('ApptID').AsString := Appt.ID;
        End;

      FieldByName('StartDate').AsDateTime := Appt.StartDate;
      FieldByName('StartTime').AsDateTime := Appt.StartTime;
      FieldByName('EndDate').AsDateTime := Appt.EndDate;
      FieldByName('EndTime').AsDateTime := Appt.EndTime;
      FieldByName('Description').AsString := Appt.Description;
      FieldByName('AlarmEnabled').AsBoolean := Appt.AlarmEnabled;
      FieldByName('AlarmAdvance').AsInteger := Appt.AlarmAdvance;
      Post;
      Close;
    End;

  // Now update the Appt --> Schedule relationship
  // First delete all entries in the Link table
  With DeleteApptLinkQuery do
    Begin
      ParamByName('ApptID').AsString := Appt.ID;
      ExecSQL;
    End;
  // Now "refresh" the link table by adding a record for each of the names
  // in Appt.Schedules.  We will use the ApptSchedulesQuery to update the table.
  With ApptSchedulesQuery do
    Begin
      ParamByName('ApptID').AsString := Appt.ID;
      Open;
      For I := 0 to Appt.ScheduleCount - 1 do
        Begin
          Insert;
          FieldByName('ApptID').AsString := Appt.ID;
          FieldByName('SchedName').AsString := Appt.Schedules[I];
          Post;
        End;
      Close;
    End;
end;

procedure TPhotoOpMain.utfScheduleManager1DeleteAppt(Sender: TObject;
  Appt: TJvTFAppt);
begin
  // First delete the appointment from the appointment table
  With DeleteApptQuery do
    Begin
      ParamByName('ApptID').AsString := Appt.ID;
      ExecSQL;
    End;

  // Next, delete the related records from the link table
  With DeleteApptLinkQuery do
    Begin
      ParamByName('ApptID').AsString := Appt.ID;
      ExecSQL;
    End;
end;

procedure TPhotoOpMain.utfScheduleManager1RefreshAppt(Sender: TObject;
  Appt: TJvTFAppt);
begin
  With GetApptQuery do
    Begin
      ParamByName('ApptID').AsString := Appt.ID;
      Open;
      If RecordCount = 1 Then
        Begin
          Appt.SetStartEnd(FieldByName('StartDate').AsDateTime,
                           FieldByName('StartTime').AsDateTime,
                           FieldByName('EndDate').AsDateTime,
                           FieldByName('EndTime').AsDateTime);
          Appt.Description := FieldByName('Description').AsString;
          Appt.AlarmEnabled := FieldByName('AlarmEnabled').AsBoolean;
          Appt.AlarmAdvance := FieldByName('AlarmAdvance').AsInteger;
        End;
      Close;
    End;

  // Now update the Appt --> Schedule(s) relationship
  Appt.ClearSchedules;
  With ApptSchedulesQuery do
    Begin
      ParamByName('ApptID').AsString := Appt.ID;
      Open;
      First;
      While not EOF do
        Begin
          Appt.AddSchedule(FieldByName('SchedName').AsString);
          Next;
        End;
      Close; // ApptSchedulesQuery
    End;
end;

procedure TPhotoOpMain.ModeComboChange(Sender: TObject);
begin
  If ModeCombo.ItemIndex = 0 Then
    // Single mode
    Begin
      // display the appropriate tool bar controls
      ViewSchedsButton.Visible := False;
      HideSchedButton.Visible := False;
      ShareButton.Visible := False;
      ResourceCombo.Visible := True;
      DaysCombo.Visible := True;
      // synchronize the date
      JvTFDays1.Template.LinearStartDate := GotoDatePicker.Date;
      // "activate" the Linear template
      JvTFDays1.Template.ActiveTemplate := agtLinear;
      // set the column grouping
      JvTFDays1.Grouping := grResource;
    End
  Else
    // Group mode
    Begin
      // display the appropriate tool bar controls
      ViewSchedsButton.Visible := True;
      HideSchedButton.Visible := True;
      ShareButton.Visible := True;
      ResourceCombo.Visible := False;
      DaysCombo.Visible := False;
      // synchronize the date
      JvTFDays1.Template.CompDate := GotoDatePicker.Date;
      // "activate" the Comparative template
      JvTFDays1.Template.ActiveTemplate := agtComparative;
      // set the column grouping
      JvTFDays1.Grouping := grDate;
    End;
end;

procedure TPhotoOpMain.ViewSchedsButtonClick(Sender: TObject);
begin
  VisibleResources.ShowModal;
end;

procedure TPhotoOpMain.HideSchedButtonClick(Sender: TObject);
var
  I,
  NameIndex : Integer;
  NameList : TStringList;
begin
  NameList := TStringList.Create;

  Try
    With JvTFDays1 do
      Begin
        If ValidSelection Then
          Begin
            For I := SelStart.X to SelEnd.X do
              NameList.Add(Cols[I].SchedName);

            For I := 0 to NameList.Count - 1 do
              Begin
                NameIndex := Template.CompNames.IndexOf(NameList[I]);
                If NameIndex > -1 Then
                  Template.CompNames.Delete(NameIndex);
              End;
          End
        Else
          MessageDlg('Please select a schedule to hide.', mtInformation, [mbOK], 0);
      End;
  Finally
    NameList.Free;
  End;
end;

procedure TPhotoOpMain.ResourceComboChange(Sender: TObject);
begin
  JvTFDays1.Template.LinearName := ResourceCombo.Text;
  JvTFWeeks1.SchedNames.Clear;
  JvTFWeeks1.SchedNames.Add(ResourceCombo.Text);
  JvTFWeeks1.Refresh;
  JvTFMonths1.SchedNames.Clear;
  JvTFMonths1.SchedNames.Add(ResourceCombo.Text);
  JvTFMonths1.Refresh;
end;

procedure TPhotoOpMain.DaysComboChange(Sender: TObject);
begin
  Case DaysCombo.ItemIndex of
    0 : JvTFDays1.Template.LinearDayCount := 31;
    1 : JvTFDays1.Template.LinearDayCount := 14;
    2 : JvTFDays1.Template.LinearDayCount := 7;
    3 : JvTFDays1.Template.LinearDayCount := 5;
    4 : JvTFDays1.Template.LinearDayCount := 3;
    5 : JvTFDays1.Template.LinearDayCount := 2;
    6 : JvTFDays1.Template.LinearDayCount := 1;
  End;
end;

procedure TPhotoOpMain.ShareButtonClick(Sender: TObject);
begin
  If JvTFDays1.SelAppt <> nil Then
    Share.ShowModal
  Else
    MessageDlg('Please select an appointment.', mtInformation, [mbOK], 0);
end;

procedure TPhotoOpMain.PrevDateButtonClick(Sender: TObject);
begin
  JvTFDays1.PrevDate;
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -