
- •Курсовий проект (робота)
- •Перелік умовних позначень, символів, одиниць, скорочень і термінів
- •1 Опис предметної області
- •Огляд існуючих методів вирішення завдання
- •1.2 Огляд існуючих програмних засобів, що вирішують аналогічні завдання
- •1.3 Постановка завдання роботи.
- •2 Аналіз програмних засобів
- •2.1 Огляд особливостей мови програмування.
- •2.2 Огляд особливостей обраного компілятору.
- •2.3 Огляд бібліотек що використовується в роботі
- •3.3 Висновки з розділу 3
- •4 Посібник програміста
- •4.1 Призначення та умови застосування програми
- •4.2 Структура програми
- •5 Інструкція користувача
- •Висновки
- •Список літератури
- •Додаток а Текст програми
Висновки
У даній курсовій роботі розроблений додаток „Система футбольного тренування” для автоматизації роботи головного тренера команди.
Головною метою при виконанні завдання була розробка зручного інструмента для створення тактичних схем пересувань гравців. Дана функція розроблена і задовольняє усі вимоги кінцевого користувача.
Також значущим було створення інструмента для зручного ведення календарної роботи.
У ході написання програми було прийнято рішення відмовитися від стандартного інтерфейсу вікон і розробити власний дизайн. Максимальна зручність і простота стала основним пріоритетом. На основі простих елементів було створено складні структури і взаємозв’язки.
Програмний продукт має різні рівні доступу для запобігання зміни або видалення даних працівниками у власних корисних цілях.
При виконанні завдання проведена відладка роботи системи з метою виявлення збійних ситуацій та помилок. В результаті відладки критичних помилок не виявлено.
Програмний продукт має широкий спектр можливостей та відповідає усім вимогам до подібних програм.
Список літератури
Всмысле не по стандарту?
Петров В.Н. Информационные системы – СПб.: Питер, 2003. – 688 с.
http://www.fifa.com/
Подбельский В.В. Язык С#. Базовый курс – СПб.: Питер, 2011. – 384 с.
Натан А. WPF 4. Подробное руководство – СПб.: Питер, 2011. – 880 с.
Зозуля Ю. Windows 7 на 100% – СПб.: Видавництво Пітер 2011. – 213с.
Гері Хансен, Джеймс Хансен Бази даних: розробка і керування: Пер. з англ. – М.: ЗАО Видавництво БІНОМ, 1999. – 704с.
Додаток а Текст програми
//App.Resources
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources\Slider.xaml" />
<ResourceDictionary Source="Resources\ScrollBar.xaml" />
<ResourceDictionary>
<Color x:Key="textColor1">#ffffff</Color>
<Color x:Key="textColor2">#000000</Color>
<LinearGradientBrush x:Key="TransparentColor" StartPoint="0, 0.5" EndPoint="1, 0.5">
<GradientStop Color="#44ffffff" Offset="0" />
<GradientStop Color="#ddf1f1f1" Offset="0.5" />
<GradientStop Color="#44f6f6f6" Offset="1" />
</LinearGradientBrush>
<RadialGradientBrush x:Key="Back" GradientOrigin="0.5,1">
<GradientStop Color="#bcfaef" Offset="0" />
<GradientStop Color="#278cea" Offset="1" />
</RadialGradientBrush>
<Style x:Key="BorderStyle" TargetType="Border">
<Setter Property="Padding" Value="5,2,5,2" />
<Setter Property="Background" >
<Setter.Value>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#e6e7e7" Offset="0" />
<GradientStop Color="#b9eefd" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
<Setter Property="CornerRadius" Value="10" />
</Style>
<LinearGradientBrush x:Key="GradientForListBox" StartPoint="0,0" EndPoint="1,0.001"> <GradientBrush.GradientStops>
<GradientStopCollection>
<GradientStop Color="White" Offset="0.5" />
<GradientStop Color="#FFB4CAFF" Offset="0.6" />
<GradientStop Color="White" Offset="0.7"/>
</GradientStopCollection>
</GradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TabItemFill" StartPoint="0.5, 1" EndPoint="0.5, 0">
<GradientStop Color="#278cea" Offset="0" />
<GradientStop Color="#0265c1" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="BackgroundCalendarButton">
<GradientStop Color="#05aaff" Offset="0" />
<GradientStop Color="#ffffff" Offset="0.5" />
<GradientStop Color="#05aaff" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="BackgroundCalendarHeaderButton">
<GradientStop Color="#ffffff" Offset="0" />
<GradientStop Color="#ffffff" Offset="0.2" />
<GradientStop Color="#ffffff" Offset="0.8" />
<GradientStop Color="#ffffff" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="CalendarInfo_Background" StartPoint="0.5,0" EndPoint="0.5, 1"> <GradientStop Color="#f8ffde" Offset="0.15"/>
<GradientStop Color="#f2e8c8" Offset="0.85"/>
</LinearGradientBrush>
<FontFamily x:Key="MainFont">Comic Sans MS</FontFamily>
<ControlTemplate x:Key="PlayerButton" TargetType="lib:Player">
<Canvas Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" >
<Ellipse Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Fill="{TemplateBinding Background}"/>
<Ellipse Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Name="focus" Visibility="Collapsed">
<Ellipse.Fill>
<LinearGradientBrush>
<GradientStop Offset="0" Color="#55000000"/>
<GradientStop Offset="1" Color="#00000000"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
</Canvas>
<ControlTemplate.Triggers>
<Trigger Property="IsSelectedPlayer" Value="true" >
<Setter TargetName="focus" Property="Visibility" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
//MAINWINDOW – XAML
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:lib="clr-namespace:WpfApplication1"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
Title="MainWindow" Name="myWindow" Background="Aqua" WindowState="Maximized" FontFamily="Comic Sans MS">
<!--WindowState="Maximized" ResizeMode="NoResize" 1024x768 LOW SCREEN Height="768" Width="1600" Background="{StaticResource Back}"
Width="{Binding ElementName=myCanvasStretch,Path=Width}"
-->
<Window.Resources>
<lib:LegConverter x:Key="LegConverterRes"></lib:LegConverter>
<lib:InjuredConverter x:Key="InjuredConverterRes"></lib:InjuredConverter>
<lib:RentConverter x:Key="RentConverterRes"></lib:RentConverter>
<ControlTemplate x:Key="ButtonTemp" TargetType="Button">
<Border Name="Button_Bord" Width="50" Height="50" Margin="1,1,1,1" BorderBrush="Gray" BorderThickness="1" CornerRadius="10">
<Border.Background>
<LinearGradientBrush StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Color="#e6e7e7" Offset="0"/>
<GradientStop Color="#c5e6e7" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger >
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Button_Bord"
Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)"
To="#56b7f4"
Duration="0:0:0.3" >
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Button_Bord"
Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)"
To="#c5e6e7"
Duration="0:0:0.3">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style TargetType="{x:Type TabControl}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabControl">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border Background="{StaticResource TabItemFill}">
<TabPanel IsItemsHost="True"/>
</Border>
<Border BorderThickness="0"
Grid.Row="1"
Background="{StaticResource Back}">
<!--LOW SCREEN Background="{StaticResource Back}"-->
<ContentPresenter ContentSource="SelectedContent" Margin="0"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="{x:Type TabItem}">
<Setter Property="SnapsToDevicePixels" Value="true"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Border Padding="70, 10, 70, 10"
CornerRadius="10, 20,0 ,0" x:Name="PART_Bord">
<Border.Background>
<LinearGradientBrush StartPoint="0.5, 1" EndPoint="0.5, 0" >
<GradientStop Color="#278cea" Offset="0" />
<GradientStop Color="#ffffff" Offset="1" />
</LinearGradientBrush>
</Border.Background>
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" ContentSource="Header"/>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger >
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="PART_Bord"
Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)"
To="#b4e6fd"
Duration="0:0:0.3">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="PART_Bord"
Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)"
To="#278cea"
Duration="0:0:0.3">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
<MultiTrigger >
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="PART_Bord"
Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)"
To="#bcfaef"
Duration="0:0:0.3" >
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="PART_Bord"
Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)"
To="#ffffff"
Duration="0:0:0.3">
</ColorAnimation>
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="ListBox" x:Key="ListBoxTimeLine">
<Setter Property="SnapsToDevicePixels"
Value="true" />
<Setter Property="OverridesDefaultStyle"
Value="true" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility"
Value="Auto" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility"
Value="Auto" />
<Setter Property="ScrollViewer.CanContentScroll"
Value="true" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBox">
<Border Name="border_lbx"
Background="{StaticResource GradientForListBox}"
BorderBrush="#FF1D83B1"
BorderThickness="2" CornerRadius="3"
Margin="5">
<StackPanel Orientation="Vertical">
<Slider Margin="0,8,0,8" Style="{DynamicResource TimeLineSlider}" Name="sliderTimeLine"
Orientation="Horizontal"
TickPlacement="BottomRight" Panel.ZIndex="1" SmallChange="15" Maximum="900" Minimum="15" LargeChange="15" TickFrequency="15" IsSnapToTickEnabled="True" IsMoveToPointEnabled="True" ValueChanged="sliderTimeLine_ValueChanged" />
<ScrollViewer Height="140" Margin="0,5,0,0" VerticalScrollBarVisibility="Visible">
<StackPanel Margin="0" IsItemsHost="True" ScrollViewer.CanContentScroll="True" >
</StackPanel>
</ScrollViewer>
</StackPanel>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border Name="lbxi_border"
BorderThickness="2" CornerRadius="3"
SnapsToDevicePixels="True">
<StackPanel Orientation="Horizontal" Panel.ZIndex="0" Name="PART_PanelKletok">
<Border BorderBrush="Black" BorderThickness="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Name="PART_PlayerName" Text="{TemplateBinding Content}" Margin="0,0,0, 0" Width="77" />
<TextBox Grid.Column="1" Name="PART_EditPlayerName" Text="{TemplateBinding Content}" Margin="0,0,0, 0" Width="62" LostFocus="PART_EditPlayerName_LostFocus" Visibility="Collapsed" />
</Grid>
<Border.ContextMenu>
<ContextMenu>
<MenuItem Header="Перейменувати" Click="RenamePlayer_Click"/>
<MenuItem Header="Видалити" Click="DeletePlayer_Click"/>
</ContextMenu>
</Border.ContextMenu>
</Border>
<lib:Class1 DrawMethod="4" SliderValue="1" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown"></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="2" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown"></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="3" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown"></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="4" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="5" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="6" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="7" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="8" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="9" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="10" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="11" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="12" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="13" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="14" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="15" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="16" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="17" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="18" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="19" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="20" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown"></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="21" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="22" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="23" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="24" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="25" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="26" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="27" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="28" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="29" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="30" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="31" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="32" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="33" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="34" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="35" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="36" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="37" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="38" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="39" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="40" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="41" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="42" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="43" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="44" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="45" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="46" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="47" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="48" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="49" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="50" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="51" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="52" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="53" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="54" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="55" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="56" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="57" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="58" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="59" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
<lib:Class1 DrawMethod="0" SliderValue="60" MouseLeftButtonDown="Class1_MouseLeftButtonDown" MouseRightButtonDown="Class1_MouseRightButtonDown" ></lib:Class1>
</StackPanel>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="lbxi_border" Property="BorderBrush" Value="#DDD"></Setter>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="lbxi_border" Property="Background" Value="#aaa"></Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<TabControl Name="tabControl1">
<TabItem Header="Головна" Name="tabItem1" Selector.Selected="tabItem1_Selected">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="15" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<StackPanel Grid.Column="2" Orientation="Vertical">
<TextBlock Name="TimeText" Text="00:00" Width="auto" FontFamily="{StaticResource MainFont}" FontSize="32" />
<TextBlock Name="DateText" Text="18, December 2014" Width="auto" FontFamily="{StaticResource MainFont}" FontSize="22" />
</StackPanel>
<TextBlock Grid.Column="1" Grid.Row="0" Text="Наступний матч" TextAlignment="Center" FontSize="64" FontFamily="{StaticResource MainFont}">
<TextBlock.Foreground>
<LinearGradientBrush>
<GradientStop Color="{StaticResource textColor1}" Offset="0" />
<GradientStop Color="{StaticResource textColor2}" Offset="1" />
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
<!--Row 1-->
<Grid Grid.Column="1" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="10" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Width="500" Height="500" Margin="0, 100, 0, 0" Name="Home_Image" HorizontalAlignment="Right" Stretch="Fill" FlowDirection="LeftToRight" SnapsToDevicePixels="True">
<Image.Effect>
<DropShadowEffect BlurRadius="100" RenderingBias="Performance" ShadowDepth="50" Direction="90" />
</Image.Effect>
</Image>
<Image Grid.Column="2" Width="500" Height="500" Margin="0, 100, 0, 0" Name="Else_Image" HorizontalAlignment="Left" Stretch="Fill" FlowDirection="LeftToRight">
<Image.Effect>
<DropShadowEffect BlurRadius="100" RenderingBias="Performance" ShadowDepth="50" Direction="90" />
</Image.Effect>
</Image>
</Grid>
<!--Row 2-->
<TextBlock Grid.Column="1" Grid.Row="2" FontSize="48" FontFamily="{StaticResource MainFont}" HorizontalAlignment="Center" Name="NextMatch_Date">28.03.2014</TextBlock>
<!--Row 3-->
<Border Grid.Column="1" Grid.Row="3" Padding="10" Background="{StaticResource ResourceKey=TransparentColor}" HorizontalAlignment="Center">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.ColumnSpan="2" Text="Autantifacation" HorizontalAlignment="Center" FontFamily="{StaticResource MainFont}"/>
<TextBlock Grid.Row="1" Text="Login:" FontFamily="{StaticResource MainFont}"/>
<TextBox Grid.Row="1" Grid.Column="1" Margin="20, 0, 0, 0" Width="200" Name="UserLogin" />
<TextBlock Grid.Row="2" Text="Password:" FontFamily="{StaticResource MainFont}" />
<TextBox Grid.Row="2" Grid.Column="1" Margin="20, 0, 0, 0" Width="200" Name="UserPassword" />
<Button Grid.ColumnSpan="2" Grid.Row="3" Content="Connect" Name="ConnectButton" Click="Button_Connect_Click" />
<Button Grid.ColumnSpan="2" Grid.Row="3" Content="Exit" Name="ExitButton" Click="Button_Exit_Click" Visibility="Collapsed" />
</Grid>
</Border>
</Grid>
</TabItem>
<TabItem Header="Схема" Name="tabItem2" >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="15" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="10" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<!--Row 1-->
<Canvas Grid.Column="1" Grid.Row="1" Width="1050" Height="680" x:Name="Sheme" AllowDrop="True" MouseLeftButtonDown="Sheme_MouseLeftButtonDown" MouseEnter="Sheme_MouseEnter" MouseLeave="Sheme_MouseLeave" MouseMove="Sheme_MouseMove" MouseLeftButtonUp="Sheme_MouseLeftButtonUp" HorizontalAlignment="Left">
<Canvas.Background>
<LinearGradientBrush StartPoint="0, 0.5" EndPoint="1,0.5">
<GradientStop Color="#FF62D413" Offset="0"/>
<GradientStop Color="#FF58FF58" Offset="1"/>
</LinearGradientBrush>
</Canvas.Background>
<Canvas.RenderTransform>
<ScaleTransform ScaleX="1" ScaleY="1" CenterX="0" CenterY="0" />
</Canvas.RenderTransform>
<Line X1="525" Y1="0" X2="525" Y2="680" StrokeThickness="3" Stroke="White" />
<Polyline Points="0, 138.4 165,138.4 165,541.6 0,541.6" Stroke="White" StrokeThickness="3"/>
<Polyline Points="0,248.4 55,248.4 55,431.6 0,431.6" Stroke="White" StrokeThickness="3"/>
<Polyline Points="1050,138.4 885,138.4 885,541.6 1050,541.6" Stroke="White" StrokeThickness="3" />
<Polyline Points="1050,248.4 995,248.4 995,431.6 1050,431.6" Stroke="White" StrokeThickness="3"/>
<Ellipse Width="183" Height="183" Stroke="White" StrokeThickness="3" Canvas.Left="433.5" Canvas.Top="248.5" />
<Ellipse Width="8" Height="8" Stroke="White" Fill="White" StrokeThickness="3" Canvas.Left="521" Canvas.Top="336" />
<Ellipse Width="7" Height="7" Stroke="White" Fill="White" StrokeThickness="3" Canvas.Left="110" Canvas.Top="336" />
<Ellipse Width="7" Height="7" Stroke="White" Fill="White" StrokeThickness="3" Canvas.Left="940" Canvas.Top="336" />
</Canvas>
<Border Grid.Column="2" Grid.Row="1" Style="{StaticResource BorderStyle}" VerticalAlignment="Top">
<StackPanel Orientation="Vertical" VerticalAlignment="Top" Margin="0,0,0,50">
<Button Content="Створити" Template="{StaticResource ButtonTemp}" Click="Button_New_Click"/>
<Button Content="Відкрити" Template="{StaticResource ButtonTemp}" Click="Button_Import_Click" />
<Button Content="Зберегти" Template="{StaticResource ButtonTemp}" Click="Button_Export_Click" />
</StackPanel>
</Border>
<!--Row 2-->
<Border Grid.Column="1" Grid.Row="2" HorizontalAlignment="Left" Style="{StaticResource BorderStyle}" >
<StackPanel Orientation="Horizontal">
<Button Template="{StaticResource ButtonTemp}" Content="Курсор" Click="Button_Click_Cursor"/>
<Button Template="{StaticResource ButtonTemp}" Content="Додати" Click="Button_Click_Draw" ToolTip="Додати гравця" />
<Button Template="{StaticResource ButtonTemp}" Content="Выбор" Click="Button_Click_Select"/>
<Button Template="{StaticResource ButtonTemp}" Content="Кисть" Click="Button_Click_Brush" />
<xctk:ColorPicker Width="50" UsingAlphaChannel="False" ShowStandardColors="False" ShowAdvancedButton="False" SelectedColor="Yellow" ShowDropDownButton="False" Name="ClrPcker_Background" SelectedColorChanged="ClrPcker_Background_SelectedColorChanged"
>
</xctk:ColorPicker>
<StackPanel Orientation="Vertical">
<Slider Width="150" SmallChange="1" Maximum="20" Minimum="5" LargeChange="1" TickFrequency="1" IsSnapToTickEnabled="True" IsMoveToPointEnabled="True" Name="SizeSlider" Value="10" ValueChanged="SizeSlider_ValueChanged" />
<TextBlock HorizontalAlignment="Center" Text="{Binding Path=Value, ElementName=SizeSlider}" />
</StackPanel>
</StackPanel>
</Border>
<Border Grid.Column="1" Grid.Row="2" Style="{StaticResource BorderStyle}" HorizontalAlignment="Right">
<StackPanel Grid.Column="1" Grid.Row="2" Orientation="Horizontal">
<Button Template="{StaticResource ButtonTemp}" Content="Play" Click="Button_Play_Click" />
<Button Template="{StaticResource ButtonTemp}" Content="Pause" Click="Button_Pause_Click"/>
<Button Template="{StaticResource ButtonTemp}" Content="Stop" Click="Button_Stop_Click"/>
<Button HorizontalAlignment="Right" Content="Button" Height="34" Name="button1" Width="256" Click="button1_Click" Visibility="Collapsed"/>
</StackPanel>
</Border>
<!--Row 3-->
<!--Row 4-->
<ListBox Style="{StaticResource ListBoxTimeLine}" HorizontalAlignment="Left" Grid.Column="1" Grid.Row="4" Height="200" Width="auto" x:Name="listBox">
</ListBox>
</Grid>
</TabItem>
<TabItem Header="Склад" Name="TabItem3" Selector.Selected="TabItem3_SelectorChange">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="15" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<!--Row 0-->
<TextBlock Grid.Column="1" Grid.Row="0" Text="Гравці" TextAlignment="Left" FontSize="48" FontFamily="{StaticResource MainFont}" />
<!--Row 1-->
<DataGrid Grid.Column="1" Grid.Row="1" Name="dataGrid1" Height="400" FontSize="14"
AutoGenerateColumns="False" HorizontalAlignment="Left" SelectionChanged="dataGrid1_SelectionChanged"
CanUserReorderColumns="True" CanUserResizeColumns="True" CanUserResizeRows="False" CanUserDeleteRows="True" CanUserAddRows="True" CanUserSortColumns="True" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="Id" Width="auto" Binding="{Binding Path=id}" Visibility="Collapsed" />
<DataGridTextColumn Header="Ім'я" Width="auto" Binding="{Binding Path=name}" />
<DataGridTextColumn Header="Дата народження" Width="auto" Binding="{Binding ValidatesOnDataErrors=True, Path=birthday, StringFormat={}{0:dd.MM.yyyy}}" />
<DataGridTextColumn Header="Робоча нога" Width="auto" Binding="{Binding Path=leg, Converter={StaticResource LegConverterRes}}" />
<DataGridTextColumn Header="Національність" Width="auto" Binding="{Binding Path=nationality}" />
<DataGridTextColumn Header="Зріст" Width="auto" Binding="{Binding Path=growth}" />
<DataGridTextColumn Header="Вага" Width="auto" Binding="{Binding Path=weight}" />
<DataGridTextColumn Header="Номер" Width="auto" Binding="{Binding Path=playerNumber}" />
<DataGridTextColumn Header="Травмований" Width="auto" Binding="{Binding Path=injured, Converter={StaticResource InjuredConverterRes}}" />
<DataGridTextColumn Header="Аренда" Width="auto" Binding="{Binding Path=rent, Converter={StaticResource RentConverterRes}}" />
</DataGrid.Columns>
</DataGrid>
<lib:PlayerInfo Grid.Row="1" Grid.Column="2" x:Name="PlayerInfoElement" />
<!--Row 2-->
<StackPanel Grid.Column="1" Grid.Row="2" Orientation="Horizontal" >
<!--<Button Content="Призначити тренування" Template="{StaticResource ButtonTemp}" />-->
<Button Content="Змінити" Template="{StaticResource ButtonTemp}" Click="Button_ChangePlayerData_Click" />
<Button Content="Додати" Template="{StaticResource ButtonTemp}" Click="Button_AddNewPlayer_Click"/>
<Button Content="Видалити" Template="{StaticResource ButtonTemp}" Click="Button_DeletePlayer_Click"/>
<Button Click="PlayerInfoChange" Name="SecretButton">
<Button.Template>
<ControlTemplate>
<Rectangle Width="50" Height="50" Fill="Transparent" />
</ControlTemplate>
</Button.Template>
</Button>
</StackPanel>
</Grid>
</TabItem>
<TabItem Header="Календар">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<lib:CalendarUserControl Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="Calendar" />
<lib:CalendarInfo Padding="0,58,0,0" Grid.Column="1" HorizontalAlignment="Left" VerticalAlignment="Top" x:Name="DayInfo"/>
</Grid>
</TabItem>
</TabControl>
</ScrollViewer>
</Window>
// MAINWINDOW – C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;
using System.Windows.Media.Animation;
using System.IO;
using Microsoft.Win32;
using System.Windows.Threading;
using System.Xml.Linq;
using System.Data.OleDb;
namespace WpfApplication1
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public static string ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = Foot.accdb; ";
static bool IsTrener;
bool IsMenu;
byte MenuElement;
Cursor cursorMenu;
Rectangle ShemeBounds;
private List<Player> Players;
//Точки для рисования линий
private List<Point> BrushLinePoints = new List<Point>();
private List<Polyline> BrushLines = new List<Polyline>();
private bool ShemeTouch = false;
Slider sl = new Slider();
public static double SliderCurentValue=0;
private List<Storyboard> AnimationGroup;
OpenFileDialog op;
SaveFileDialog sv;
public MainWindow()
{
InitializeComponent();
IsTrener = false;
IsMenu = false;
cursorMenu = Cursors.Arrow;
Players = new List<Player>();
AnimationGroup = new List<Storyboard>();
DispatcherTimer timer = new DispatcherTimer(new TimeSpan(0, 0, 1), DispatcherPriority.Normal, delegate
{
this.TimeText.Text = DateTime.Now.ToString("HH:mm");
this.DateText.Text = DateTime.Now.Day + ", " + CalendarUserControl.GetMonthName(DateTime.Now.Month) + " " + DateTime.Now.Year;
}, this.Dispatcher);
this.AddHandler(CalendarUserControl.DayClickEvent, new RoutedEventHandler(Calendar_DayClick));
this.AddHandler(CalendarInfo.DataChangeEvent, new RoutedEventHandler(CalendarInfoChange));
this.AddHandler(PlayerInfo.PlayerChangeEvent, new RoutedEventHandler(PlayerInfoChange));
}
private void Button_Connect_Click(object sender, RoutedEventArgs e)
{
try
{
string sql = "SELECT TOP 1 isMain"
+ " FROM users"
+ " WHERE login='" + UserLogin.Text + "' AND password='" + UserPassword.Text + "'";
System.Data.DataSet das = WorkVithDB(sql, false);
if (Boolean.Parse(das.Tables[0].Rows[0][0].ToString()))
{
IsTrener = true;
UserLogin.IsEnabled = false;
UserPassword.IsEnabled = false;
ConnectButton.Visibility = Visibility.Collapsed;
ExitButton.Visibility = Visibility.Visible;
MessageBox.Show("Доброго дня, тренере!", "Доброго дня");
}
else
{
IsTrener = false;
UserLogin.IsEnabled = true;
UserPassword.IsEnabled = true;
ConnectButton.Visibility = Visibility.Visible;
ExitButton.Visibility = Visibility.Collapsed;
MessageBox.Show("Доброго дня, але Ви не тренер!", "Доброго дня");
}
}
catch (Exception)
{
MessageBox.Show("Невірний логін або пароль","Невірно!");
}
}
private void Button_Exit_Click(object sender, RoutedEventArgs e)
{
IsTrener = false;
UserLogin.IsEnabled = true;
UserPassword.IsEnabled = true;
ConnectButton.Visibility = Visibility.Visible;
ExitButton.Visibility = Visibility.Collapsed;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(listBox.SelectedItem.ToString());
//MessageBox.Show(Sheme.Children.Count.ToString());
}
private void Sheme_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (IsMenu)
{
if (MenuElement == 0)
{
Player pl1 = new Player();
Players.Add(pl1);
double size = SizeSlider.Value*2;
double x = e.GetPosition(Sheme).X;
double y = e.GetPosition(Sheme).Y - 20;
pl1.CreatePlayer(x, y,size, ClrPcker_Background.SelectedColor, Sheme);
pl1.ListBoxItemContext = "Player";
listBox.Items.Add(pl1.lbi);
}
else if (MenuElement == 2)
{
ShemeTouch = true;
BrushLinePoints.Clear();
BrushLinePoints.Add(new Point(e.GetPosition(Sheme).X,e.GetPosition(Sheme).Y));
Polyline pol = new Polyline();
pol.Points.Add(BrushLinePoints[0]);
BrushLines.Add(pol);
Sheme.Children.Add(pol);
}
}
}
private void Sheme_MouseEnter(object sender, MouseEventArgs e)
{
if (IsMenu)
{
this.Cursor = cursorMenu;
}
}
private void Sheme_MouseLeave(object sender, MouseEventArgs e)
{
this.Cursor = Cursors.Arrow;
}
private void Button_Click_Cursor(object sender, RoutedEventArgs e)
{
IsMenu = false;
if (Player.DragModePlayer == false)
{
Player.DragModePlayer = true;
}
}
private void Button_Click_Draw(object sender, RoutedEventArgs e)
{
IsMenu = true;
MenuElement = 0;
cursorMenu = Cursors.Hand;
if (Player.DragModePlayer)
{
Player.DragModePlayer = false;
}
}
private void Button_Click_Select(object sender, RoutedEventArgs e)
{
IsMenu = true;
MenuElement = 1;
cursorMenu = Cursors.SizeAll;
if (Player.DragModePlayer == false)
{
Player.DragModePlayer = true;
}
}
private void Button_Click_Brush(object sender, RoutedEventArgs e)
{
IsMenu = true;
MenuElement = 2;
cursorMenu = Cursors.Pen;
if (Player.DragModePlayer)
{
Player.DragModePlayer = false;
}
}
private void Sheme_MouseMove(object sender, MouseEventArgs e)
{
if (IsMenu)
{
if (ShemeTouch)
{
BrushLinePoints.Add(new Point(e.GetPosition(Sheme).X,e.GetPosition(Sheme).Y));
Polyline pl = new Polyline();
foreach (var item in BrushLinePoints)
{
pl.Points.Add(item);
}
pl.Stroke = new SolidColorBrush(ClrPcker_Background.SelectedColor);
pl.StrokeThickness = 5;
Canvas.SetZIndex(pl, 0);
pl.SnapsToDevicePixels = true;
Sheme.Children.Remove(BrushLines.Last());
BrushLines.Remove(BrushLines.Last());
Sheme.Children.Add(pl);
BrushLines.Add(pl);
}
}
}
private void Sheme_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (IsMenu)
{
ShemeTouch = false;
}
}
private void Class1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Class1 cl1 = sender as Class1;
sl = listBox.Template.FindName("sliderTimeLine", listBox) as Slider;
sl.Value = cl1.SliderValue * 15;
}
private void Class1_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
Class1 cl1 = sender as Class1;
sl = listBox.Template.FindName("sliderTimeLine", listBox) as Slider;
sl.Value = cl1.SliderValue * 15;
}
private void sliderTimeLine_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
SliderCurentValue = ((sender as Slider).Value/15)-1;
RedrawAllPlayers();
}
private void RedrawAllPlayers()
{
foreach (Player item in Players)
{
item.RedrawAllPointsPlayer();
}
}
private Storyboard sb = new Storyboard();
private void Button_Play_Click(object sender, RoutedEventArgs e)
{
sb.Children.Clear();
foreach (var item in Players)
{
sb.Children.Add(item.AnimationPlayer());
sb.Completed += new EventHandler(sb_Completed);
}
sb.Begin();
}
void sb_Completed(object sender, EventArgs e)
{
sb.Stop(); }
private void Button_Pause_Click(object sender, RoutedEventArgs e)
{ sb.Pause(); }
private void Button_Stop_Click(object sender, RoutedEventArgs e)
{ sb.Stop(); }
private void Button_New_Click(object sender, RoutedEventArgs e)
{ MessageBoxResult result= MessageBox.Show("Зберегти поточний документ", "Новий документ", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
switch (result)
{
case MessageBoxResult.Yes:
Button_Export_Click(sender, e);
sb.Stop();
sb.Children.Clear();
foreach (Player item in Sheme.Children.OfType<Player>().ToArray())
{
Sheme.Children.Remove(item);
}
listBox.Items.Clear();
Players.Clear();
break;
case MessageBoxResult.No:
sb.Stop();
sb.Children.Clear();
foreach (Player item in Sheme.Children.OfType<Player>().ToArray())
{
Sheme.Children.Remove(item);
}
listBox.Items.Clear();
Players.Clear();
break;
case MessageBoxResult.Cancel:
break;
}
}
List<Player> ImportPlayers;
private void Button_Import_Click(object sender, RoutedEventArgs e)
{ op = new OpenFileDialog();
op.FileName = "Document"; // Default file name
op.DefaultExt = ".xml"; // Default file extension
op.Title = "Open XML File";
op.Filter = "XML documents (.xml)|*.xml"; // Filter files by extension
if (op.ShowDialog() == true)
{
try
{
XDocument xDoc = new XDocument();
xDoc = XDocument.Load(op.FileName);
if (XmlToSheme(xDoc))
{
//Clear all previous information
sb.Stop();
sb.Children.Clear();
foreach (Player item in Sheme.Children.OfType<Player>().ToArray())
{
Sheme.Children.Remove(item);
}
listBox.Items.Clear();
Players.Clear();
//Add new Data
Players = ImportPlayers;
foreach (Player item in Players)
{
//Error
item.XmlToPlayerHelper1(Sheme, listBox); }
}
else
{
MessageBox.Show("Виникла помилка при імпортуванні!");
}
}
catch (Exception)
{
MessageBox.Show("Виникла помилка!");
}
}
}
private void Button_Export_Click(object sender, RoutedEventArgs e)
{
sv = new SaveFileDialog();
sv.FileName = "Document"; // Default file name
sv.DefaultExt = ".xml"; // Default file extension
sv.Title = "Save an XML File";
sv.Filter = "XML documents (.xml)|*.xml"; // Filter files by extension
if (sv.ShowDialog() == true)
{
XDocument xDoc = new XDocument();
xDoc.Add(ShemeToXml());
xDoc.Save(sv.FileName);
}
}
public XElement ShemeToXml()
{ XElement xElem = new XElement("Players");
foreach (var item in Players)
{
xElem.Add(item.PlayerToXml());
}
return xElem;
}
public bool XmlToSheme(XDocument XDoc)
{ try
{ XElement xEl = XDoc.Element("Players");
ImportPlayers = new List<Player>();
foreach (XNode node in xEl.Nodes().OfType<XElement>())
{
Player pl1 = new Player();
ImportPlayers.Add(pl1);
XElement el = (XElement)node;
pl1.ListBoxItemContext=el.Attribute("PlayerName").Value;
pl1.color = (Color)ColorConverter.ConvertFromString(el.Attribute("PlayerColor").Value);
pl1.Size = Double.Parse(el.Attribute("PlayerSize").Value);
foreach (XElement element in el.Descendants())
{
if (!pl1.XmlToPlayer(element))
{
return false;
}
}
}
return true;
}
catch (Exception ex)
{
return false;
}
}
private void RenamePlayer_Click(object sender, RoutedEventArgs e)
{
ListBoxItem l = (ListBoxItem)listBox.SelectedItem;
TextBlock tb=l.Template.FindName("PART_PlayerName", l) as TextBlock;
TextBox tbE = l.Template.FindName("PART_EditPlayerName", l) as TextBox;
tbE.Text = tb.Text;
tb.Visibility = Visibility.Collapsed;
tbE.Visibility = Visibility.Visible;
//l.Content = "pppgfgvbfvbcvbcvbcv";
}
private void PART_EditPlayerName_LostFocus(object sender, RoutedEventArgs e)
{
ListBoxItem l = (ListBoxItem)listBox.SelectedItem;
TextBlock tb = l.Template.FindName("PART_PlayerName", l) as TextBlock;
TextBox tbE = l.Template.FindName("PART_EditPlayerName", l) as TextBox;
l.Content = tbE.Text;
tb.Visibility = Visibility.Visible;
tbE.Visibility = Visibility.Collapsed;
}
private void DeletePlayer_Click(object sender, RoutedEventArgs e)
{
ListBoxItem l = (ListBoxItem)listBox.SelectedItem;
Player dsawl = Players.Find(p => p.lbi == l);
Sheme.Children.Remove(dsawl);
listBox.Items.Remove(l);
Players.Remove(dsawl);
}
private void ClrPcker_Background_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color> e)
{
try
{
ListBoxItem l = (ListBoxItem)listBox.SelectedItem;
Player dsawl = Players.Find(p => p.lbi == l);
dsawl.PlayerChangeColor(ClrPcker_Background.SelectedColor);
} catch (Exception) { } }
private void SizeSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{ try
{
ListBoxItem l = (ListBoxItem)listBox.SelectedItem;
Player dsawl = Players.Find(p => p.lbi == l);
dsawl.PlayerChangeSize(SizeSlider.Value * 2);
}
catch (Exception) { } }
//Вкладка "Склад команди"
private void TabItem3_SelectorChange(object sender, RoutedEventArgs e)
{
try
{
dataGrid1.ItemsSource = null;
string sql = "Select * FROM players";//
System.Data.DataSet ds = WorkVithDB(sql, false);
dataGrid1.ItemsSource = ds.Tables[0].DefaultView;
System.Data.DataRowView dsl = dataGrid1.Items[0] as System.Data.DataRowView;
PlayerInfoElement.SetPlayerInfo(dsl[0].ToString());
}
catch (Exception) { }
}
private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{ try
{
System.Data.DataRowView dsl = dataGrid1.SelectedItem as System.Data.DataRowView;
PlayerInfoElement.SetPlayerInfo(dsl[0].ToString());
}
catch (Exception) { }
}
private void Button_ChangePlayerData_Click(object sender, RoutedEventArgs e)
{ PlayerInfoElement.EditPlayerInfo(false); }
private void Button_AddNewPlayer_Click(object sender, RoutedEventArgs e)
{ PlayerInfoElement.EditPlayerInfo(true); }
private void Button_DeletePlayer_Click(object sender, RoutedEventArgs e)
{ if (dataGrid1.SelectedIndex >= 0) {
MessageBoxResult result = MessageBox.Show("Ви впевнені, що хочете видалити гравця", "Видалення елементу", MessageBoxButton.YesNo, MessageBoxImage.Question);
System.Data.DataRowView dsl = dataGrid1.SelectedItem as System.Data.DataRowView;
string idI=dsl[0].ToString();
switch (result)
{
case MessageBoxResult.Yes:
string sql = "DELETE * FROM Players WHERE id="+idI;
WorkVithDB(sql,true);
break;
case MessageBoxResult.No:
break; } } else {
MessageBox.Show("Для видалення гравця його необхідно обрати!", "Видалення елементу", MessageBoxButton.OK, MessageBoxImage.Error);
} }
private void PlayerInfoChange(object sender, RoutedEventArgs e)
{ dataGrid1.UnselectAll();
dataGrid1.UpdateLayout();
TabItem3_SelectorChange(sender, e);
dataGrid1.UnselectAll();
dataGrid1.UpdateLayout(); }
//Календар
private void Calendar_DayClick(object sender, RoutedEventArgs e)
{ DayInfo.CalendarInfoSetTime(((CalendarUserControl)e.OriginalSource).CurentDate);
}
private void CalendarInfoChange(object sender, RoutedEventArgs e)
{ Calendar.UserControl_Loaded(sender, e); }
//Не календарь)
private void tabItem1_Selected(object sender, RoutedEventArgs e)
{
string sql = "SELECT TOP 1 clubs.image, games.home, games.gameDate"
+ " FROM games INNER JOIN clubs ON games.oponent=clubs.id"
+ " WHERE games.gameDate>=#" + DateTime.Now.Date.ToString("yyyy/MM/dd").Replace('.', '/') + "#"
+ " ORDER BY games.gameDate ASC";
System.Data.DataSet dataSet = WorkVithDB(sql, false);
if (Boolean.Parse(dataSet.Tables[0].Rows[0][1].ToString()))
{
Home_Image.Source = new BitmapImage(new Uri("/WpfApplication1;component/Images/dynamo-kyiv-logo.png", UriKind.Relative));
string AppDirectory = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
AppDirectory += @"\images\" + dataSet.Tables[0].Rows[0][0].ToString();
BitmapImage bm1 = new BitmapImage();
bm1.BeginInit();
bm1.UriSource = new Uri(AppDirectory, UriKind.RelativeOrAbsolute);
bm1.CacheOption = BitmapCacheOption.OnLoad;
bm1.EndInit();
Else_Image.Source = bm1;
}
else
{
Else_Image.Source = new BitmapImage(new Uri("/WpfApplication1;component/Images/dynamo-kyiv-logo.png", UriKind.Relative));
string AppDirectory = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
AppDirectory += @"\images\" + dataSet.Tables[0].Rows[0][0].ToString();
BitmapImage bm1 = new BitmapImage();
bm1.BeginInit();
bm1.UriSource = new Uri(AppDirectory, UriKind.RelativeOrAbsolute);
bm1.CacheOption = BitmapCacheOption.OnLoad;
bm1.EndInit();
Home_Image.Source = bm1;
}
NextMatch_Date.Text = dataSet.Tables[0].Rows[0][2].ToString().Substring(0,10);
}
public static System.Data.DataSet WorkVithDB(string query, bool execute)
{
OleDbConnection connection = new OleDbConnection(MainWindow.ConnectionString);
OleDbCommand command = new OleDbCommand(query, connection);
connection.Open();
if (execute)
{ command.ExecuteNonQuery();
return null; }
else
{ OleDbDataAdapter da = new OleDbDataAdapter(command);
System.Data.DataSet ds = new System.Data.DataSet();
da.Fill(ds);
return ds; }
connection.Close(); }
}}
//CLASSPLAYER – C#
class Player: Thumb
{
private List<PositionOfPlayer> Points;
private List<Point> Bezye;
private List<double> Time;
public Color color;
public double Size;
public ListBoxItem lbi;
public String ListBoxItemContext {
get { return lbi.Content.ToString(); }
set { lbi.Content = value; }
}
private static bool dragm = true;
public static bool DragModePlayer
{
get { return dragm; }
set { dragm = value; }
}
public static readonly DependencyProperty IsSelectedPlayerProperty = DependencyProperty.Register("IsSelectedPlayer", typeof(bool), typeof(Player),
new FrameworkPropertyMetadata((bool)false));
public bool IsSelectedPlayer
{
get { return (bool)base.GetValue(IsSelectedPlayerProperty); }
set { base.SetValue(IsSelectedPlayerProperty, value); }
}
private Class1 cl1;
public Player()
{
Points = new List<PositionOfPlayer>();
Bezye = new List<Point>();
Time = new List<double>();
color = new Color();
Size = 20d;
lbi = new ListBoxItem();
cl1 = new Class1();
this.Focusable = true;
this.GotFocus +=new RoutedEventHandler(Player_GotFocus);
lbi.GotFocus += new RoutedEventHandler(Player_GotFocus);
lbi.Unselected += new RoutedEventHandler(Player_Lost_Select);
this.DragDelta += new DragDeltaEventHandler(onDragDelta);
lbi.AddHandler(Class1.ContextChangeEvent, new RoutedEventHandler(ContextChangeAdd));
lbi.AddHandler(Class1.ContextChangeDeleteEvent, new RoutedEventHandler(ContextChangeDelete));
}
public override string ToString()
{ string dd="";
for (int i = 0; i < Points.Count; i++)
{
dd += Points[i].ToString()+"\n";
}
return dd; }
public void CreatePlayer(double PositionX, double PositionY, double NewSize, Color playerColor, Canvas canvas)
{ Points.Add(new PositionOfPlayer(PositionX, PositionY, 0));
color = playerColor;
Size = NewSize;
Canvas.SetLeft(this, Points[0].XPosition);
Canvas.SetTop(this, Points[0].YPosition );
Canvas.SetZIndex(this, 1);
Background = SetColor();
Width = Size;
Height = Size;
this.Template = this.FindResource("PlayerButton") as ControlTemplate;
canvas.Children.Add(this);}
public RadialGradientBrush SetColor()
{ RadialGradientBrush r = new RadialGradientBrush();
r.GradientStops.Add(new GradientStop(Colors.White, 0.2));
r.GradientStops.Add(new GradientStop(color, 1d));
return r; }
public void PlayerChangeColor(Color NewColor)
{ color = NewColor;
this.Background = SetColor();
}
public void PlayerChangeSize(double NewSize)
{ Size = NewSize;
this.Width = NewSize;
this.Height = NewSize;
}
static void onDragDelta(object sender, DragDeltaEventArgs e)
{ if (dragm)
{ Player pl = sender as Player;
int counter=-1;
for (int i = 0; i < pl.Points.Count; i++)
{ if (MainWindow.SliderCurentValue == (double)pl.Points[i].Second)
{ counter = i;
break;
} }
if (counter != -1)
{
pl.Points[counter].XPosition += e.HorizontalChange;
pl.Points[counter].YPosition += e.VerticalChange;
Canvas.SetLeft(pl, pl.Points[counter].XPosition);
Canvas.SetTop(pl, pl.Points[counter].YPosition);
} } }
private void Player_GotFocus(object sender, RoutedEventArgs e)
{
this.IsSelectedPlayer = true;
this.lbi.IsSelected = true;
}
private void Player_Lost_Select(object sender, RoutedEventArgs e)
{
this.IsSelectedPlayer = false;
}
private void ContextChangeAdd(object sender, RoutedEventArgs e)
{ cl1=e.OriginalSource as Class1;
int index=-1;
int previousIndex = 0;
for(int i=0; i < Points.Count; i++)
{ if ((Points[i].Second < cl1.SliderValue))
{ previousIndex = i;
}
if ((Points[i].Second == cl1.SliderValue - 1))
{ index = i;
break;
} }
if (index == -1)
{
Points.Add(new PositionOfPlayer(Points[previousIndex].XPosition, Points[previousIndex].YPosition, cl1.SliderValue - 1));
} Points.Sort(SortListOfPlayers);
RedrawListBoxItem();
}
private int SortListOfPlayers(PositionOfPlayer pl1, PositionOfPlayer pl2)
{
if (pl1.Second > pl2.Second)
{
return 1;
}
else if (pl1.Second < pl2.Second)
{
return -1;
}
else return 0;
}
private void RedrawListBoxItem()
{
StackPanel sp = (StackPanel)lbi.Template.FindName("PART_PanelKletok", lbi);
int HowManyPoints = Points.Count;
int counter = 0;
PositionOfPlayer pos = Points[counter];
bool flagExit=false;
byte HowDraw=0;
for (int i = 1; i < 61; i++)
{ HowDraw = 0;
if (pos.Second + 1 == i)
{
counter += 1;
if (HowManyPoints > counter)
{
flagExit = false;
pos = Points[counter];
HowDraw = 5; }
else
{
flagExit = true;
HowDraw = 3; }
if (counter == 1)
{ if (flagExit)
{
HowDraw = 4;
}
else
{
HowDraw = 1; } }
} else
{ if (!lagExit) {
HowDraw = 2; } }
cl1 = sp.Children[i] as Class1;
cl1.DrawMethod = HowDraw; } }
private void ContextChangeDelete(object sender, RoutedEventArgs e)
{ cl1=e.OriginalSource as Class1;
Points.RemoveAt(Points.FindIndex(FindListVithSecond));
Points.Sort(SortListOfPlayers);
RedrawListBoxItem(); }
private bool FindListVithSecond(PositionOfPlayer pl1)
{ if (pl1.Second == cl1.SliderValue-1)
return true;
else return false; }
public void RedrawAllPointsPlayer()
{ int index = -1;
int previousIndex = 0;
for (int i = 0; i < Points.Count; i++)
{ if ((Points[i].Second < MainWindow.SliderCurentValue))
{ previousIndex = i;
} if ((Points[i].Second == MainWindow.SliderCurentValue))
{ index = i;
break; } }
if (index != -1)
{
Canvas.SetLeft(this, Points[index].XPosition);
Canvas.SetTop(this, Points[index].YPosition);
}
else {
double[] XYmas = PointBetweenTwoPoints(previousIndex);
if (XYmas != null)
{ Canvas.SetLeft(this, XYmas[0]);
Canvas.SetTop(this, XYmas[1]);
} } }
public double[] PointBetweenTwoPoints(int indexP)
{ try
{ double durationSeconds =Points[indexP+1].Second - Points[indexP].Second;
double position =MainWindow.SliderCurentValue- Points[indexP].Second;
double[] mas = new double[2];
mas[0] = Points[indexP].XPosition + ((Points[indexP + 1].XPosition - Points[indexP].XPosition) * (position / durationSeconds));
mas[1] = Points[indexP].YPosition + ((Points[indexP + 1].YPosition - Points[indexP].YPosition) * (position / durationSeconds));
return mas; }
catch (Exception e)
{ return null; } }
public Storyboard AnimationPlayer()
{ DoubleAnimationUsingKeyFrames translationXAnimation
= new DoubleAnimationUsingKeyFrames();
DoubleAnimationUsingKeyFrames translationYAnimation
= new DoubleAnimationUsingKeyFrames();
for (int i = 0; i < Points.Count; i++)
{
translationXAnimation.KeyFrames.Add(
new LinearDoubleKeyFrame(
Points[i].XPosition, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(Points[i].Second))) // KeyTime
);
translationYAnimation.KeyFrames.Add(
new LinearDoubleKeyFrame(
Points[i].YPosition, // Target value (KeyValue)
KeyTime.FromTimeSpan(TimeSpan.FromSeconds(Points[i].Second))) // KeyTime
); }
translationXAnimation.RepeatBehavior = new RepeatBehavior(1);
translationYAnimation.RepeatBehavior = new RepeatBehavior(1);
Storyboard.SetTarget(translationXAnimation, this);
Storyboard.SetTargetProperty(
translationXAnimation, new PropertyPath("(Canvas.Left)"));
Storyboard.SetTarget(translationYAnimation, this);
Storyboard.SetTargetProperty(
translationYAnimation, new PropertyPath("(Canvas.Top)"));
Storyboard translationStoryboard = new Storyboard();
translationStoryboard.Children.Add(translationXAnimation);
translationStoryboard.Children.Add(translationYAnimation);
return translationStoryboard;
}
public XElement PlayerToXml()
{ XElement xelPlayer = new XElement("Player");
xelPlayer.Add(new XAttribute("PlayerName", ListBoxItemContext));
xelPlayer.Add(new XAttribute("PlayerColor", color));
xelPlayer.Add(new XAttribute("PlayerSize", Size));
foreach (var item in Points)
{
xelPlayer.Add(item.PositionOfPlayerToXml());
} return xelPlayer;
}
public bool XmlToPlayer(XElement xEl)
{ try
{ double x, y;
int s;
x = double.Parse(xEl.Attribute("XPosition").Value.ToString(), System.Globalization.CultureInfo.InvariantCulture);
y = double.Parse(xEl.Attribute("YPosition").Value.ToString(), System.Globalization.CultureInfo.InvariantCulture);
s=Convert.ToInt32(xEl.Attribute("Second").Value);
PositionOfPlayer NewPosition = new PositionOfPlayer(x, y, s);
Points.Add(NewPosition);
return true;
}
catch (Exception)
{
return false;
}
}
public void XmlToPlayerHelper1(Canvas canvas, ListBox lb)
{ lb.Items.Add(lbi);
Canvas.SetLeft(this, Points[0].XPosition);
Canvas.SetTop(this, Points[0].YPosition);
Canvas.SetZIndex(this, 1);
Background = SetColor(); ;
Width = Size;
Height = Size;
this.Template = this.FindResource("PlayerButton") as ControlTemplate;
canvas.Children.Add(this);
Points.Sort(SortListOfPlayers);
lb.UpdateLayout();
RedrawListBoxItem();
}
}
//CALENDATUSERCONTROL – XAML
<UserControl x:Class="WpfApplication1.CalendarUserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" Loaded="UserControl_Loaded">
<Grid Width="{Binding Path=Width, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}"
Height="{Binding Path=Height, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}">
<Grid.Resources>
<Style TargetType="Button" x:Key="EarlyMounth">
<Setter Property="Template">
<Setter.Value> <ControlTemplate>
<Grid>
<Border Name="EarlyMonth_Border" CornerRadius="5" BorderBrush="Black" BorderThickness="1" Margin="5" Padding="5" Width="{TemplateBinding Width}"
Height="{TemplateBinding Height}" Background="{StaticResource BackgroundCalendarButton}">
<Polygon Points="0,5 10,0 10,10" Fill="YellowGreen" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border> </Grid>
<ControlTemplate.Triggers> <MultiTrigger > <MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions> <MultiTrigger.EnterActions> <BeginStoryboard>
<Storyboard> <ColorAnimation Storyboard.TargetName="EarlyMonth_Border"toryboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" To="#fafca6" Duration="0:0:0.3" >
</ColorAnimation>
</Storyboard> </BeginStoryboard>
</MultiTrigger.EnterActions> <MultiTrigger.ExitActions> BeginStoryboard>
<Storyboard> <ColorAnimation Storyboard.TargetName="EarlyMonth_Border" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" To="#ffffff" Duration="0:0:0.3" > </ColorAnimation></Storyboard> </BeginStoryboard>
</MultiTrigger.ExitActions></MultiTrigger>ControlTemplate.Triggers>
</ControlTemplate> </Setter.Value> </Setter> </Style>
<Style TargetType="Button" x:Key="MounthHeader">
<Setter Property="Template">
<Setter.Value> <ControlTemplate> <Grid>
<Border Name="MonthHeader_Border" BorderThickness="1" BorderBrush="Black" CornerRadius="5" Padding="5" Background="{StaticResource BackgroundCalendarHeaderButton}">
<TextBlock HorizontalAlignment="Center" Text="{Binding Path=MounthName, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}}" /> </Border></Grid><ControlTemplate.Triggers><MultiTrigger >
<MultiTrigger.Conditions><Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions> <MultiTrigger.EnterActions><BeginStoryboard> <Storyboard>
<ColorAnimation Storyboard.TargetName="MonthHeader_Border" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" To="#fcfe7e" Duration="0:0:0.3" /><ColorAnimation Storyboard.TargetName="MonthHeader_Border" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[3].(GradientStop.Color)" To="#fcfe7e" Duration="0:0:0.3" /></Storyboard> </BeginStoryboard>
</MultiTrigger.EnterActions><MultiTrigger.ExitActions> <BeginStoryboard> <ColorAnimation Storyboard.TargetName="MonthHeader_Border"Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" To="#ffffff"Duration="0:0:0.3" />
<ColorAnimation Storyboard.TargetName="MonthHeader_Border" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[3].(GradientStop.Color)" To="#ffffff"Duration="0:0:0.3" /></Storyboard> </BeginStoryboard> </MultiTrigger.ExitActions> </MultiTrigger> </ControlTemplate.Triggers>
</ControlTemplate> </Setter.Value> </Setter> </Style>
<Style TargetType="Button" x:Key="NextMounth"><Setter Property="Template">
<Setter.Value><ControlTemplate><Grid>
<Border Name="NextMonth_Border" CornerRadius="5" BorderBrush="Black" BorderThickness="1" Margin="5" Padding="5" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Background="{StaticResource BackgroundCalendarButton}">
<Polygon Points="10,5 0,0 0,10" Fill="YellowGreen" HorizontalAlignment="Center" VerticalAlignment="Center" /></Border></Grid>
<ControlTemplate.Triggers><MultiTrigger > <MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" /></MultiTrigger.Conditions>
<MultiTrigger.EnterActions><BeginStoryboard><Storyboard><ColorAnimation Storyboard.TargetName="NextMonth_Border" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" To="#fcfe7e"Duration="0:0:0.3"></ColorAnimation> </Storyboard>
</BeginStoryboard></MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>BeginStoryboard> <Storyboard> <ColorAnimation
Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)" To="#ffffff"Duration="0:0:0.3">
</ColorAnimation></Storyboard></BeginStoryboard></MultiTrigger.ExitActions>
</MultiTrigger></ControlTemplate.Triggers> </ControlTemplate> </Setter.Value></Setter>
</Style>/Grid.Resources>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Grid.Column="0" Grid.Row="0" Style="{StaticResource EarlyMounth}" Click="ButtonEarlyMounth_Click" Name="PART_ButtonEarly" Background="Red"/>
<Button Grid.Column="1" Grid.Row="0" Style="{StaticResource MounthHeader}"/>
<Button Grid.Column="2" Grid.Row="0" Style="{StaticResource NextMounth}" Click="ButtonNextMounth_Click"/>
<Grid Grid.ColumnSpan="3" Grid.Row="1" Name="PART_DaysGrid">
<Grid.Resources>
<Style TargetType="Button" x:Key="DayButton">
<Setter Property="Template"> <Setter.Value>ntrolTemplate TargetType="Button"> <Border Margin="5" BorderBrush="Black" BorderThickness="1" CornerRadius="5" Padding="2"> <Grid Width="100" Height="100" Background="{StaticResource TransparentColor}" x:Name="PART_DayButtonGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Width="55" Height="55" Name="PART_Image" Visibility="Collapsed" /> <TextBlock Grid.Column="1" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="36" />
</Grid> </Border> <ControlTemplate.Triggers>
<MultiTrigger > <MultiTrigger.Conditions>Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions> <MultiTrigger.EnterActions> <BeginStoryboard><Storyboard>
<ColorAnimation Storyboard.TargetName="PART_DayButtonGrid"
Storyboard.TargetProperty="(Grid.Background).(GradientBrush.GradientStops)[0].(GradientStop.Color)" To="#992f91f5"Duration="0:0:0.3" </ColorAnimation></Storyboard> </BeginStoryboard>
</MultiTrigger.EnterActions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
</Grid> </Grid> </UserControl>
// CALENDARUSERCONTROL – C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.OleDb;
namespace WpfApplication1
{
/// <summary>
/// Логика взаимодействия для CalendarUserControl.xaml
/// </summary>
public partial class CalendarUserControl : UserControl
{ public DateTime CurentDate;
public static DependencyProperty MounthNameProperty;
private int MounthDiferent=0;
public static readonly RoutedEvent DayClickEvent;
static CalendarUserControl()
{
MounthNameProperty = DependencyProperty.Register("MounthName", typeof(string), typeof(CalendarUserControl),
new FrameworkPropertyMetadata("December", new PropertyChangedCallback(OnMounthNameChanged)));
DayClickEvent = EventManager.RegisterRoutedEvent(
"DayClick", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(CalendarUserControl)); }
public CalendarUserControl()
{ InitializeComponent();
PART_DaysGrid.AddHandler(Button.ClickEvent, new RoutedEventHandler(Day_Click));
PART_ButtonEarly.MouseMove+= new MouseEventHandler(Sheme_MouseMove);
}
private static void OnMounthNameChanged(DependencyObject sender,
DependencyPropertyChangedEventArgs e)
{
}
public string MounthName
{ get { return (string)GetValue(MounthNameProperty); }
set { SetValue(MounthNameProperty, value); }
}
public event RoutedEventHandler DayClick
{ add { AddHandler(DayClickEvent, value); }
remove { RemoveHandler(DayClickEvent, value); }
}
void RaiseDayClickEvent()
{ RoutedEventArgs newEventArgs = new RoutedEventArgs(CalendarUserControl.DayClickEvent);
RaiseEvent(newEventArgs); }
public void UserControl_Loaded(object sender, RoutedEventArgs e)
{ try
{ PART_DaysGrid.Children.Clear();
DateTime date = new DateTime();
date = DateTime.Today;
date = new DateTime(date.Year, date.Month, 1);
date = date.AddMonths(MounthDiferent);
CurentDate = date.Date;
MounthName = GetMonthName(date.Month)+", "+date.Year ;
int FirstDayOfWeek = Convert.ToInt32(date.DayOfWeek.ToString("d"));
if (FirstDayOfWeek == 0)
{ FirstDayOfWeek = 6; }
else { FirstDayOfWeek -= 1; }
int DayCounter = 1;
int DaysInMonth = DateTime.DaysInMonth(date.Year, date.Month)+1;
bool ForExit = false;
string dEnd = new DateTime(date.Year, date.Month, DaysInMonth - 1).Date.ToString("yyyy/MM/dd").Replace(".", "/");
string dBegin = date.Date.ToString("yyyy/MM/dd").Replace(".", "/");
OleDbConnection connect = new OleDbConnection(MainWindow.ConnectionString);
connect.Open();
OleDbCommand com = new OleDbCommand("Select id, trainingDate FROM trainings "
+" WHERE trainingDate Between #"+dBegin+"# And #"+dEnd+"# Order By trainingDate ASC", connect);
OleDbDataAdapter ad = new OleDbDataAdapter(com);
System.Data.DataSet ds = new System.Data.DataSet();
ad.Fill(ds, "training");
com.CommandText = "Select games.gameDate, clubs.image FROM games INNER JOIN clubs ON games.oponent=clubs.id"
+ " WHERE games.gameDate Between #" + dBegin + "# And #" + dEnd + "# Order By games.gameDate ASC";
ad.Fill(ds, "games");
connect.Close();
int TrainingCounter=0;
int TrainingCount = ds.Tables[0].Rows.Count;
int GameCounter = 0;
int GameCount = ds.Tables[1].Rows.Count;
for (int i = 0; i < 7; i++)
{ for (int j = FirstDayOfWeek; j < 7; j++)
{ if (DayCounter >= DaysInMonth)
{ ForExit = true;
break; }
Button btn = new Button();
btn.Content = DayCounter++.ToString();
Grid.SetRow(btn, i);
Grid.SetColumn(btn, j);
btn.Style = PART_DaysGrid.FindResource("DayButton") as Style;
btn.ApplyTemplate();
if((TrainingCounter<TrainingCount)&&(ds.Tables[0].Rows[TrainingCounter][1].ToString()==new DateTime(date.Year, date.Month, DayCounter-1).Date.ToString()))
{ bool TrainingExit = true;
while (TrainingExit)
{ Image img = tn.Template.FindName("PART_Image", btn) as Image;
var uriSource = new Uri("/WpfApplication1;component/Images/training.png", UriKind.Relative);
img.Source = new BitmapImage(uriSource);
img.Visibility = Visibility.Visible;
img.ToolTip = new TextBlock().Text = "Training";
TrainingCounter++;
if (!((TrainingCounter < TrainingCount) && (ds.Tables[0].Rows[TrainingCounter][1].ToString() == new DateTime(date.Year, date.Month, DayCounter - 1).Date.ToString())))
{ TrainingExit = false; } } }
if ((GameCounter < GameCount) && (ds.Tables[1].Rows[GameCounter][0].ToString() == new DateTime(date.Year, date.Month, DayCounter - 1).Date.ToString()))
{ bool MatchExit = true;
while (MatchExit) {
Image img = btn.Template.FindName("PART_Image", btn) as Image;
try {
string AppDirectory = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName); AppDirectory += @"\images\" + ds.Tables[1].Rows[GameCounter][1].ToString();
BitmapImage bm1 = new BitmapImage();
bm1.BeginInit();
bm1.UriSource = new Uri(AppDirectory, UriKind.RelativeOrAbsolute);
bm1.CacheOption = BitmapCacheOption.OnLoad;
bm1.EndInit();
img.Source = bm1; }
catch (Exception)
{ var uriSource = new Uri("/WpfApplication1;component/Images/match.png", UriKind.Relative);
img.Source = new BitmapImage(uriSource);
}
img.Visibility = Visibility.Visible;
img.ToolTip = new TextBlock().Text = "Match";
GameCounter++;
if (!((GameCounter < GameCount) && (ds.Tables[1].Rows[GameCounter][0].ToString() == new DateTime(date.Year, date.Month, DayCounter - 1).Date.ToString())))
{ MatchExit = false;
} } }
PART_DaysGrid.Children.Add(btn); }
if (ForExit) break;
FirstDayOfWeek = 0; } }
catch (Exception ex)
{ //MessageBox.Show(ex.Message); }
}
public static string GetMonthName(int Month )
{ switch (Month)
{
case 1:
return "Січень";
break;
case 2:
return "Лютий";
break;
case 3:
return "Березень";
break;
case 4:
return "Квітень";
break;
case 5:
return "Травень";
break;
case 6:
return "Червень";
break;
case 7:
return "Липень";
break;
case 8:
return "Серпень";
break;
case 9:
return "Вересень";
break;
case 10:
return "Жовтень";
break;
case 11:
return "Листопад";
break;
case 12:
return "Грудень";
break;
default:
return "I dont now this month!";
break;
}
}
private void ButtonEarlyMounth_Click(object sender, RoutedEventArgs e)
{ MounthDiferent -= 1;
UserControl_Loaded(sender, e); }
private void ButtonNextMounth_Click(object sender, RoutedEventArgs e)
{ MounthDiferent += 1;
UserControl_Loaded(sender, e); }
private void Day_Click(object sender, RoutedEventArgs e)
{
Button btn = e.OriginalSource as Button;
CurentDate= new DateTime(CurentDate.Year,CurentDate.Month, Convert.ToInt32(btn.Content));
RaiseDayClickEvent();
}
}
}
ДОДАТОК Б
Інтерфейс програми
Рисунок Б.1 – Головне вікно з меню програми
ДОДАТОК В
Слайди презентації