最近のアクセス:
GXScheduler ユーザーコントロール

GXScheduler ユーザーコントロールを使用すると、開催されるイベントのスケジュールを管理できます。イベントは日、週、月ごとに表示でき、マウスを使ってコントロール上で直接追加、更新、削除できます。
イメージ:55167.png
イベントは、ユーザーコントロールの実装によって提供される既定の編集コントロールか、ナレッジベースで定義されている Web Panel オブジェクトまたは Transaction オブジェクトを使用して編集することができます。
GXScheduler ユーザーコントロールは、ツールボックスの [ 拡張コントロール ] グループにあります:
イメージ:55168.jpg
使用するには、Web Panel オブジェクトの [ Web Layout ] にドラッグします。次のダイアログが表示されます:
イメージ:55205.png
[ Download ] ボタンを押すと、いくつかのオブジェクトがナレッジベースの Scheduler フォルダに自動的にインポートされます:
イメージ:55170.jpg
インポートされるオブジェクトの 1 つが "SchedulerEvents" 構造化データタイプ (SDT) です。この SDT にロードされるイベントは、GXScheduler ユーザーコントロールに表示されるイベントです。SDT の構造は次のとおりです:
イメージ:55171.jpg
"SchedulerEvents" SDT をロードするには、Data Provider オブジェクトまたは Procedure オブジェクトを定義する必要があります。その後、このオブジェクトの名前を GXScheduler コントロール (Web パネルに含まれている) の [ Load Events Object ] プロパティで指定する必要があります。
: 既定では、GXScheduler コントロールの [ Load Events Object ] プロパティには "LoadEventsSampleDP" が設定されます (Scheduler フォルダに格納されているサンプルデータプロバイダーの名前。このフォルダには、"LoadEventsSampleProc" という名前のサンプルプロシージャーも格納されています)。その実装を確認して、独自のオブジェクトを定義できます。

指定された期間に発生したイベントを "SchedulerEvents" SDT にロードする責任があるデータプロバイダー (またはプロシージャー) は、次のパラメーターを受け取る必要があります:
Parm(&dateFrom, &dateTo);
 // &dateFrom と &dateTo は Date データタイプに基づく
データプロバイダーの [ Output ] プロパティには、"SchedulerEvents" 構造化データタイプを設定する必要があります。
次のデータ プロバイダー ソースは、最初のスクリーンショットを表示するために使用したものに対応します ("LoadEventsSampleDP" ソースと同様です):
SchedulerEvents
{
    Items
    {
        event
        {
            Id = "Sample1"
            Name = "World Cup Match"
            Notes = "Venezuela vs Uruguay"
            Link = "http://www.genexus.com"            
            StartTime = ymDHMStoT(&Today.Year(),&Today.Month(),&Today.Day(),01,30,0)
            EndTime = ymDHMStoT(&Today.Year(),&Today.Month(),&Today.Day(),02,30,0)
            AdditionalInformation = ""
        }
        event
        {
            Id = "Sample2"
            Name = "World Cup Match"
            Notes = "Argentina vs Brasil"
            Link = "http://www.gxtechnical.com"
            StartTime = ymDHMStoT(&Today.Year(),&Today.Month(),&Today.Day(),01,30,0)
            EndTime = ymDHMStoT(&Today.Year(),&Today.Month(),&Today.Day(),02,30,0)
            AdditionalInformation = ""
        }
    }
}
固定データを SDT にロードするためのデータ プロバイダー ソースを定義する代わりに、データベース上のデータをロードしたいとします。そのために、次の Transaction オブジェクトがあるとします:
Event
{
   EventId* 
   EventStart
   EventEnd
   EventDescription
   EventDetails
}
SchedulerEvents SDT をデータプロバイダーの [ Source ] にドラッグし、次に示すようにソースを編集します:

SchedulerEvents
{
   items
   {
      event
         where EventStart >= &dateFrom
         where EventEnd   <= &dateTo
      {
         Id                    = EventId
         StartTime             = EventStart
         EndTime               = EventEnd
         Notes                 = EventDescription
         AdditionalInformation = EventDetails
      }
   }
}  

GXScheduler イベントの追加、更新、削除を解決するための代替手段 


1) Transaction オブジェクトの使用

イベントを更新するには、GXScheduler コントロールの [ Details Form Object ] プロパティで Transaction オブジェクトを選択することができます。
このトランザクションは、特定の Parm ルールで定義する必要があります。このトランザクションの Id は、Character(20) データタイプに基づく必要があります ("SchedulerEvents" SDT の EventId として)。EventStart 項目属性および EventEnd 項目属性は、DateTime データタイプに基づく必要があります。
parm(&Mode,EventId, &EventStart,&EventEnd);
default(EventStart,&EventStart);
default(EventEnd,&EventEnd);


2) コントロールイベントとビジネスコンポーネントの使用

GXScheduler コントロールを Web パネルの [ Web Layout ] にドラッグすると、Web パネルの [ Events ] エレメントにコードが追加されます。
Web パネルの [ Events ] エレメントと [ Variables ] エレメントを確認して、コードを分析します。
次の 4 つのイベントがあります:
  • EventAdded
  • EventDeleted
  • EventUpdated
  • EventSelected
これらのイベントは、スケジューラのセルをダブルクリックすることでトリガーされます (たとえば、EventAdded イベントは、ユーザーが GXScheduler の空のセルをダブルクリックするとトリガーされます)。
GXScheduler コントロールがこれらのイベントのいずれかをトリガーするとき、変数 (既定では、変数は &currentEvent という名前で、そのタイプは SchedulerEvents.Event) にバインドされている [ CurrentEvent ] プロパティがロードされます。
言い換えれば、EventAdded、EventDeleted、EventUpdated、EventSelected のいずれかがトリガーされるたびに、追加、変更、削除、選択されたイベントに関して取得されたデータが &currentEvent 変数に格納されます。 
GXScheduler コントロールが EventAdded イベントをトリガーしたときに、データベース内にイベントを格納したいとします。そのためには、次の手順に従います:
  1. イベントをモデル化する Transaction オブジェクトを作成します。その [ Business Component ] プロパティを True に設定します。
  2. GXScheduler コントロールを含む Web Panel オブジェクトで、前の手順で定義したビジネス コンポーネント タイプに基づく変数を定義します (変数名を &businessComponent とします)。
  3. GXScheduler ユーザーコントロール (名前は gxScheduler1) を使用する Web パネル内で次のイベントを定義します:

Event gxScheduler1.EventAdded
    &businessComponent.EventId = &currentEvent.Id
    &businessComponent.EventStart = &currentEvent.StartTime
    &businessComponent.EventEnd = &currentEvent.EndTime    
    &businessComponent.EventDescription = &currentEvent.Notes
    &businessComponent.EventDetails = &currentEvent.AdditionalInformation
    &businessComponent.Save()
    commit    
EndEvent


3) コントロールメソッドの使用

コントロールを直接使用せずに GXScheduler イベントを使用することもできます。そのために、次のメソッドを使用できます:
  • AddEvent(Events.Event) メソッド: 追加するイベントを受け取ります。
  • UpdateEvent(Events.Event) メソッド: 更新するイベントを受け取ります。
  • DeleteEvent(Events.Event) メソッド: 削除するイベントを受け取ります。
たとえば、Web パネルに次の内容を挿入できます:
イメージ:55173.jpg
また、これらのイベントを定義する必要があります。&auxEvent は、追加、更新、削除するイベントです:

Event 'AddEvent'
      do 'GetRecords'
      gxScheduler1.AddEvent(&auxEvent)
EndEvent

Event 'UpdateEvent'
      do 'GetRecords'
      gxScheduler1.UpdateEvent(&auxEvent)
EndEvent 

Event'DeleteEvent'
      do 'GetRecords'
      gxScheduler1.DeleteEvent(&auxEvent)
EndEvent 

Sub'GetRecords'
      &auxEvent.Id = &id
      &auxEvent.Name = &name
      &auxEvent.StartTime = &startTime
      &auxEvent.EndTime = &endtime
      &auxEvent.Notes = &notes
      &auxEvent.AdditionalInformation = &additionalInformation
EndSub

考慮事項

  • 1 つの Web Panel オブジェクトで使用できる GXScheduler コントロールは 1 つだけです。ベース実装 (dhtmlx.com) ではこの機能を使用できません。
  • SDT ベース構造を変更して、たとえば Id データタイプを char(20) から numeric(4) に変更できます。ただし、それは GeneXus 内で配布されるため、GeneXus バージョンを更新するとこれらの変更が失われることに留意してください。

実装とライセンス許諾

GXScheduler コントロールは、ベースコントロールとして dhtmlxScheduler を使用します。
このコントロールに関するライセンス情報については、こちらをご覧ください。
    

サブページ
Created: 14/09/18 03:05 by Admin Last update: 24/03/25 23:57 by Admin
カテゴリ
Powered by GXwiki 3.0