Programowanie w technologii.net wykład 8 Style, listy, drzewa, toolbary, menu
|
|
- Marcin Zych
- 6 lat temu
- Przeglądów:
Transkrypt
1 Programowanie w technologii.net wykład 8 Style, listy, drzewa, toolbary, menu 1/70 Podstawy Chcąc wielokrotnie wykorzystać pewne ustawienia stylu, może zdefiniować je w zasobach: <Window.Resources> <FontWeight x:key="buttonfontweight"> Bold </FontWeight> <SolidColorBrush x:key="buttonbackground"> Orange </SolidColorBrush> </Window.Resources>
2 A następnie z nich skorzystać, ustawiając własności elementów: <Button Background="{StaticResource ButtonBackground}" FontWeight="{StaticResource ButtonFontWeight}"> OK </Button> <Button Background="{StaticResource ButtonBackground}" FontWeight="{StaticResource ButtonFontWeight}"> Anuluj </Button> Problemy: Nic (poza nazwą) nie wskazuje, że te zasoby są powiązane i że powinniśmy używać ich łącznie. Korzystanie z takich zasobów wymaga dodatkowego kodu XAMLa, przez co staje się nieczytelne. Lepsze rozwiązanie, to zdefiniowanie Stylu pojedynczy Style będzie zawierał w sobie wszystkie interesujące nas własności. 2/70
3 3/70 <Window.Resources> <Style x:key="orangebutton"> <Setter Property="Control.Background" Value="Orange"/> <Setter Property="Control.FontWeight" Value="Bold"/> </Style> </Window.Resources> Tworzymy obiekt klasy System.Windows.Style. Zawiera on kolekcję Setterów jeden na własność, której wartość chcemy ustawić. Setter określa nazwę własności i wartość, jaką ma jej nadać. Każdy element WPF może używać jednego Stylu (lub żadnego) wybieramy go przez własność Style. <Button Style="{StaticResource OrangeButton}"> OK </Button> <Button Style="{StaticResource OrangeButton}"> Anuluj </Button> Możemy też ustawić to programistycznie: btnexit.style = (Style)this.FindResource("OrangeButton");
4 4/70 Styl ustawia bazowy wygląd elementu możemy to nadpisać, ustawiając daną własność w tym elemencie (przeważnie jednak, zamiast na tym polegać, będziemy definiować różne warianty stylów). Styl pozwala stworzyć grupę powiązanych ustawień i w łatwy sposób nadać je jakiemuś elementowi. Nie musimy się martwić, jakie własności on ustawia, ani wiedzieć, gdy się zmienia: <Window.Resources> <Style x:key="orangebutton"> <Setter Property="Control.Background" Value="Orange"/> <Setter Property="Control.FontWeight" Value="Bold"/> <Setter Property="Control.FontSize" Value="16"/> <Setter Property="FrameworkElement.Margin" Value="3"/> <Setter Property="Control.Padding" Value="10,3"/> </Style> </Window.Resources>
5 Własności klasy Style: Setters kolekcja Setterów i EventSetterów, ustawiających wartości własności i dołączających obsługę zdarzeń. Triggers pozwalają na automatyczną modyfikację stylu, np. w reakcji na zmianę jakiejś własności lub zdarzenie. Resources zasoby używane przez style dobrze jest definiować wewnątrz niego. BasedOn pozwala na dziedziczenie stylów. TargetType określa typ elementu, jakiego dotyczy styl; pozwala stworzyć styl, który będzie stosowany automatycznie do elementów określonego typu. 5/70
6 6/70 Tworzenie obiektu stylu Można je definiować w zasobach (na dowolnym poziomie: okna, aplikacji, kontenera, kontrolki). Można też ustawiać od razu w miejscu użycia: <Button> <Button.Style> <Style> <Setter.../> <Setter.../> </Style> </Button.Style> OK </Button> Wydaje się to mało użyteczne w wypadku setterów, ale bywa przydatne z triggerami.
7 7/70 Setters Styl zawiera kolekcję obiektów klasy Setter. Każdy Setter ustawia pojedynczą własność (tylko zależnościową!) w elemencie. Aby ustawić złożoną wartość, możemy (jak zwykle) zastąpić atrybut zagnieżdżeniem: <Setter Property="Control.Background"> <Setter.Value> <LinearGradientBrush> <GradientStop Color="AliceBlue" Offset="0"/> <GradientStop Color="SteelBlue" Offset="1"/> </LinearGradientBrush> </Setter.Value> </Setter>
8 8/70 Aby określić własność, którą chcemy ustawić, musimy podać zarówno jej nazwę jak i nazwę klasy, w której jest zawarta. Nie musi to być jednak nazwa klasy, w której jest ona zdefiniowana (może to być klasa potomna, która dziedziczy tę własność): <Style x:key="orangebutton"> <Setter Property="Button.FontWeight" Value="Bold"/> <Setter Property="Button.FontSize" Value="16"/> </Style> Działanie się nie zmieni, bo nadal odwołujemy się do tej samej własności. Pozwala to również ustawiać własności, które nie będą istnieć w elemencie używającym tego stylu.
9 9/70 Poniższy przykład nie ustawi innego stylu dla przycisku, a innego dla pola tekstowego. Własności będą ustawione dwukrotnie, zatem w efekcie otrzymamy wynik ostatniego ustawienia. Dzieje się tak, mimo iż FontSize jest deklarowane osobno w Button i TextBlock wskazują bowiem na tę samą własność zależnościową. <Style x:key="differentstyles"> <Setter Property="Button.Foreground" Value="Blue"/> <Setter Property="Button.FontSize" Value="18"/> <Setter Property="TextBox.Foreground" Value="Green"/> <Setter Property="TextBox.FontSize " Value="16"/> </Style> Jeśli wszystkie własności, które ustawiamy, dotyczą jednego typu elementów, możemy ustawić TargetType stylu: <Style x:key="orangebutton" TargetType="Button"> <Setter Property="Background" Value="Orange"/> <Setter Property="FontWeight" Value="Bold"/> </Style>
10 10/70 EventSetters Dowiązują do elementu obsługę zdarzeń. <Style x:key="orangebutton">... <EventSetter Event="UIElement.MouseEnter" Handler="element_MouseEnter"/> <EventSetter Event="UIElement.MouseLeave" Handler="element_MouseLeave"/> </Style> Metody obsługi zdarzeń: private void element_mouseenter(...) { ((UIElement)sender).FontStyle = FontStyles.Italic; } private void element_mouseleave(...) { ((Control)sender).ClearValue(Control.FontStyleProperty); }
11 Zdarzenia MouseEnter i MouseLeave nie wykorzystują tunneling i bubbling, dlatego nie moglibyśmy ustawić ich np. w kontenerze dla grupy elementów. EventSetter jest niezłym rozwiązaniem. EventSettery są rzadko wykorzystywane w WPF podobną funkcjonalność mogą zapewnić nam bowiem triggery. 11/70
12 12/70 Dziedziczenie stylów Możemy zdefiniować dowolną liczbę stylów na dowolnym poziomie. Ale jeden element może używać tylko jednego stylu. Z pomocą przychodzi dziedziczenie własności i dziedziczenie stylów. Niektóre własności są dziedziczone z kontenera (IsEnabled, IsVisible, Foreground, własności czcionek). Możemy też stworzyć nowy styl na podstawie innego (atrybut BasedOn): <Window.Resources> <Style x:key="orangebutton"> <Setter Property="Control.Background" Value="Orange"/> <Setter Property="Control.Margin " Value="3"/> <Setter Property="Control.Padding" Value="10,3"/> </Style> <Style x:key="emphasizedorangebutton" BasedOn="{StaticResource OrangeButton}"> <Setter Property="Control.FontWeight" Value="Bold"/> </Style> </Window.Resources>
13 Jeśli ponownie ustawimy tę samą własność, setter potomny nadpisze wartość z settera bazowego. Dziedziczenie stylów zwiększa złożoność, dlatego dobrze jest ograniczyć jego użycie do sytuacji gdy jeden styl jest pewnym wariantem drugiego. W pozostałych przypadkach lepiej jest tworzyć style z różnymi kombinacjami formatowania. 13/70
14 14/70 Automatyczne stosowanie stylów Aby automatycznie używać stylu do wszystkich elementów określonego typu, należy: ustawić własność TargetType, nie ustawiać klucza (WPF zrobi to za nas: x:key="{x:type Button}"). Styl będzie automatycznie używany przez wszystkie elementy określonego typu w dół drzewa elementów. <Window.Resources> <Style TargetType="Button"> <Setter Property="Background" Value="Orange"/> <Setter Property="FontWeight" Value="Bold"/> <Setter Property="Margin " Value="3"/> <Setter Property="Padding" Value="10,3"/> </Style> </Window.Resources> <WrapPanel> <Button>OK</Button> <Button Style="{x:Null}">Anuluj</Button> </WrapPanel>
15 15/70 Przycisk Anuluj zastępuje automatyczny styl swoim własnym ustawieniem (w tym wypadku nullem, co po prostu powoduje usunięcie stylu). W wypadku złożonych okien, kłopotliwe bywa śledzenie w jaki sposób ustawiana jest dana własność. Dlatego z automatycznych stylów lepiej korzystać oszczędnie, np. tylko aby ustawić jednakowy margines wszystkich Buttonów w kontenerze.
16 16/70 Triggers Pozwalają na automatyzację prostych zmian stylu (bez potrzeby pisania kodu) np. w reakcji na zdarzenie lub zmianę wartości. Każdy styl może mieć dowolną liczbę triggerów: obiektów klas dziedziczących z System.Windows.TriggerBase, zawartych w kolekcji Style.Triggers. Triggery mogą być użyte bezpośrednio w elementach, z pominięciem Stylu, dzięki kolekcji FrameworkElement.Triggers. Klasy dziedziczące z TriggerBase Trigger najprostszy z triggerów, reaguje na zmianę wartości własności zależnościowej. MultiTrigger jak wyżej, ale pozwala łączyć kilka warunków. DataTrigger podobny do Triggera, ale reaguje na zmianę w dowiązanych danych nei wymaga własności zależnościowej. MultiDataTrigger jak wyżej, ale dla kilku warunków. EventTrigger uruchamiają określone akcji w reakcji na zdarzenie, służą np. do wyświetlania animacji.
17 17/70 Trigger Może być dołączony do dowolnej własności zależnościwej (np. IsFocused, IsMouseOver, IsPressed). Określamy własność, która ma być obserwowana i wartość, jakiej oczekujemy. Gdy własność przyjmie tę wartość, uruchomione zostaną settery z kolekcji Trigger.Setters. Nie jest możliwe stworzenie bardziej złożonych reguł: tylko proste porównanie wartości. <Style TargetType="Button"> <Style.Setters> <Setter Property="Background" Value="Orange"/> <Setter Property="Margin " Value="3"/> <Setter Property="Padding" Value="10,3"/> </Style.Setters> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="White"/> </Trigger> </Style.Triggers> </Style>
18 Kolor znaków zmieni się, gdy wskaźnik myszy znajduje się nad przyciskiem. Nie musimy deklarować powrotu do poprzedniej wartości : oryginalna wartość zostaje zapamiętana i własność do niej wraca, gdy trigger przestanie być aktywny. Możemy stworzyć kilka triggerów do jednego elementu. Jeśli ustawiają one tę samą własność, wygrywa zawsze ostatni na naszej liście (niezależnie od czasu zdarzeń). 18/70
19 19/70 <Style TargetType="Button"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Foreground" Value="White"/> </Trigger> <Trigger Property="IsFocused" Value="True"> <Setter Property="Foreground" Value="Yellow"/> </Trigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="Foreground" Value="Magenta"/> </Trigger> </Style.Triggers> </Style> Gdy naciskamy przycisk, wygrywa IsPressed.
20 20/70 Triggery można wykorzystać do informowania o błędzie: Pola z wiązaniem danych (i walidacją!): <TextBox Text="{Binding Path=Imię, ValidatesOnDataErrors=True}"/> <TextBox Text="{Binding Path=Nazwisko, ValidatesOnDataErrors=True}"/> Trigger reaguje na Validation.HasError: <Style TargetType="{x:Type TextBox}"> <Style.Triggers> <Trigger Property="Validation.HasError" Value="True"> <Setter Property="Background" Value="Red"/> <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self}, Path=(Validation.Errors)[0].ErrorContent}"/> </Trigger> </Style.Triggers> </Style>
21 21/70 MultiTrigger Kolekcja Conditions pozwala zdefiniować szereg oczekiwanych wartości własności. Trigger uruchamia się tylko wówczas, gdy wszystkie one są spełnione. <Style TargetType="Button"> <Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsMouseOver" Value="True"/> <Condition Property="IsFocused" Value="True"/> </MultiTrigger.Conditions> <MultiTrigger.Setters> <Setter Property="Foreground" Value="White"/> </MultiTrigger.Setters> </MultiTrigger> </Style.Triggers> </Style> Kolor tekstu zostanie ustawiony tylko gdy przycisk ma focusa, a wskaźnik myszy znajduje się nad nim.
22 22/70 EventTrigger Oczekuje na odpalenie konkretnego zdarzenia i uruchamia przewidzianą akcję. Przeważnie służy to do włączania animacji. Przykład: <Style TargetType="Button">... <Style.Triggers> <EventTrigger RoutedEvent="Mouse.MouseEnter"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation Duration="0:0:0.2" Storyboard.TargetProperty="FontSize" To="22" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Style.Triggers> </Style>
23 Animacja zdefiniowana jest w Storyboardzie. Animacja sprowadza się do modyfikacji własności zależniościowych w określonym czasie. W przeciwieństwie do Triggerów, nie ma automatycznego powrotu i musimy zadeklarować to sami: <Style TargetType="Button">... <Style.Triggers>... <EventTrigger RoutedEvent="Mouse.MouseLeave"> <EventTrigger.Actions> <BeginStoryboard> <Storyboard> <DoubleAnimation Duration="0:0:1" Storyboard.TargetProperty="FontSize" /> </Storyboard> </BeginStoryboard> </EventTrigger.Actions> </EventTrigger> </Style.Triggers> </Style> Tym razem jednak nie podajemy docelowego rozmiaru czcionki, WPF uznaje zatem, że wracamy do oryginalnej wartości. 23/70
24 24/70 DataTrigger Jak triggery, ale nie wymagają własności zależnościowych. <Window.Resources> <Style x:key="dangerstyle"> <Style.Triggers> <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Text}" Value="EX"> <Setter Property="Control.Background" Value="Orange"/> </DataTrigger> </Style.Triggers> </Style> </Window.Resources> <StackPanel> <TextBox Margin="3" Style="{StaticResource DangerStyle}" /> </StackPanel>
25 25/70 Style w listach: przy pomocy ItemContainerStyle możemy wskazać styl, który będzie użyty do każdego elementu listy. <ListBox...> <ListBox.ItemContainerStyle> <Style> <Setter Property="ListBoxItem.Background" Value="LightSteelBlue" /> <Setter Property="ListBoxItem.Margin" Value="5" /> <Setter Property="ListBoxItem.Padding" Value="5" /> </Style> </ListBox.ItemContainerStyle> </ListBox>
26 26/70
27 27/70 Przy pomocy triggerów możemy formatować wygląd elementu wybranego: <ListBox.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}">... <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter... /> <Setter... /> <Setter... /> </Trigger> </Style.Triggers> </Style> </ListBox.ItemContainerStyle>
28 28/70 Naprzemienne podświetlanie wierszy: AlternationCount i AlternationIndex. <ListBox AlternationCount="2"...> <ListBox.ItemContainerStyle> <Style TargetType="{x:Type ListBoxItem}"> <Setter Property="Background" Value="LightSteelBlue" /> <Setter Property="Margin" Value="5" /> <Setter Property="Padding" Value="5" /> <Style.Triggers> <Trigger Property="ItemsControl.AlternationIndex" Value="1"> <Setter Property="Background" Value="LightBlue" /> </Trigger> </Style.Triggers> </Style> </ListBox.ItemContainerStyle> </ListBox>
29 StyleSelector gdy chcemy nadać różny styl bazując na bardziej złożonych warunkach. Działa bardzo podobnie, jak DataTemplateSelector. 29/70
30 30/70 DataTriggery można wykorzystać również do warunkowego formatowania w szablonach danych: <DataTemplate x:key="defaultbooktemplate"> <DataTemplate.Triggers> <DataTrigger Binding="{Binding Path=CategoryName}" Value="Horror"> <Setter Property="Control.Foreground" Value="Red" /> </DataTrigger> </DataTemplate.Triggers> <Border...> <Grid...>... </Grid> </Border> </DataTemplate>
31 Wady zmieniamy pojedyncze własności, testujemy tylko pojedyncze warunki. 31/70
32 DataTrigger pozwala utworzyć listę z elementami, które wyświetlają dodatkowe dane po wybraniu (a raczej ukrywają, gdy element nie jest wybrany). Należy sprawdzić wartość IsSelected elementu listy i ustawić wartość Visibility innego elementu. <DataTemplate x:key="defaultbooktemplate"> <Border..."> <Grid...> <Grid.RowDefinitions> <RowDefinition></RowDefinition> <RowDefinition></RowDefinition> </Grid.RowDefinitions> <TextBlock... Text="{Binding Path=Title}" /> <TextBlock... Text="{Binding Path=Author}"> <TextBlock.Style> <Style>... </Style> </TextBlock.Style> </TextBlock> </Grid> </Border> </DataTemplate> 32/70
33 <Style> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}}" Value="False"> <Setter Property="TextBlock.Visibility" Value="Collapsed" /> </DataTrigger> </Style.Triggers> </Style> 33/70
34 Kontrolki list 34/70
35 35/70 Własności klasy ItemsControl: ItemsSource źródło danych (kolekcja lub DataView) DisplayMemberPath wskazuje, którą własność elementu wyświetlić ItemTemplate szablon elementu ItemTemplateSelector klasa dokonująca wyboru szablonu elementu ItemContainerStyle styl kontenera otaczającego pojedynczy element ItemContainerStyleSelector ItemsPanel panel, który przechowuje wszystkie elementy listy (zazwyczaj: pionowy StackPanel) GroupStyle styl formatowania grupy GroupStyleSelector
36 Klasa Selector dodaje możliwość wybierania elementu (ToolBar czy Menu tego nie mają) własności: SelectedItem, SelectedIndex, SelectedValue (własność Value wybranego obiektu danych, zgodnie z SelectedValuePath) selector nie daje obsługi wielokrotnego wyboru to jest dodane w ListBox, przez SelectionMode i SelectedItems zdarzenie SelectionChanged TreeView też pozwala wybierać elementy, ale (z powodu hierarchicznej struktury) działa to inaczej, choć własności nazywają się tak samo: SelectedItem, SelectedValue, SelectedValue path properties. Do tego zdarzenie SelectedItemChanged. 36/70
37 37/70 ComboBox Składa się z dwóch części: okna wyboru (ukazuje aktualny wybór) i listy rozwijalnej (wszystkie możliwe wybory).
38 38/70 Ustawienie IsEditable na true zmienia działanie: w okienku wyboru wyświetlany jest jedynie tekst zwrócony przez ToString użytkownik może wpisać tu jakąś wartość autouzupełnianie <ComboBox IsEditable="True"... />
39 39/70 ListView Umożliwia wyświetlanie różnych widoków do tych samych danych. Zwłaszcza przydaje się do tworzenia widoku wielokolumnowego. Dziedziczy z ListBox, dodając jedną własność: View. Widok to obiekt dziedziczący z ViewBase klasy przechowującej wskazanie na style: styl kontrolki listy (DefaultStyleKey) i styl elementu listy (ItemContainerDefaultStyleKey). Wydzielenie informacji o widoku daje lepszą organizację, pozwala np. wykorzystywać ten sam widok w różnych listach lub używać zamienni kilku widoków w jednej liście. WPF dostarcza jeden gotowy widok: GridView. Mamy też możliwość tworzenia własnych.
40 40/70 Dodawanie kolumn: kolekcja GridView.Columns. Header to nagłówek kolumny, a DisplayMemberBinding wiązanie obiektem danych. <ListView Name="lstBooks" Margin="3"> <ListView.View> <GridView> <GridView.Columns> <GridViewColumn Header="Tytuł" DisplayMemberBinding="{Binding Path=Title}"/> <GridViewColumn Header="Autor" DisplayMemberBinding="{Binding Path=Author}"/> <GridViewColumn Header="Cena" DisplayMemberBinding="{Binding Path=Price}"/> </GridView.Columns> </GridView> </ListView.View> </ListView>
41 Oczywiście wszystkie rzeczy, które działały dla list (konwertery, szablony) mogą być tu stosowane. Użytkownik ma możliwość zmiany kolejności kolumn i zmiany ich rozmiaru (domyślnie rozmiar jest ustalany na podstawie zawartości, o ile nie określimy ręcznie własności Width). 41/70
42 42/70 Szablony komórek Podobnie jak szablony danych dla ListBoxa, ale działa tylko dla jednej kolumny. <GridViewColumn Header="Tytuł" Width="150"> <GridViewColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Path=Title}" TextWrapping="Wrap"></TextBlock> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> W ten sam sposób możemy umieścić w kolumnach dowolne elementy, np. obrazek z poprzedniego wykładu (ImagePathConverter). Ponieważ szablony kolumn nie mogą być używane w innym miejscu, przeważnie definiuje się je inline. GridViewColumn.CellTemplateSelector pozwala na ustawienie selectora szablonu. GridViewColumn.Header pozwala na zdefiniowanie wyglądu nagłówka; GridViewColumn.HeaderTemplate pozwala na wybór szablonu dla nagłówka lub GridView.ColumnHeaderTemplate na wybór jednego szablonu dla wszystkich.
43 43/70
44 44/70 DataGrid Oferuje wielokolumnowy widok z edycją. Przeznaczony do wyświetlania całych tabel danych. Podstawowe wykorzystanie jest bardzo proste: <DataGrid Name="data"/> I w kodzie: data.itemssource = books;
45 45/70 RowDetailsTemplate pozwala na prezentację dodatkowych informacji w wierszu: <DataGrid Name="data" SelectionMode="Single"> <DataGrid.RowDetailsTemplate> <DataTemplate> <TextBlock Margin="10" FontWeight="Bold" Text="{Binding Price}"/> </DataTemplate> </DataGrid.RowDetailsTemplate> </DataGrid> Wypełnienie kolekcji DataGrid.Columns pozwala na własne definicje kolumn: <DataGrid Name="data" SelectionMode="Single" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Header="Title" Binding="{Binding Title}"/> <DataGridTextColumn Header="Author" Binding="{Binding Author}"/> </DataGrid.Columns> </DataGrid>
46 46/70
47 47/70 TreeView Wspiera wiązanie danych. TreeView to specjalizowana kontrolka listy, która zawiera elementy TreeViewItem. TreeViewItem to nie kontrolka zawartości, ale kolejna kontrolka listy, która może zawierać kolejne elementy TreeViewItem. TreeViewItem dziedziczy z HeaderedItemsControl, która dodaje własność Header. Prosty przykład ręcznej definicji drzewa: <TreeView> <TreeViewItem Header="Filmy"> <TreeViewItem Header="Komedie"/> <TreeViewItem Header="Dramaty"/> <TreeViewItem Header="Seriale"/> </TreeViewItem> <TreeViewItem Header="Książki"> <TreeViewItem Header="Fantasy"/> <TreeViewItem Header="Science fiction"/> <TreeViewItem Header="Horror"/> </TreeViewItem> </TreeView>
48 Podobnie, jak w wypadku ListBox, nie musimy budować drzewa z elementów TreeViewItem. Jednak przeważnie najlepiej jest opakowywać swoje obiekty w TreeViewItem, a zawartość do wyświetlenia udostępniać przez TreeViewItem.Header. 48/70
49 49/70 TreeView i wiązanie danych Podobnie, jak wypadku pozostałych kontrolek listy, wystarczy ustawić własność ItemsSource. Wypełnia to jednak tylko pierwszy poziom drzewa: public class Category { public string Name { get; set; } public Category(string name) { Name = name; } } <Grid> <TreeView Name="drzewo" DisplayMemberPath="Name" /> </Grid>
50 50/70 private void Window_Loaded(object sender, RoutedEventArgs e) { List<Category> lst = new List<Category>(); lst.add(new Category("Fantasy")); lst.add(new Category("Science fiction")); lst.add(new Category("Horror")); } drzewo.itemssource = lst;
51 51/70 Dodajmy książki do kategorii: public class Category { public string Name { get; set; } public Category(string name) { Name = name; books = new List<Book>(); } private List<Book> books; public List<Book> Books { get { return books; } } }
52 52/70 private void Window_Loaded(object sender, RoutedEventArgs e) {... lst[0].books.add(new Book("Gra o tron", "George R.R. Martin", 45M)); lst[0].books.add(new Book("Straż nocna", "Terry Pratchett", 27.5M)); lst[0].books.add(new Book("Czarnoksiężnik z Archipelagu", "Ursula K. Le Guin", 19.9M));... } Aby wyświetlić zawartość kategorii, potrzebny jest szablon, który może obsłużyć dane hierarchiczne: <TreeView Name="drzewo"> <TreeView.ItemTemplate> <HierarchicalDataTemplate> <TextBlock Text="{Binding Path=Name}" /> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView>
53 53/70 To wyświetli tylko nazwę kategorii. HierarchicalDataTemplate może zawierać kolejny szablon a kolekcja elementów z pierwszego poziomu może być przekazana do kolejnego poziomu. Własność ItemsSource określa własność, która zawiera elementy dzieci. <TreeView Name="drzewo"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Path=Books}"> <TextBlock Text="{Binding Path=Name}" /> <HierarchicalDataTemplate.ItemTemplate > <DataTemplate> <TextBlock Text="{Binding Path=Title}" /> </DataTemplate> </HierarchicalDataTemplate.ItemTemplate> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView>
54 Drzewo posługuje się teraz dwoma osobnymi szablonami dla pierwszego i drugiego poziomu. Drugi szablon wykorzystuje wybrany element pierwszego, jako źródło danych. 54/70
55 55/70 Szablony możemy też przenieść do zasobów i wybierać na podstawie typów, a nie zagnieżdżenia: <Window.Resources> <HierarchicalDataTemplate DataType="{x:Type local:category}" ItemsSource="{Binding Path=Books}"> <TextBlock Text="{Binding Path=Name}"/> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="{x:Type local:book}"> <TextBlock Text="{Binding Path=Title}" /> </HierarchicalDataTemplate> </Window.Resources> <Grid> <TreeView Name="drzewo"> </TreeView> </Grid>
56 Pozwala to również na kolejne zagnieżdżenia elementów w drzewie. Np. tak: public class Category { public string Name { get; set; } public Category(string name) { Name = name; books = new List<object>(); } private List<object> books; public List<object> Books { get { return books; } } }... lst[1].books.add(new Category("podkategoria")); ((Category)lst[1].Books[3]).Books.Add(new Book(...)); ((Category)lst[1].Books[3]).Books.Add(new Book(...)); ((Category)lst[1].Books[3]).Books.Add(new Book(...)); 56/70
57 Tworzenie gałęzi na żądanie: Jeśli drzewo zawiera dużą ilość danych, możemy nie wypełniać od razu wszystkich podkategorii, a odwlec to do czasu rozwinięcia gałezi przez użytkownika. TreeViewItem odpala zdarzenia Expanded i Collapsed, które na o tym informują. Można to wykorzystać, by wypełnić listę danymi. Początkowo, każda kategoria powinna zawierać jakiś wypełniacz, aby wyświetlony został plus, który umożliwi jej rozwinięcie. W obsłudze zdarzenia Expanded możemy wczytać potrzebne dane i wypełnić nimi kategorię. 57/70
58 58/70 Menu Mamy dostępne dwie kontrolki: Menu (menu aplikacji) i ContextMenu (menu kontekstowe). Menu: Podlega zwyczajnym regułom rozmieszczania elementów (przeważnie jest na szczycie DockPanela lub w pierwszym wierszu Grida). Można dodać dowolną liczbę menu. Własność IsMainMenu ustawiona na true powoduje, że menu dostanie focusa po naciśnięciu klawisza Alt lub F10. Menu zachowało wszelkie cechy kontrolek listy (wiązanie danych, szablony danych, grupowanie, style itemów, etc.) MenuItem Menu składa się z obiektów klas MenuItem oraz Separator. Klasa MenuItem dziedziczy z HeaderedItemsControl. Separator to po prostu pozioma linia, nie reagująca na wejście użytkownika. Menu możemy (teoretycznie) wypełniać dowolnymi elementami (ale lepiej nie przesadzać).
59 <Menu DockPanel.Dock="Top"> <MenuItem Header="File"> <MenuItem Header="New"></MenuItem> <MenuItem Header="Open"></MenuItem> <MenuItem Header="Save"></MenuItem> <Separator></Separator> <MenuItem Header="Exit"></MenuItem> </MenuItem> <MenuItem Header="Edit"> <MenuItem Header="Undo"></MenuItem> <MenuItem Header="Redo"></MenuItem> <Separator></Separator> <MenuItem Header="Cut"></MenuItem> <MenuItem Header="Copy"></MenuItem> <MenuItem Header="Paste"></MenuItem> </MenuItem> </Menu> Można używać znaku podkreślenia, aby oznaczyć skrót z Altem. Reakcja na kliknięcie w element Menu: zdarzenie MenuItem.Click (osobno dla każdego elementu lub jeden handler w korzeniu), system poleceń (Commands) preferowane rozwiązanie. 59/70
60 60/70 MenuItem wyświetla: tekst z własności Header, ikonę: MenuItem.Icon (przyjmuje dowolny obiekt, co pozwala na dołączenie również grafiki wektorowej), checkmark: własność MenuItem.IsChecked; jeśli ustawimy dodatkowo IsCheckable, kliknięcie na menu zmieni ten stan (niestety, nie ma automatycznej obsługi grup), skrót klawiaturowy: można go wyświetlić podając MenuItem.InputGestureText (to jest tylko tekst, nie daje żadnej obsługi tu lepiej polegać na Commands, jeśli nie chcemy robić tego ręcznie). <MenuItem Command="Open"></MenuItem> MenuItem pozwala na sprawdzenie stanu: IsChecked, IsHighlighted, IsPressed, IsSubmenuOpen. Możemy wykorzystać to np. w triggerach.
61 61/70 ContextMenu Podobnie jak Menu, przechowuje kolekcję obiektów MenuItem. Jedyna różnica nie może być umieszczone w oknie. Służy do ustawienia własności ContextMenu innych elementów (pokazuje się na prawy przycisk myszy lub Shift+F10): <TreeView...> <TreeView.ContextMenu> <ContextMenu> <MenuItem Command="Undo"/> <MenuItem Command="Redo"/> </ContextMenu> </TreeView.ContextMenu> </TreeView>
62 Menu kontekstowe domyślnie nie pokazuje się, jeśli element jest wyszarzony (isenabled równe False), ale można to zmienić ustawiając ContextMenuService.ShowOnDisabled na True. 62/70
63 63/70 Separator Służy do dzielenia elementów na grupy. Zawartość separatora można zmieniać przy pomocy szablonów pozwala to definiować własne, nieklikalne elementy menu (nawet jeśli dodamy do menu wrzucimy element nie będący MenuItem, to będzie się zachowywał jak one; Separator nie np. nie jest podświetlany). <Separator> <Separator.Template> <ControlTemplate> <Border CornerRadius="4" Padding="5" Background="Black"> <TextBlock FontWeight="Bold"> Editing Commands </TextBlock> </Border> </ControlTemplate> </Separator.Template> </Separator>
64 64/70 Niestety, Separator to nie kontrolka zawartości, zatem nie można oddzielić zawartości od formatowania i zawartość musi siedzieć w szablonie. Toolbar i StatusBar Standardowo pasek narzędzi przechowuje przyciski, a pasek statusu tekst i kontrolki, z ktorymi użytkownik nie wchodzi w interakcję (np. pasek postępu). Nie ma elementów przeznaczonych specjalnie dla paska narzędzi czy statusu można w nim umieszczać wszelkie podstawowe elementy WPF.
65 ToolBar Przeważnie zawiera obiekty typu Button, ComboBox, CheckBox, RadioButton i Separator. Button w toolbarze wygląda inaczej niż w oknie, gdyż toolbar nadpisuje domyślny styl przycisku. Własność Orientation pozwala na stworzenie pionowego toolbara. <ToolBar DockPanel.Dock="Top"> <CheckBox FontWeight="Bold">Bold</CheckBox> <CheckBox FontStyle="Italic">Italic</CheckBox> <CheckBox> <TextBlock TextDecorations="Underline"> Underline </TextBlock> </CheckBox> <Separator></Separator> <ComboBox SelectedIndex="1"> <ComboBoxItem>120%</ComboBoxItem> <ComboBoxItem>100%</ComboBoxItem> <ComboBoxItem>80%</ComboBoxItem> </ComboBox> <Separator></Separator> </ToolBar> 65/70
66 Gdy wszystkie elementy paska narzędzi nie mieszczą się w oknie, zostają przeniesione do rozwijalnego menu. Elementy trafiają automatycznie, ale możemy wskazać (przy pomocy własności dołączonej ToolBar.OverflowMode), jakie elementy nie powinny tam trafić (OverflowMode.Never), a jakie powinny być tam zawsze (OverflowMode.Always) 66/70
67 ToolBarTray Przechowuje kolekcję toolbarów (własność ToolBars) i daje możliwość ich przemieszczania przez użytkownika (o ile nie ustawiliśmy ToolBarTray.IsLocked na true). ToolBar przy pomocy własności Band może określić swoje położenie w ToolBarTray. <ToolBarTray DockPanel.Dock="Top"> <ToolBar> <Button>One</Button> <Button>Two</Button> <Button>Three</Button> </ToolBar> <ToolBar> <Button>A</Button> <Button>B</Button> <Button>C</Button> </ToolBar> <ToolBar Band="1"> <Button>Red</Button> <Button>Blue</Button> <Button>Green</Button> <Button>Black</Button> </ToolBar> </ToolBarTray> 67/70
68 68/70
69 StatusBar Może przechowywać dowolną zawartość (która zostaje automatycznie opakowana przez StatusBarItem). Nadpisuje domyślne style niektórych elementów. Używany głównie do wyświetlania statycznej informacji. Domyślnie rozmieszcza elementy od lewej do prawej. Można podmienić mu panel, aby rozmieszczać w inny sposób. <StatusBar DockPanel.Dock="Bottom"> <StatusBar.ItemsPanel> <ItemsPanelTemplate> <Grid><Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions></Grid> </ItemsPanelTemplate> </StatusBar.ItemsPanel> <TextBlock>2/10</TextBlock> <StatusBarItem Grid.Column="1"> <TextBlock>120%</TextBlock> </StatusBarItem> </StatusBar> 69/70
70 70/70
Modele zawartości. WPF wykorzystuje 4 modele zawartości kontrolek: ContentControl pojedyncza zawartość
WPF Programowanie w środowisku Windows Wykład 8-1 Kontrolki Modele zawartości WPF wykorzystuje 4 modele zawartości kontrolek: ContentControl pojedyncza zawartość Wykład 8-2 używane przez: Button, ButtonBase,
Bardziej szczegółowoProgramownie w technologii.net wykład 6 Element Binding i Data Binding
Programownie w technologii.net wykład 6 Element Binding i Data Binding 1/41 Element Binding Mechanizm, który pozwala wydobyć pewne informacje z obiektu źródłowego i zapisać je w pewnym obiekcie docelowym.
Bardziej szczegółowoRozwój aplikacji modułowych Paweł Brudnicki. Dodanie modułu
Rozwój aplikacji modułowych Paweł Brudnicki Moduł jest podstawową jednostką funkcjonalności. Stanowi on część, która może być niezależnie pisana, testowana a nawet wdrażana. W przewodniku dodamy niezależny
Bardziej szczegółowoTworzenie prezentacji w MS PowerPoint
Tworzenie prezentacji w MS PowerPoint Program PowerPoint dostarczany jest w pakiecie Office i daje nam możliwość stworzenia prezentacji oraz uatrakcyjnienia materiału, który chcemy przedstawić. Prezentacje
Bardziej szczegółowoBudowa aplikacji w technologii.net wykład 7 konwersja, walidacja, szablony, widoki
Budowa aplikacji w technologii.net wykład 7 konwersja, walidacja, szablony, widoki 1/85 ...
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 3 Okna i kontrolki
Programowanie obiektowe i zdarzeniowe wykład 3 Okna i kontrolki
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych
Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
Bardziej szczegółowoPrzed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt
Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt Zadanie: Utwórz szablon rysunkowy składający się z: - warstw - tabelki rysunkowej w postaci bloku (według wzoru poniżej)
Bardziej szczegółowo1. Dockbar, CMS + wyszukiwarka aplikacji Dodawanie portletów Widok zawartości stron... 3
DODAJEMY TREŚĆ DO STRONY 1. Dockbar, CMS + wyszukiwarka aplikacji... 2 2. Dodawanie portletów... 3 Widok zawartości stron... 3 Omówienie zawartości portletu (usunięcie ramki itd.)... 4 3. Ikonki wybierz
Bardziej szczegółowoInformatyka II. Laboratorium Aplikacja okienkowa
Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.
Bardziej szczegółowoDodanie nowej formy do projektu polega na:
7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie
Bardziej szczegółowoxmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />
1 Tworzenie Shella a. W pierwszej kolejności tworzymy nowy projekt: WPF Application. Name: Shell SolutionName: PrismApp b. Dodajemy bibliotekę PRISM za pomocą NuGet Managera (dla.net Framework 4.5 Prism
Bardziej szczegółowoProgramowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego
Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego 1/34 Wymagania wstępne: Znajomość podstaw programowania. Efekty kształcenia: Umiejętność tworzenia prostych aplikacji
Bardziej szczegółowoZdarzenia i polecenia
WPF Programowanie w środowisku Windows Wykład 10-1 Zdarzenia i polecenia Wykład 10-2 Zdarzenia Metoda obsługi zdarzenia może być do niego przypisana w kodzie C# lub w XAML
Bardziej szczegółowoAdobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.
Spis treści: 1 Podstawy pracy z aplikacją... 2 1.1 Układ strony... 2 strona 1 z 7 1 Podstawy pracy z aplikacją InDesign jest następcą starzejącego się PageMakera. Pod wieloma względami jest do niego bardzo
Bardziej szczegółowoKurs programowania 2 - listy
Kurs programowania 2 - listy Listy rozwijane (ComboBox) Listy rozwijane (rozwijalne) można tworzyć przy użyciu klasy ComboBox. W tabeli poniżej właściwości udostępniane przez tę kontrolkę. Najważniejsza
Bardziej szczegółowoPrzewodnik krok po kroku:
Przewodnik krok po kroku: Aplikacja jest rozbudowywana. Jej podstawą jest: https://msdn.microsoft.com/enus/library/ff921174(v=pandp.40).aspx Do aplikacji dodajemy nowy moduł, który posłuży nam do dodawania
Bardziej szczegółowoZadanie 1. Stosowanie stylów
Zadanie 1. Stosowanie stylów Styl to zestaw elementów formatowania określających wygląd: tekstu atrybuty czcionki (tzw. styl znaku), akapitów np. wyrównanie tekstu, odstępy między wierszami, wcięcia, a
Bardziej szczegółowoInformatyka Edytor tekstów Word 2010 dla WINDOWS cz.3
Wyższa Szkoła Ekologii i Zarządzania Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3 Slajd 1 Slajd 2 Numerowanie i punktowanie Automatyczne ponumerowanie lub wypunktowanie zaznaczonych akapitów w
Bardziej szczegółowoInformatyka Edytor tekstów Word 2010 dla WINDOWS cz.3
Wyższa Szkoła Ekologii i Zarządzania Informatyka Edytor tekstów Word 2010 dla WINDOWS cz.3 Slajd 1 Slajd 2 Numerowanie i punktowanie Automatyczne ponumerowanie lub wypunktowanie zaznaczonych akapitów w
Bardziej szczegółowoRys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.
1 2 Kontrolki standardowe WP7 Michał Ręczkowicz, Opublikowano: 2012-02-08 http://msdn.microsoft.com/pl-pl/library/rozpoczecie-pracy-z-windows-phone--kontrolki-standardowe W tym samouczku dowiesz się, jakie
Bardziej szczegółowoDODAJEMY TREŚĆ DO STRONY
DODAJEMY TREŚĆ DO STRONY SPIS TREŚCI Pasek narzędzi i wyszukiwarka aplikacji... 2 Dodawanie portletów... 3 Widok zawartości stron... 4 Zawartość portletu... 5 Ikonki wybierz oraz dodaj zawartość stron...
Bardziej szczegółowoAby nadać jej pożądaną postać należy w pliku Window1.xaml stworzyć definicję swojego stylu modyfikując ręcznie postać zapisu XAML:
Lab8 WPF Zad1 : - lista z językami i flagami + wiązanie danych z obiektu przerabiana na ComboBox - fisheye przegląd obrazków lupa (obrazki umieszczone na sztywno) - wyświetlenie galerii zdjęć zapisanej
Bardziej szczegółowoMVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści
MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop. 2016 Spis treści Część I Wzorzec MVVM. Podstawy XAML 7 Rozdział 1. Szybkie wprowadzenie do XAML 9 Wzorzec widoku autonomicznego 9 Tworzenie
Bardziej szczegółowoModuł rozliczeń w WinUcz (od wersji 18.40)
Moduł rozliczeń w WinUcz (od wersji 18.40) Spis treści: 1. Rozliczanie objęć procedurą status objęcia procedurą... 2 2. Uruchomienie i funkcjonalności modułu rozliczeń... 3 3. Opcje rozliczeń automatyczna
Bardziej szczegółowoWykład III. dr Artur Bartoszewski www.bartoszewski.pr.radom.pl. Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych
Wydział Nauczycielski, Kierunek Pedagogika Wprowadzenie do baz danych dr Artur Bartoszewski www.bartoszewski.pr.radom.pl Wykład III W prezentacji wykorzystano fragmenty i przykłady z książki: Joe Habraken;
Bardziej szczegółowo1. Umieść kursor w miejscu, w którym ma być wprowadzony ozdobny napis. 2. Na karcie Wstawianie w grupie Tekst kliknij przycisk WordArt.
Grafika w dokumencie Wprowadzanie ozdobnych napisów WordArt Do tworzenia efektownych, ozdobnych napisów służy obiekt WordArt. Aby wstawić do dokumentu obiekt WordArt: 1. Umieść kursor w miejscu, w którym
Bardziej szczegółowoTworzenie bazy danych na przykładzie Access
Tworzenie bazy danych na przykładzie Access Tworzenie tabeli Kwerendy (zapytania) Selekcja Projekcja Złączenie Relacja 1 Relacja 2 Tworzenie kwedend w widoku projektu Wybór tabeli (tabel) źródłowych Wybieramy
Bardziej szczegółowoPlan. Raport. Tworzenie raportu z kreatora (1/3)
3 Budowa prostych raportów opartych o bazę danych Plan Co to jest raport? Tworzenie za pomocą kreatora Tworzenie opartego o polecenie SQL Edycja atrybutów Atrybuty regionu Atrybuty Atrybuty kolumn 2 Raport
Bardziej szczegółowo6.4. Efekty specjalne
6.4. Efekty specjalne Rozdział ten będzie poświęcony efektom specjalnym, które również znalazły swoje zastosowanie w programie MS PowerPoint 2007. Pierwszym typem efektów jaki zostanie poddany naszej analizie
Bardziej szczegółowoProgramowanie w środowisku graficznym GUI
Programowanie w środowisku graficznym GUI 1. Wprowadzenie Język C# jest stworzony do szybkiego tworzenia aplikacji przy pomocy zintegrowanego środowiska programistycznego IDE (ang. Itegrated Development
Bardziej szczegółowoInformatyzacja Przedsiębiorstw
Informatyzacja Przedsiębiorstw Microsoft Dynamics NAV 2013 Development Environment C/AL Izabela Szczęch Informatyzacja Przedsiębiorstw Strona 1 Spis treści 1 Informacje ogólne:... 3 1.1 Zmienne... 4 1.2
Bardziej szczegółowoLokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.
Lokalizacja Informacje ogólne Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie. To pojęcie jest używane przez schematy szaf w celu tworzenia
Bardziej szczegółowoLeszek Stasiak Zastosowanie technologii LINQ w
Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji
Bardziej szczegółowoPolitechnika Poznańska Wydział Budowy Maszyn i Zarządzania
1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych
Bardziej szczegółowoPodręczna pomoc Microsoft Power Point 2007
Podręczna pomoc Microsoft Power Point 2007 Animacja (przejście) slajdu... 2 Wybór przejścia slajdu... 2 Ustawienie dźwięku dla przejścia... 3 Ustawienie szybkości przejścia slajdu... 4 Sposób przełączenia
Bardziej szczegółowoDodawanie grafiki i obiektów
Dodawanie grafiki i obiektów Word nie jest edytorem obiektów graficznych, ale oferuje kilka opcji, dzięki którym można dokonywać niewielkich zmian w rysunku. W Wordzie możesz zmieniać rozmiar obiektu graficznego,
Bardziej szczegółowoTabControl kontrolka odpowiedzialna za wyświetlenie zestawu zakładek. PageControl podobnie jak TabControl ale posiada wbudowane strony.
Komponenty VCL TabControl kontrolka odpowiedzialna za wyświetlenie zestawu zakładek. PageControl podobnie jak TabControl ale posiada wbudowane strony. ImageList - reprezentuje kolekcje obrazków o tej samej
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych
Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych widok ankiety w przeglądarce Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy
Bardziej szczegółowoOficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM
Oficyna Wydawnicza UNIMEX ebook z zabezpieczeniami DRM Opis użytkowy aplikacji ebookreader Przegląd interfejsu użytkownika a. Okno książki. Wyświetla treść książki podzieloną na strony. Po prawej stronie
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości
Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości część 2 Zaprojektowaliśmy stronę dodaj_dzial.aspx proszę jednak spróbować dodać nowy dział nie podając jego nazwy
Bardziej szczegółowoDARMOWA PRZEGLĄDARKA MODELI IFC
www.bimvision.eu DARMOWA PRZEGLĄDARKA MODELI IFC BIM VISION. OPIS FUNKCJONALNOŚCI PROGRAMU. CZĘŚĆ II. Spis treści ZAKŁADKA OBIEKTY... 1 PASEK LOKALIZACJI.... 8 CASE STUDY.... 9 ZAKŁADKA OBIEKTY Zakładka
Bardziej szczegółowoInformatyzacja Przedsiębiorstw
Informatyzacja Przedsiębiorstw Microsoft Dynamics NAV 2016 Development Environment C/AL Izabela Szczęch Informatyzacja Przedsiębiorstw Strona 1 Plan zajęć 1 Informacje ogólne dotyczące środowiska deweloperskiego
Bardziej szczegółowoWinSkład / WinUcz 15.00
WinSkład 15.00 / WinUcz 15.00 Instrukcja obsługi interfejsu użytkownika Spis treści: 1. Filtrowanie danych... 2 1.1. Nowy filtr Wg okresu - ograniczenie liczby danych... 3 1.2. Konfiguracja filtrów...
Bardziej szczegółowoUtworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia
Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia nowego projektu (poniżej są utworzone projekty) Po kliknięciu
Bardziej szczegółowoWYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.
WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy
Bardziej szczegółowoKlawisze funkcyjne w OpenOffice.org Writer
Klawisze funkcyjne w OpenOffice.org Writer F2 Ctrl + F2 F3 Ctrl + F3 F4 Shift + F4 F5 Ctrl + Shift + F5 F7 Ctrl + F7 F8 Ctrl + F8 Shift + F8 Ctrl+Shift+F8 F9 Ctrl + F9 Shift + F9 Ctrl + Shift + F9 Ctrl
Bardziej szczegółowoPrzypisy i przypisy końcowe
- 1 - Przypisy i przypisy końcowe Przypisami nazywamy pewne teksty służące do podawania wyjaśnień, komentarzy, odsyłaczy do tekstu, do bibliografii itp. Edytor WORD rozróżnia dwa rodzaje przypisów: przypisy
Bardziej szczegółowoECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 5.0
ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 5.0 Przeznaczenie sylabusa Dokument ten zawiera szczegółowy sylabus dla modułu ECDL/ICDL Przetwarzanie tekstów. Sylabus opisuje zakres wiedzy i
Bardziej szczegółowoTemat: Organizacja skoroszytów i arkuszy
Temat: Organizacja skoroszytów i arkuszy Podstawowe informacje o skoroszycie Excel jest najczęściej wykorzystywany do tworzenia skoroszytów. Skoroszyt jest zbiorem informacji, które są przechowywane w
Bardziej szczegółowoPodstawowe elementy GUI cz. 2 i 3 - zadania
Podstawowe elementy GUI cz. 2 i 3 - zadania Jak już robiliśmy wcześniej sporo rzeczy w Androidzie umieszczamy w plikach xml (np. strings.xml). Jest to dobra praktyka, w plikach zasobów możemy umieszczać
Bardziej szczegółowoProgramowanie w Javie
Programowanie w Javie Andrzej Czajkowski Lista nr 0 Debugger w Javie Celem ćwiczenia jest poznanie podstawowych funkcji narzędzia debugera (odpluskwiacz) w środowisku Eclipse. Po ukończeniu ćwiczenia student
Bardziej szczegółowo1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika.
Tematy zajęć: 1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika. 2. Posługiwanie się podstawowymi kontrolkami. 3. Własności i zdarzenia w WPF. 4. Zadania aplikacji. Okna. 5. Polecenia. Zasoby.
Bardziej szczegółowoetrader Pekao Podręcznik użytkownika Strumieniowanie Excel
etrader Pekao Podręcznik użytkownika Strumieniowanie Excel Spis treści 1. Opis okna... 3 2. Otwieranie okna... 3 3. Zawartość okna... 4 3.1. Definiowanie listy instrumentów... 4 3.2. Modyfikacja lub usunięcie
Bardziej szczegółowoEdytor tekstu OpenOffice Writer Podstawy
Edytor tekstu OpenOffice Writer Podstawy OpenOffice to darmowy zaawansowany pakiet biurowy, w skład którego wchodzą następujące programy: edytor tekstu Writer, arkusz kalkulacyjny Calc, program do tworzenia
Bardziej szczegółowoUONET+ moduł Dziennik
UONET+ moduł Dziennik Jak wprowadzać do dziennika oceny cząstkowe uczniów? W systemie UONET+ oceny cząstkowe uczniów wprowadza się w module Dziennik w widoku Lekcja, na karcie Oceny lub w widoku Dziennik
Bardziej szczegółowoWindows Presentation Foundation
Windows Presentation Foundation Tworzenie interfejsu użytkownika Współpraca projektanta i programisty (XAML) Interfejsy atrakcyjniejsze graficznie (np. 3D) Aplikacje internetowe (XBAP) Użycie Layoutów
Bardziej szczegółowo- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Bardziej szczegółowoBudowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych
Budowa aplikacji ASP.NET współpracującej z bazą dany do przeprowadzania ankiet internetowych widok ankiety w przeglądarce Rozpoczniemy od zaprojektowania bazy danych w programie SYBASE/PowerDesigner umieszczamy
Bardziej szczegółowoUNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI
UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI LABORATORIUM TECHNOLOGIA SYSTEMÓW INFORMATYCZNYCH W BIOTECHNOLOGII Aplikacja bazodanowa: Cz. II Rzeszów, 2010 Strona 1 z 11 APLIKACJA BAZODANOWA MICROSOFT ACCESS
Bardziej szczegółowoPrzewodnik Szybki start
Przewodnik Szybki start Program Microsoft Word 2013 wygląda inaczej niż wcześniejsze wersje, dlatego przygotowaliśmy ten przewodnik, aby skrócić czas nauki jego obsługi. Pasek narzędzi Szybki dostęp Te
Bardziej szczegółowoArkusz kalkulacyjny EXCEL
ARKUSZ KALKULACYJNY EXCEL 1 Arkusz kalkulacyjny EXCEL Aby obrysować tabelę krawędziami należy: 1. Zaznaczyć komórki, które chcemy obrysować. 2. Kursor myszy ustawić na menu FORMAT i raz kliknąć lewym klawiszem
Bardziej szczegółowoI. Program II. Opis głównych funkcji programu... 19
07-12-18 Spis treści I. Program... 1 1 Panel główny... 1 2 Edycja szablonu filtrów... 3 A) Zakładka Ogólne... 4 B) Zakładka Grupy filtrów... 5 C) Zakładka Kolumny... 17 D) Zakładka Sortowanie... 18 II.
Bardziej szczegółowo9 Zakup [ Zakup ] 56. 9. Zakup
9 Zakup [ Zakup ] 56 9. Zakup Moduł zakupu działa na podobnych zasadach, które opisywaliśmy w poprzednim rozdziale: Sprzedaż. Dla uproszczenia zastosowano niemal ten sam interfejs, który tam widzieliśmy,
Bardziej szczegółowoArkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.
ARKUSZ KALKULACYJNY Arkusz strona zawierająca informacje Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze. Obszar roboczy fragment ekranu, na którym dokonywane są obliczenia Wiersze
Bardziej szczegółowoECDL/ICDL Zaawansowane przetwarzanie tekstów Moduł A1 Sylabus, wersja 2.0
ECDL/ICDL Zaawansowane przetwarzanie tekstów Moduł A1 Sylabus, wersja 2.0 Przeznaczenie sylabusa Dokument ten zawiera szczegółowy sylabus dla modułu ECDL/ICDL Zaawansowane przetwarzanie tekstów. Sylabus
Bardziej szczegółowoFormularze w programie Word
Formularze w programie Word Formularz to dokument o określonej strukturze, zawierający puste pola do wypełnienia, czyli pola formularza, w których wprowadza się informacje. Uzyskane informacje można następnie
Bardziej szczegółowoSpis treści. Warto zapamiętać...2. Podstawy...3
Spis treści Warto zapamiętać...2 Podstawy...3 Moduły:...12 Aktualności...12 Fotogaleria i galeria wideo...13 Download...15 Przekierowanie...16 Formularz...17 Katalog produktów...18 Komponenty...18 Pokaz
Bardziej szczegółowoLaboratorium programowania urządzeń mobilnych
Laboratorium programowania urządzeń mobilnych Wprowadzenie Hierarcha klas dla aplikacji typu Silverlight tworzonej przez Visual Studio jest następująca: Obsługa ekranu W urządzeniach z Windows Phone 7
Bardziej szczegółowoMS Access formularze
MS Access formularze Formularze to obiekty służące do wprowadzania i edycji danych znajdujących się w tabelach. O ile wprowadzanie danych bezpośrednio do tabel odbywa się zawsze w takiej samej formie (arkusz
Bardziej szczegółowoAplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski
Aplikacje mobilne Pliki zasobów, grafiki, menu, podpinanie zdarzeń dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski Pliki zasobów Jak już robiliśmy wcześniej sporo rzeczy w Androidzie umieszczamy
Bardziej szczegółowoMakropolecenia w Excelu
Makropolecenia w Excelu Trochę teorii Makropolecenie w skrócie nazywane makro ma za zadanie automatyczne wykonanie powtarzających się po sobie określonych czynności. Na przykładzie arkusza kalkulacyjnego
Bardziej szczegółowoBAZY DANYCH MAKRA I PRZYCISKI. Microsoft Access. Adrian Horzyk. Akademia Górniczo-Hutnicza
BAZY DANYCH Microsoft Access MAKRA I PRZYCISKI Adrian Horzyk Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej Katedra Automatyki i Inżynierii Biomedycznej
Bardziej szczegółowoTWORZENIE PREZENTACJI MS POWERPOINT
TWORZENIE PREZENTACJI MS POWERPOINT Wstęp TWORZENIE PREZENTACJI MS POWERPOINT Czasami zdarza się, że zostajemy poproszeni o poprowadzenia spotkania czy szkolenia w firmie, w której pracujemy lub po prostu
Bardziej szczegółowoKomputery I (2) Panel sterowania:
Komputery I (2) Paweł Jamer Panel sterowania: Podstawowym miejscem z którego zarządzamy ustawieniami systemu Windows jest panel sterowania. Znaleźć tam możemy wszelkiego rodzaju narzędzia umożliwiające
Bardziej szczegółowoAdobe InDesign lab. 2 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Dokument wielostronicowy Książka Eksport do PDF... 7.
Spis treści: 1 Dokument wielostronicowy... 2 1.1 Książka... 2 1.2 Eksport do PDF... 7 strona 1 z 7 1 Dokument wielostronicowy Poniższa instrukcja zawiera przykład procedury projektowania dokumentów wielostronicowych
Bardziej szczegółowoPlatforma VULCAN. Jak rozpocząć pracę na Platformie VULCAN? Logowanie administratora do Platformy
Platforma VULCAN Jak rozpocząć pracę na Platformie VULCAN? Jednostka oświatowa, w której wdrażany jest system oparty na Platformie VULCAN, otrzymuje środowisko pracy, dostępne tylko dla zalogowanych użytkowników.
Bardziej szczegółowoZadanie 9. Projektowanie stron dokumentu
Zadanie 9. Projektowanie stron dokumentu Przygotowany dokument można: wydrukować i oprawić, zapisać jako strona sieci Web i opublikować w Internecie przekonwertować na format PDF i udostępnić w postaci
Bardziej szczegółowoJava: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
Bardziej szczegółowoPRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI
PRZEWODNIK PO ETRADER ROZDZIAŁ XII. ALERTY SPIS TREŚCI 1. OPIS OKNA 3 2. OTWIERANIE OKNA 3 3. ZAWARTOŚĆ OKNA 4 3.1. WIDOK AKTYWNE ALERTY 4 3.2. WIDOK HISTORIA NOWO WYGENEROWANYCH ALERTÓW 4 3.3. DEFINIOWANIE
Bardziej szczegółowoKolory elementów. Kolory elementów
Wszystkie elementy na schematach i planach szaf są wyświetlane w kolorach. Kolory te są zawarte w samych elementach, ale w razie potrzeby można je zmienić za pomocą opcji opisanych poniżej, przy czym dotyczy
Bardziej szczegółowoEXCEL TABELE PRZESTAWNE
EXCEL TABELE PRZESTAWNE ZADANIE 1. (3 punkty). Ze strony http://www.staff.amu.edu.pl/~izab/ pobierz plik o nazwie Tabela1.xlsx. Używając tabel przestawnych wykonaj następujące polecenia: a) Utwórz pierwszą
Bardziej szczegółowoBAZY DANYCH Formularze i raporty
BAZY DANYCH Formularze i raporty Za pomocą tabel można wprowadzać nowe dane, przeglądać i modyfikować dane już istniejące. Jednak dla typowego użytkownika systemu baz danych, przygotowuje się specjalne
Bardziej szczegółowoECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 6.0
ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 6.0 Przeznaczenie sylabusa Dokument ten zawiera szczegółowy sylabus dla modułu ECDL/ICDL Przetwarzanie tekstów. Sylabus opisuje zakres wiedzy i
Bardziej szczegółowoI. Spis treści I. Spis treści... 2 II. Kreator szablonów... 3 1. Tworzenie szablonu... 3 2. Menu... 4 a. Opis ikon... 5 3. Dodanie nowego elementu...
Kreator szablonów I. Spis treści I. Spis treści... 2 II. Kreator szablonów... 3 1. Tworzenie szablonu... 3 2. Menu... 4 a. Opis ikon... 5 3. Dodanie nowego elementu... 7 a. Grafika... 7 b. Tekst... 7 c.
Bardziej szczegółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoFormatowanie tekstu za pomocą zdefiniowanych stylów. Włączanie okna stylów. 1. zaznaczyć tekst, który chcemy formatować
Style Bardzo często w edytorze podczas pisania tekstu zachodzi potrzeba wielokrotnego powtórzenia czynności związanych z formatowaniem. Aby zapobiec stałemu otwieraniu okien dialogowych i wybierania stale
Bardziej szczegółowoSylabus Moduł 4: Grafika menedżerska i prezentacyjna
Sylabus Moduł 4: Grafika menedżerska i prezentacyjna Niniejsze opracowanie przeznaczone jest dla osób zamierzających zdać egzamin ECDL (European Computer Driving Licence) na poziomie podstawowym. Publikacja
Bardziej szczegółowoFormatowanie c.d. Wyświetlanie formatowania
Formatowanie c.d. Wyświetlanie formatowania Dzięki tej funkcji można łatwo sprawdzić, w jaki sposób został sformatowany dowolny fragment tekstu. Aby jej użyć, wybierz polecenie naciśnij Shift+F1. Na prawo
Bardziej szczegółowoKadry Optivum, Płace Optivum
Kadry Optivum, Płace Optivum Jak seryjnie przygotować wykazy absencji pracowników? W celu przygotowania pism zawierających wykazy nieobecności pracowników skorzystamy z mechanizmu Nowe wydruki seryjne.
Bardziej szczegółowoCompas 2026 Vision Instrukcja obsługi do wersji 1.07
Compas 2026 Vision Instrukcja obsługi do wersji 1.07 1 2 Spis treści Integracja...5 1.Compas 2026 Lan...5 Logowanie...7 Użytkownicy...8 Raporty...10 Tworzenie wizualizacji Widoki...12 1.Zarządzanie widokami...12
Bardziej szczegółowoSYSTEMY OPERACYJNE I SIECI KOMPUTEROWE
SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM
Bardziej szczegółowoDane w poniższej tabeli przedstawiają sprzedaż w dolarach i sztukach oraz marżę wyrażoną w dolarach dla:
Przykład 1. Dane w poniższej tabeli przedstawiają sprzedaż w dolarach i sztukach oraz marżę wyrażoną w dolarach dla: 24 miesięcy, 8 krajów, 5 kategorii produktów, 19 segmentów i 30 brandów. Tabela ta ma
Bardziej szczegółowoBackend Administratora
Backend Administratora mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 W tym celu korzystając z konsoli wydajemy polecenie: symfony generate:app backend Wówczas zostanie stworzona
Bardziej szczegółowoFormatowanie komórek
Formatowanie komórek Korzystając z włączonego paska narzędziowego Formatowanie możemy, bez szukania dodatkowych opcji sformatować wartości i tekst wpisany do komórek Zmiana stylu czcionki (pogrubienie,
Bardziej szczegółowoECDL/ICDL Grafika menedżerska i prezentacyjna Moduł S2 Sylabus - wersja 5.0
ECDL/ICDL Grafika menedżerska i prezentacyjna Moduł S2 Sylabus - wersja 5.0 Przeznaczenie Sylabusa Dokument ten zawiera szczegółowy Sylabus dla modułu ECDL/ICDL Grafika menedżerska i prezentacyjna. Sylabus
Bardziej szczegółowoOptimed24 Instrukcja ogólna
Instrukcja ogólna Dotyczy wersji: Spis treści 1. Listy rozwijane... (combobox) 3 2. Ogólne zasady... wyszukiwania 4 3. Operacje na... tabelach (gridach) 6 3.1. Grupowanie według... kolumn 11 3.2. Zapamiętywanie...
Bardziej szczegółowo4. Budowa prostych formularzy, stany sesji, tworzenie przycisków
4. Budowa prostych formularzy, stany sesji, tworzenie przycisków 1. Utwórz formularz tabelaryczny umożliwiający modyfikację prowadzących listę przebojów. a. Zaloguj się do systemu APEX podając znaną Ci
Bardziej szczegółowo