Budowa aplikacji w technologii.net wykład 05 Polecenia i zasoby

Wielkość: px
Rozpocząć pokaz od strony:

Download "Budowa aplikacji w technologii.net wykład 05 Polecenia i zasoby"

Transkrypt

1 Budowa aplikacji w technologii.net wykład 05 Polecenia i zasoby 1/52 Commands polecenia Polecenie jest wyższym poziomem abstrakcji, niż zdarzenie reprezentuje zadanie, które chce wykonać użytkownik (np. otworzyć plik, skopiować tekst do schowka, wydrukować dokument). Zdarzenia są akcjami, które użytkownik musi podjąć, aby wykonać zadanie. W standardowym scenariuszu każde polecenie może być wydane na wiele sposobów: menu, przycisk na pasku narzędzi, skrót klawiaturowy, etc. System poleceń w WPF pozwala wydzielić abstrakcję zadań i utworzyć połączenie miedzy akcją (lub kontrolką) uruchamiającą polecenie a wykonującą je metodą. Pozwala to przenieść kod wykonujący zadania poza kod kontrolek i zdarzeń (w dobrze zaprojektowanej aplikacji logika nie powinna być umieszczona w handlerach zdarzeń, ale metodach wyższego poziomu), a jedno polecenie może być powiązane z wieloma elementami interfejsu użytkownika. Polecenie może być wyłączone, co dezaktywuje uruchamiające je kontrolki.

2 Rozwiązanie przy użyciu zdarzeń (handler jest tylko przekaźnikiem między interfejsem a logiką): rozwiązanie przy użyciu poleceń: (za: Pro WPF in C# 2010 Windows Presentation Foundation in.net 4, Matthew MacDonald) 2/52

3 3/52 Składniki modelu poleceń w WPF: Command obiekt reprezentujący polecenie/ zadanie do wykonania (nie zawiera jednak kodu je wykonującego) CommandSource kontrolka lub akcja wywołująca polecenie CommandBinding obiekt łączący polecenie z jego wykonawcą (handlerem) CommandTarget element, na którym wykonywana jest akcja np. pole tekstowe na którym wykonywane jest Copy

4 4/52 Interfejs ICommand public interface ICommand { void Execute(object parameter); bool CanExecute(object parameter); event EventHandler CanExecuteChanged; } Execute uruchamia polecenie (ale nie zawiera logiki zadania) CanExecute zwraca stan polecenia (czy jest włączone) CanExecuteChanged zdarzenie wywoływane, gdy stan polecenia ulega zmianie

5 Interfejs ICommand RoutedCommand jest jedyną klasą bezpośrednio implementującą interfejs ICommand. Daje ona wsparcie dla zdarzeń typu tunneling oraz bubbling. Dodaje nazwę oraz kolekcję akcji myszy i klawiatury wywołujących polecenie public class RoutedCommand : ICommand { public InputGestureCollection InputGestures { get; } public string Name { get; } public Type OwnerType { get; } public bool CanExecute(Object parameter, IInputElement target) { } public void Execute(Object parameter, IInputElement target) { } } Klasa RoutedUICommand dodaje własność Text, odpowiadającą za tekst wyświetlany w kontrolkach powiązanych z poleceniem. public class RoutedUICommand : RoutedCommand { public string Text { get; set; } } 5/52

6 6/52 Biblioteka poleceń WPF: WPF udostępnia zastaw predefiniowanych poleceń do użytku twórcy aplikacji. Są one dostępne poprzez statyczne właściwości poniższych klas: ApplicationCommands polecenia związane ze schowkiem (np. Copy, Cut, Paste), zarządzaniem dokumentami (np. New, Open, Save, SaveAs) i operacjami poziomu aplikacji (np. Properties, Help, Print, Undo, Redo) NavigationCommands polecenia używane do nawigacji w aplikacjach o interfejsie opartym na stronach (np. BrowseBack, BrowseForward, NextPage, Refresh, IncreaseZoom) EditingCommands polecenia związane z edycją dokumentów, dotyczą poruszania się po dokumencie (MoveToLineEnd, MoveLeftByWord, MoveUpByPage), wyboru zawartości (SelectToLineEnd, SelectLeftByWord) i zmian formatowania (ToggleBold, ToggleUnderline) ComponentCommands polecenia używane przez komponenty interfejsu użytkownika (np. MoveLeft, ScrollPageUp) MediaCommands polecenia związane z zarządzaniem multimediami (np. Play, Pause, NextTrack, IncreaseVolume) Część z predefiniowanych poleceń ma już zdefiniowane domyślne połączenie z akcją (popularnymi skrótami klawiaturowymi: Ctrl+O, Ctrl+S, Ctrl+Z, etc.).

7 7/52 Używanie poleceń: 1. Wybór polecenia jednego z gotowych lub zdefiniowanie własnej klasy polecenia

8 8/52 Używanie poleceń: 1. Wybór polecenia 2. Przypisanie polecenia uruchamiającej je kontrolce lub/i akcji klawiatury/ myszy polecenia mogą być wywoływane z kodu poprzez metodę Execute przeważnie jednak przypisujemy je do kontrolek implementujących interfejs ICommandSource: kontrolki dziedziczące z ButtonBase, odnośniki (Hyperlink), elementy list (ListBoxItem) i menu (MenuItem) <Button Command="ApplicationCommands.Help">Help</Button> lub: <Button Command="Help">Help</Button> można też dodać: CommandParameter dodatkowy parametr dla polecenia CommandTarget element na którym ma być wykonane polecenie

9 Używanie poleceń: 1. Wybór polecenia 2. Przypisanie polecenia uruchamiającej je kontrolce lub/i akcji klawiatury/ myszy polecenia mogą być wywoływane z kodu poprzez metodę Execute przeważnie jednak przypisujemy je do kontrolek implementujących interfejs ICommandSource: kontrolki dziedziczące z ButtonBase, odnośniki (Hyperlink), elementy list (ListBoxItem) i menu (MenuItem) możemy dodać wiele źródeł jednego polecenia: <DockPanel> <Menu DockPanel.Dock="Top">... <MenuItem Header="Help"> <MenuItem Command="Help"></MenuItem> </MenuItem> </Menu> <StackPanel>... </StackPanel> </DockPanel> kontrolka MenuItem wykorzystuje własność Text oraz przypisany skrót do wyświetlania informacji dla użytkownika 9/52

10 10/52 Używanie poleceń: 1. Wybór polecenia 2. Przypisanie polecenia uruchamiającej je kontrolce lub/i akcji klawiatury/ myszy polecenia mogą być wywoływane z kodu poprzez metodę Execute przeważnie jednak przypisujemy je do kontrolek implementujących interfejs ICommandSource przypisanie polecenia akcji myszy lub klawiatury: ApplicationCommands.Help.InputGestures.Add( new MouseGesture(MouseAction.LeftDoubleClick)); ApplicationCommands.Help.InputGestures.Add( new KeyGesture(Key.H, ModifierKeys.Control)); lub: <Window.InputBindings> <KeyBinding Command="Help" Key="H" Modifiers="Ctrl"/> <MouseBinding Command="Help" MouseAction="LeftDoubleClick"/> </Window.InputBindings>

11 11/52 Używanie poleceń: 1. Wybór polecenia 2. Przypisanie polecenia uruchamiającej je kontrolce lub/i akcji klawiatury/ myszy 3. Stworzenie metody wykonującej polecenie private void MyHelp(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("Udało ci się uruchomić pomoc.", "Pomoc", MessageBoxButton.OK, MessageBoxImage.Information); e.handled = true; } e.command polecenie, które wywołało tę metodę e.parameter dodatkowy parametr, który mogliśmy przekazać u źródła

12 12/52 Używanie poleceń: 1. Wybór polecenia 2. Przypisanie polecenia uruchamiającej je kontrolce lub/i akcji klawiatury/ myszy 3. Stworzenie metody wykonującej polecenie 4. Stworzenie powiązania (CommandBinding) łączącego polecenie z wykonawcą wiąże logikę z poleceniem bez tego polecenie jest wyłączone, a kontrolki nieaktywne 5. Dodanie stworzonego powiązania do kolekcji poleceń okna // stworzenie dowiązania CommandBinding bind = new CommandBinding(); bind.command = ApplicationCommands.Help; // przypisanie handlera do obsługi zdarzenia bind.executed += MyHelp; // rejestracja dowiązania this.commandbindings.add(bind); powiązanie można dodać do dowolnego elementu, ale zazwyczaj dodawane jest do okna najwyższego poziomu zdarzenie odpalane jest przez przypisany poleceniu element, ale dzięki bubbling dotrze do elementu zawierającego powiązanie

13 13/52 Używanie poleceń: 1. Wybór polecenia 2. Przypisanie polecenia uruchamiającej je kontrolce lub/i akcji klawiatury/ myszy 3. Stworzenie metody wykonującej polecenie 4. Stworzenie powiązania (CommandBinding) łączącego polecenie z wykonawcą wiąże logikę z poleceniem bez tego polecenie jest wyłączone, a kontrolki nieaktywne 5. Dodanie stworzonego powiązania do kolekcji poleceń okna this.commandbindings.add( new CommandBinding(ApplicationCommands.Help, MyHelp));

14 14/52 Używanie poleceń: 1. Wybór polecenia 2. Przypisanie polecenia uruchamiającej je kontrolce lub/i akcji klawiatury/ myszy 3. Stworzenie metody wykonującej polecenie 4. Stworzenie powiązania (CommandBinding) łączącego polecenie z wykonawcą wiąże logikę z poleceniem bez tego polecenie jest wyłączone, a kontrolki nieaktywne 5. Dodanie stworzonego powiązania do kolekcji poleceń okna <Window...> <Window.CommandBindings> <CommandBinding Command="Help" Executed="MyHelp" /> </Window.CommandBindings>... </Window> wiązanie wykonuje się raz, niezależnie od liczby źródeł

15 15/52 Wyłączanie poleceń Przydatne w przypadku poleceń, które mogą być wywoływane tylko w określonych sytuacjach Włączanie/ wyłączanie odbywa się w obsłudze zdarzenia CanExecute: CommandBinding bind = new CommandBinding();... bind.canexecute += MyHelpCanExecute;... this.commandbindings.add(bind); lub: new CommandBinding(ApplicationCommands.Help, MyHelp, MyHelpCanExecute) lub: <CommandBinding Command="Help" Executed="MyHelp" CanExecute="MyHelpCanExecute"/>

16 16/52 Wyłączanie poleceń Przydatne w przypadku poleceń, które mogą być wywoływane tylko w określonych sytuacjach Włączanie/ wyłączanie odbywa się w obsłudze zdarzenia CanExecute: private void MyHelpCanExecute(object sender, CanExecuteRoutedEventArgs e) { if( /*... help dostępny...*/ ) e.canexecute = true; else e.canexecute = false; } uwaga: ta metoda może uruchamiać się często gdy WPF uzna, że mogła zajść jakaś zmiana można też uruchomić ręcznie, aby wymusić odświeżenie kontrolek: CommandManager.InvalidateRequerySuggested();

17 17/52 Przykład użycia: <Window...> <Window.CommandBindings> <CommandBinding Command="Save" Executed="MySave" CanExecute="MySaveCanExecute" /> </Window.CommandBindings> <StackPanel> <TextBox TextChanged="MyTextChanged"></TextBox> <Button Command="Save">Save</Button> </StackPanel> </Window>

18 public partial class Window1 : Window { public Window1() { InitializeComponent(); IsDirty = false; } private bool IsDirty { get; set; } } private void MySave(...) { IsDirty = false; } private void MySaveCanExecute(...) { e.canexecute = IsDirty; } private void MyTextChanged(...) { IsDirty = true; } 18/52

19 19/52 Techniki zaawansowane definiowanie własnych poleceń public class PizzaCommands { private static RoutedUICommand piecz; static PizzaCommands() { piecz = new RoutedUICommand( "Upiecz Pizzę", "Piecz", typeof(pizzacommands)); // dobrym pomysłem jest dodanie tutaj // skrótów klawiatury: piecz.inputgestures.add(new KeyGesture(Key.P, ModifierKeys.Control)); } public static RoutedUICommand Piecz { get { return piecz; } } }

20 20/52 Techniki zaawansowane definiowanie własnych poleceń <Window... xmlns:app="clr-namespace:wpfapplication1"... > <Grid>... <Button Command="app:PizzaCommands.Piecz"> Upiecz Pizzę </Button>... </Grid> </Window> Przed przypisaniem polecenia kontrolce, musimy zmapować własną przestrzeń nazw do zrozumiałej przez XAMLa (WpfApplication1 to nazwa projektu, app to wybrany alias).

21 Techniki zaawansowane wykorzystanie własności Text własność Text zawiera opisową nazwę polecenia; niektóre kontrolki (np. MenuItem) same go wykorzystują, w wypadku Buttonów możemy zrobić to ręcznie: <Button Command="SaveAs" Content="{x:Static ApplicationCommands.SaveAs}"></Button> jednak w ten sposób uzyskamy jedynie nazwę pobraną z ToString, a nie opisowy tekst polecenia; do tego lepiej wykorzystać wiązanie (o wiązaniach więcej na kolejnym wykładzie): <Button Command="SaveAs" Content="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"></Button> można go użyć również np. w tooltipie: <Button Command="SaveAs" ToolTip="{Binding RelativeSource={RelativeSource Self}, Path=Command.Text}"> <Image... /> </Button> 21/52

22 22/52 Techniki zaawansowane kontrolki z wbudowaną obsługą poleceń Niektóre kontrolki do wprowadzania danych mają wbudowaną obsługę poleceń (np. TextBox obsługuje polecenia Cut, Copy, Paste). Przyciski z przypisanymi poleceniami, umieszczone w toolbarze lub menu automatycznie to obsłużą, bez dowiązywania jakiejkolwiek logiki. Kontrolki same (po focusie) rozpoznają kiedy polecenie może być wywołane oraz co jest elementem docelowym. <StackPanel> <ToolBar>... <Button Command="Paste">Paste</Button> </ToolBar> <TextBox Name="txtBox"></TextBox> <WrapPanel>... <Button Command="Paste">Paste</Button> </WrapPanel> </StackPanel>

23 23/52 Techniki zaawansowane kontrolki z wbudowaną obsługą poleceń Niektóre kontrolki do wprowadzania danych mają wbudowaną obsługę poleceń (np. TextBox obsługuje polecenia Cut, Copy, Paste). Przyciski z przypisanymi poleceniami, umieszczone w toolbarze lub menu automatycznie to obsłużą, bez dowiązywania jakiejkolwiek logiki. Kontrolki same (po focusie) rozpoznają kiedy polecenie może być wywołane oraz co jest elementem docelowym. <StackPanel> <ToolBar>... <Button Command="Paste">Paste</Button> </ToolBar> <TextBox Name="txtBox"></TextBox> <WrapPanel>... <Button Command="Paste">Paste</Button> </WrapPanel> </StackPanel>

24 24/52 Techniki zaawansowane kontrolki z wbudowaną obsługą poleceń W wypadku kontrolek poza menu czy toolbarem możemy samodzielnie wskazać element docelowy polecenia: <TextBox Name="txtBox"></TextBox> <WrapPanel>... <Button Command="Paste" CommandTarget="{Binding ElementName=txtBx}"> Paste</Button> </WrapPanel> lub kazać poszukiwać go w elementach nadrzędnych (hierarchii zagnieżdżenia) <WrapPanel FocusManager.IsFocusScope="True">... <Button Command="Paste">Paste</Button> </WrapPanel>

25 25/52 Techniki zaawansowane kontrolki z wbudowaną obsługą poleceń W wypadku kontrolek poza menu czy toolbarem możemy samodzielnie wskazać element docelowy polecenia: <TextBox Name="txtBox"></TextBox> <WrapPanel>... <Button Command="Paste" CommandTarget="{Binding ElementName=txtBx}"> Paste</Button> </WrapPanel> lub kazać poszukiwać go w elementach nadrzędnych (hierarchii zagnieżdżenia) <WrapPanel FocusManager.IsFocusScope="True">... <Button Command="Paste">Paste</Button> </WrapPanel>

26 26/52 Techniki zaawansowane kontrolki z wbudowaną obsługą poleceń Gdy chcemy wyłączyć polecenie kontrolki: niekiedy mamy gotową flagę, np. TextBox pozwala na ustawienie IsUndoEnabled, aby wyłączyć Undo możemy też dodać własne wiązanie do tego polecenia, które dostarczy CanExecuted zawsze zwracające false: CommandBinding commandbinding = new CommandBinding( ApplicationCommands.Cut, null, SuppressCommand); txtbox.commandbindings.add(commandbinding); i: private void SuppressCommand(...) { e.canexecute = false; e.handled = true; }

27 27/52 Techniki zaawansowane kontrolki z wbudowaną obsługą poleceń Gdy chcemy wyłączyć polecenie kontrolki: niekiedy mamy gotową flagę, np. TextBox pozwala na ustawienie IsUndoEnabled, aby wyłączyć Undo możemy też dodać własne wiązanie do tego polecenia, które dostarczy CanExecuted zawsze zwracające false akcję (np. skrót klawiaturowy) uruchamiające to polecenie możemy związać poleceniem to nie jest polecenie : KeyBinding keybinding = new KeyBinding( ApplicationCommands.NotACommand, Key.C, ModifierKeys.Control); txt.inputbindings.add(keybinding);

28 28/52 Techniki zaawansowane wykorzystanie tego samego polecenia w kilku miejscach Efekt polecenia zależy od elementu docelowego (np. gdy mamy dwa pola tekstowe w oknie, Cut, Copy, Paste działają dla jednego z nich, zależnie od focusa) <StackPanel> <ToolBar> <Button Command="Cut">Cut</Button> <Button Command="Copy">Copy</Button> <Button Command="Paste">Paste</Button> </ToolBar> <TextBox ></TextBox> <TextBox ></TextBox> </StackPanel>

29 29/52 Techniki zaawansowane wykorzystanie tego samego polecenia w kilku miejscach Efekt polecenia zależy od elementu docelowego (np. gdy mamy dwa pola tekstowe w oknie, Cut, Copy, Paste działają dla jednego z nich, zależnie od focusa) Jak uzyskać ten efekt dla innych poleceń? <Window...> <Window.CommandBindings> <CommandBinding Command="Save" Executed="MySave" CanExecute="MySaveCanExecute" /> </Window.CommandBindings> <StackPanel> <ToolBar>... <Button Command="Save">Save</Button> </ToolBar> <TextBox TextChanged="MyTextChanged"></TextBox> <TextBox TextChanged="MyTextChanged"></TextBox> </StackPanel> </Window>

30 30/52 Techniki zaawansowane wykorzystanie tego samego polecenia w kilku miejscach Efekt polecenia zależy od elementu docelowego (np. gdy mamy dwa pola tekstowe w oknie, Cut, Copy, Paste działają dla jednego z nich, zależnie od focusa) Jak uzyskać ten efekt dla innych poleceń? <Window...> <Window.CommandBindings> <CommandBinding Command="Save" Executed="MySave" CanExecute="MySaveCanExecute" /> </Window.CommandBindings> <StackPanel> <ToolBar>... <Button Command="Save">Save</Button> </ToolBar> <TextBox TextChanged="MyTextChanged"></TextBox> <TextBox TextChanged="MyTextChanged"></TextBox> </StackPanel> </Window>

31 Techniki zaawansowane wykorzystanie tego samego polecenia w kilku miejscach Efekt polecenia zależy od elementu docelowego (np. gdy mamy dwa pola tekstowe w oknie, Cut, Copy, Paste działają dla jednego z nich, zależnie od focusa) Jak uzyskać ten efekt dla innych poleceń? private Dictionary<object, bool> isdirty = new...; private void MySave(...) { isdirty[e.source] = false; } private void MySaveCanExecute(...) { if (isdirty.containskey(e.source) && isdirty[e.source]) e.canexecute = true; else e.canexecute = false; } private void MyTextChanged(...) { isdirty[e.source] = true; } 31/52

32 32/52 Techniki zaawansowane wykorzystanie tego samego polecenia w kilku miejscach Efekt polecenia zależy od elementu docelowego (np. gdy mamy dwa pola tekstowe w oknie, Cut, Copy, Paste działają dla jednego z nich, zależnie od focusa) Jak uzyskać ten efekt dla innych poleceń? e.source zwraca element docelowy polecenia, jeżeli: kontrolka wywołująca polecenie znajduje się w toolbarze przypisaliśmy ręcznie CommandTarget nakażemy poszukiwania elementu poprzez FocusManager.IsFocusScope w przeciwnym wypadku e.source będzie kontrolką, która wywołała zdarzenie Możemy również tworzyć osobne wiązanie dla każdego pola tekstowego: <TextBox TextChanged="MyTextChanged"> <TextBox.CommandBindings> <CommandBinding Command="Save" Executed="MySave" CanExecute="MySaveCanExecute" /> </TextBox.CommandBindings> </TextBox>

33 33/52 Techniki zaawansowane wykorzystanie tego samego polecenia w kilku miejscach Efekt polecenia zależy od elementu docelowego (np. gdy mamy dwa pola tekstowe w oknie, Cut, Copy, Paste działają dla jednego z nich, zależnie od focusa) Jak uzyskać ten efekt dla innych poleceń? e.source zwraca element docelowy polecenia, jeżeli: kontrolka wywołująca polecenie znajduje się w toolbarze przypisaliśmy ręcznie CommandTarget nakażemy poszukiwania elementu poprzez FocusManager.IsFocusScope w przeciwnym wypadku e.source będzie kontrolką, która wywołała zdarzenie Możemy również tworzyć osobne wiązanie dla każdego pola tekstowego. Teraz sender powie nam dla którego pola została wywołana metoda: private void MySave(object sender, ExecutedRoutedEventArgs e) { string text = ((TextBox)sender).Text; MessageBox.Show("Dane do zapisania: " + text);... }

34 34/52 Techniki zaawansowane wykorzystanie tego samego polecenia w kilku miejscach Efekt polecenia zależy od elementu docelowego (np. gdy mamy dwa pola tekstowe w oknie, Cut, Copy, Paste działają dla jednego z nich, zależnie od focusa) Jak uzyskać ten efekt dla innych poleceń? Nieco nieeleganckie jest tworzenie wiązania osobno dla każdego pola, ale da się to rozwiązać definiując zasób: <Window.Resources> <CommandBinding x:key="binding" Command="Save" Executed="MySave" CanExecute="MySaveCanExecute"> </CommandBinding> </Window.Resources> i używając go: <TextBox.CommandBindings> <StaticResource ResourceKey="binding"></StaticResource> </TextBox.CommandBindings>

35 35/52 Techniki zaawansowane parametr przekazywany do Command niektóre polecenia wymagają dodatkowego parametru można odczytać go z innej kontrolki: <Button Command="NavigationCommands.Zoom" CommandParameter="{Binding ElementName=txtZoom, Path=Text}"> Zoom To Value </Button> Ograniczenia systemu poleceń: Polecenie może zmieniać automatycznie jedynie własność IsEnabled. Użyteczne mogłoby być też IsChecked, niestety, należy robić to ręcznie. Nie ma zbudowanych mechanizmów do śledzenia historii wykonywanych poleceń (do Undo/Redo).

36 36/52 Resources zasoby W WPF można wyróżnić dwa rodzaje zasobów: Assembly resources (binary resources) pliki z danymi (binarne), wbudowane w skompilowany podzespół aplikacji (np. obrazki) działają prawie identycznie jak assembly resources w innych aplikacjach.net, jedyną różnicą jest system adresujący, wykorzystywany przy odwoływaniu się od zasobów zasobem typu assembly w aplikacjach WPF jest np. plik BAML (skompilowany plik XAML) Object resources mogą być nimi dowolne obiekty, zdefiniowany przeważnie w XAMLu, umożliwiają przechowywanie różnego rodzaju informacji w centralnym miejscu, zapobiegając powtarzaniu kodu

37 37/52 Dodawanie zasobów typu assembly Należy dodać odpowiednie pliki do projektu i ustawić i właściwość Build Action na Resource (w celu lepszej organizacji, pliki mogą być grupowane w foldery).

38 38/52

39 39/52

40 40/52 Odwoływanie się do zasobów typu assembly Obiekt StreamResourceInfo daje dostęp m. in. do typu oraz strumienia danych zasobu: StreamResourceInfo sri = Application.GetResourceStream( new Uri("images/info.png", UriKind.Relative)); ContentType zwraca string opisujący typ danych Stream strumień (typu UnmanagedMemoryStream), z którego można odczytać bajty danych Niektóre klasy mają wbudowaną obsługę zasobów i potrafią z nimi współpracować (odnajdują je przez adres URI): <Image Source="images/info.png" /> lub: image1.source = new BitmapImage( new Uri("images/info.png", UriKind.Relative));

41 41/52 Odwoływanie się do zasobów typu assembly Przez adres URI w przypadku zasobów zawartych w innym podzespole (bibliotece dll, z której korzysta nasza aplikacja): img.source = new BitmapImage( new Uri("ImageLibrary;component/images/winter.jpg", UriKind.Relative)); Dodawanie zasobów z Build Action na Content (i Copy to Output Directory) Warto używać, gdy: chcemy zmieniać zasób bez ponownej kompilacji zasób jest bardzo duży plik jest opcjonalny i chcemy dostarczać aplikację również bez niego jest to plik dźwiękowy Content jest wygodniejsze, niż po prostu zwykłe dostarczenie plików z aplikacją i odczytywanie ich z dysku.

42 42/52 Object Resources Nowy system zasobów zintegrowany z XAML Możliwość definiowania zasobów w różnych miejscach (kontrolki, okna, cała aplikacja) Zasoby obiektowe (deklaratywne, logiczne): pozwalają na zdefiniowanie obiektu raz i używanie go w wielu miejscach kodu umożliwiają przeniesienie np. szczegółów formatujących kontrolek do centralnego miejsca, w którym mogą być w łatwy sposób zmieniane gdy pewna informacja jest oddzielona od reszty aplikacja, może być modyfikowana dynamicznie

43 43/52 Przykład wykorzystania Object resources definiowanie zasobu: <Window.Resources> <SolidColorBrush x:key="zielony" Color="Green" /> </Window.Resources> korzystanie z zasobu: <Button Background="{StaticResource zielony}"> Statycznie </Button> <Button Background="{DynamicResource zielony}"> Dynamicznie </Button>

44 44/52 Kolekcja zasobów Każdy element posiada właściwość Resources, która przechowuje kolekcję zasobów (ResourceDictionary) Kolekcja zasobów może przechowywać dowolne typy obiektów Przeważnie zasoby definiowane są na poziomie okna, gdyż wszystkie dzieci mają dostęp do zasobów ojca

45 45/52 Zasoby statyczne i dynamiczne Zasoby statyczne, w przeciwieństwie do dynamicznych, są pobierane raz (po deklaracji w kodzie XAML) i nie reagują na zmianę zasobu z poziomu kodu this.resources["zielony"] = new SolidColorBrush(Colors.Yellow); Zasoby dynamiczne pobierane są za każdym razem, gdy są potrzebne. Ponieważ wiąże się to z dodatkowym narzutem, z zasobów dynamicznych należy korzystać tylko wtedy, gdy: zasób zależy od ustawień systemowych (np. kolory systemowe) planujemy podmieniać obiekty dynamicznie

46 46/52 Zasoby statyczne i dynamiczne Dlaczego jednak to działa? SolidColorBrush brush = (SolidColorBrush)this.Resources["zielony"]; brush.color = Colors.Red; Ponieważ nie podmieniliśmy obiektu, a jedynie zmieniliśmy jego stan wewnętrzny. Zaś Brush informuje każdą używającą go kontrolkę o swojej zmianie.

47 47/52 Techniki zaawansowane zasoby niewspółdzielone Zazwyczaj powstaje jeden obiekt, z którego korzystają wszyscy używajacy tego zasobu. Możemy jednak udostępniać każdemu jego własny obiekt można rozważać wykorzystanie tego, jeśli każdy użytkownik chce osobno modyfikować zasób lub zasobem jest coś, czego nie możemy dzielić (np. element) są jednak lepsze sposoby by to osiągnąć. <SolidColorBrush x:key="tilebrush" x:shared="false"...> </SolidColorBrush>

48 48/52 Techniki zaawansowane dostęp do zasobów w kodzie W ten sposób mamy dostęp do zasobów zdefiniowanych w tej kontrolce: Button cmd = (Button)sender; Brush brush = (Brush)cmd.Resources["zielony"]; Dzięki temu nie musimy znać położenia zasobu nastąpi poszukiwanie, jak w wypadku korzystania z zasobu w XAMLu: Brush brush = (Brush)cmd.FindResource("zielony"); Jest też TryFindResource(), które w razie niepowodzenia nie rzuca wyjątku, tylko zwraca null.

49 49/52 Zasoby aplikacji: <Application...> <Application.Resources> <SolidColorBrush x:key="zielony" Color="Green" /> <SolidColorBrush x:key="czerwony" Color="Red" /> <SolidColorBrush x:key="niebieski" Color="Blue" /> </Application.Resources> </Application> Są dostępne w całej aplikacji są trochę jak zmienne globalne: nie należy z nimi przesadzać Jeszcze wyżej w drzewie poszukiwania znajdują się zasoby systemowe

50 Zasoby systemowe: Udostępniane są poprzez trzy klasy (przestrzeń nazw System.Windows): SystemColors, SystemFonts, SystemParameters label.foreground = new SolidBrush(SystemColors.WindowTextColor); lub: label.foreground = SystemColors.WindowTextBrush; lub: <Label Foreground="{x:Static SystemColors.WindowTextBrush}"> Napis </Label> lub: <Label Foreground="{DynamicResource {x:static SystemColors.WindowTextBrushKey}}"> Napis</Label> 50/52

51 51/52 Organizacja zasobów W celu umożliwienia współdzielenia zasobów między różnymi projektami tworzy się słowniki zasobów. Są one zapisywane w plikach XAML (dołączanych do aplikacji, z Build Action ustawionym na Page. w pliku AppBrushes.xaml: <ResourceDictionary... > <SolidColorBrush x:key="zielony" Color="Green" /> <SolidColorBrush x:key="czerwony" Color="Red" /> <SolidColorBrush x:key="niebieski" Color="Blue" /> </ResourceDictionary>

52 52/52 Organizacja zasobów Następnie powinny być dołączone do jakiejś kolekcji zasobów w aplikacji. <Application... > <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="AppBrushes.xaml"/> <ResourceDictionary Source="..."/> </ResourceDictionary.MergedDictionaries> <SolidColorBrush x:key="inne zasoby"... />... </ResourceDictionary> </Application.Resources> </Application>

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie 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ółowo

Instrukcja laboratoryjna cz.3

Instrukcja laboratoryjna cz.3 Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:

Bardziej szczegółowo

Windows Presentation Foundation

Windows Presentation Foundation 20 listopada 2006 1 Wprowadzenie Architektura 2 Wprowadzenie do XAML a Model zdarzeń 3 Style Szablony Dokumenty Wprowadzenie Architektura jest nową biblioteką Microsoftu do budowania interfejsów użytkownika.

Bardziej szczegółowo

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i

Bardziej szczegółowo

xmlns:prism=http://www.codeplex.com/prism c. <ContentControl prism:regionmanager.regionname="mainregion" />

xmlns: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ółowo

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Politechnika 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ółowo

Zdarzenia i polecenia

Zdarzenia 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ółowo

Programowanie obiektowe i zdarzeniowe wykład 1 Wprowadzenie do programowania zdarzeniowego

Programowanie 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ółowo

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące

Bardziej szczegółowo

WYKONANIE 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. 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ółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

Projekt Hurtownia, realizacja rejestracji dostaw produktów

Projekt Hurtownia, realizacja rejestracji dostaw produktów Projekt Hurtownia, realizacja rejestracji dostaw produktów Ćwiczenie to będzie poświęcone zaprojektowaniu formularza pozwalającego na rejestrację dostaw produktów dla naszej hurtowni. Dane identyfikujące

Bardziej szczegółowo

Informatyka II. Laboratorium Aplikacja okienkowa

Informatyka 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ółowo

Java: 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 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ółowo

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych

Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Rozdział 3. Zapisywanie stanu aplikacji w ustawieniach lokalnych Jacek Matulewski Materiały dla Podyplomowego Studium Programowania i Zastosowania Komputerów, sekcja Projektowanie i tworzenie aplikacji

Bardziej szczegółowo

1. Wprowadzenie do WPF i XAML. Tworzenie interfejsu użytkownika.

1. 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ółowo

Programownie w technologii.net wykład 6 Element Binding i Data Binding

Programownie 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ółowo

Programowanie w Javie

Programowanie 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ółowo

Laboratorium programowania urządzeń mobilnych

Laboratorium 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ółowo

Command (action, transaction, polecenie)

Command (action, transaction, polecenie) 1/10 Command (action, transaction, polecenie) Cel: Obiekt funkcyjny. Pozwala operować żądaniem jako obiektem wysyłać jako parametr, buforować, kolejkować, składować (dzienniki lub undo). Przykład: class

Bardziej szczegółowo

Utworzenie 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 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ółowo

Lokalizacja Oprogramowania

Lokalizacja Oprogramowania mgr inż. Anton Smoliński anton.smolinski@zut.edu.pl Lokalizacja Oprogramowania 02/12/2016 Wykład 5 Lokalizacja interfejsów użytkownika Agenda Programiści i tłumacze w procesie lokalizacji Tworzenie GUI

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Informacje 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ółowo

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP

Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP Korzystanie z edytora zasad grupy do zarządzania zasadami komputera lokalnego w systemie Windows XP W tym opracowaniu opisano, jak korzystać z edytora zasad grupy do zmiany ustawień zasad lokalnych dla

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w

Bardziej szczegółowo

Laboratorium Systemów SCADA

Laboratorium Systemów SCADA Laboratorium Systemów SCADA Ćwiczenie 4. Tworzenie skryptów w programie InTouch Opracował: dr hab. inż. Sebastian Dudzik 1. Cel ćwiczenia Zapoznanie się z rodzajami skryptów w programie InTouch. Zapoznanie

Bardziej szczegółowo

Zaawansowane aplikacje internetowe - laboratorium

Zaawansowane aplikacje internetowe - laboratorium Zaawansowane aplikacje internetowe - laboratorium Web Services (część 3). Do wykonania ćwiczeń potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2005. Ponadto wymagany jest

Bardziej szczegółowo

Programowanie telefonów z Windows Phone 7, cz. 4

Programowanie telefonów z Windows Phone 7, cz. 4 Programowanie telefonów z Windows Phone 7, cz. 4 Piotr M. Szczypiński Instytut Elektroniki Politechniki Łódzkiej http://www.eletel.p.lodz.pl/pms/ piotr.szczypinski@p.lodz.pl Budynek B9, II piętro, pokój

Bardziej szczegółowo

Rys. 3. Kod elementów na stronie po dodaniu kontrolek podstawowych.

Rys. 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ółowo

Instrukcja laboratoryjna nr.4

Instrukcja laboratoryjna nr.4 Języki programowania na platformie.net cz.2 2016/17 Instrukcja laboratoryjna nr.4 Język Visual Basic for.net Prowadzący: Tomasz Goluch Wersja: 3.1 I. Współpraca Visual Basic z C# Cel: Wykorzystanie w kodzie

Bardziej szczegółowo

Dodanie nowej formy do projektu polega na:

Dodanie 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ółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Programowanie w technologii.net wykład 4 Aplikacja i okna

Programowanie w technologii.net wykład 4 Aplikacja i okna Programowanie w technologii.net wykład 4 Aplikacja i okna 1/30 Aplikacja Aplikacja WPF jest reprezentowana przez instancję klasy System.Windows.Application. pilnuje ona kiedy program się uruchamia i kończy

Bardziej szczegółowo

MVVM i XAML w Visual Studio 2015 / Jacek Matulewski. Gliwice, cop Spis treści

MVVM 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ółowo

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1 Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1 Przykład 1- Wykonanie prostej aplikacji internetowej w technologii JavaEE w środowisku Netbeans 5.5 z wykorzystaniem

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu

Komputerowe systemy na rynkach finansowych. wykład 5. MQL4 - funkcje operujące na obiektach wykresu Komputerowe systemy na rynkach finansowych wykład 5 MQL4 - funkcje operujące na obiektach wykresu ObjectCreate - funkcja tworzy nowy obiekt graficzny, określonego typu oraz nadaje mu nazwę i przyporządkowuje

Bardziej szczegółowo

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej: Interfejs w MFC 1. Tworzenie nowego projektu Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej: Następnie wybieramy opcje jak na rysunku: Następnie wybieramy

Bardziej szczegółowo

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) 1. Udostępnianie wszystkich prywatnych atrybutów do prezentacji, wprowadzenie standardu nazewnictwa plików nazwy plików

Bardziej szczegółowo

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści

Microsoft Visual C : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop Spis treści Microsoft Visual C++ 2008 : praktyczne przykłady / Mariusz Owczarek. Gliwice, cop. 2010 Spis treści Co znajdziesz w tej książce? 9 Rozdział 1. Podstawy środowiska Visual C++ 2008 11 Język C++ a.net Framework

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo

Builder (budowniczy) Cel: Przykład:

Builder (budowniczy) Cel: Przykład: 1/8 Builder (budowniczy) Cel: Oddzielenie konstruowania złożonego obiektu od jego reprezentacji, tak aby ten sam proces konstrukcji mógł tworzyć różne reprezentacje. Przykład: 2/8 abstract class TableBuilder

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Programowanie komponentowe Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Struktura wykładu 1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application

Bardziej szczegółowo

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Interfejs GUI wysokiego poziomu. Biblioteka Swing. Programowanie zdarzeniowe. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Interfejs GUI wysokiego poziomu Pojęcie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Podstawowe cechy i możliwości języka Scala mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 2017 1 / 32 mgr inż. Krzysztof Szwarc Programowanie obiektowe Informacje

Bardziej szczegółowo

MVVM Light Toolkit. Julita Borkowska

MVVM Light Toolkit. Julita Borkowska MVVM Light Toolkit Julita Borkowska Czym jest MVVM Light Toolkit? MVVM Light Toolkit został stworzony w 2009 roku przez Laurenta Bugnion. Jest to biblioteka dostarczająca zestaw komponentów pomocnych podczas

Bardziej szczegółowo

Programowanie obiektowe i zdarzeniowe

Programowanie obiektowe i zdarzeniowe Programowanie obiektowe i zdarzeniowe wkład 2 klas i obiekt namespace ConsoleApplication1 // współrzędne punktu int, ; Jak zdefiniować w programie punkt? = 3; = 2; Może tak? // wpisanie informacji Console.WriteLine("

Bardziej szczegółowo

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: 1. Listener dla przycisku. Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod: W linii 24 tworzymy globalną metodę mglobal_onclicklistener,

Bardziej szczegółowo

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba. Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba. W tej klasie wykonaj następujące czynności: a) dodaj pole

Bardziej szczegółowo

Analiza i projektowanie aplikacji Java

Analiza i projektowanie aplikacji Java Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie

Bardziej szczegółowo

Symfonia Mała Księgowość 2013 Specyfikacja zmian

Symfonia Mała Księgowość 2013 Specyfikacja zmian Symfonia Mała Księgowość 2013 Specyfikacja zmian Odświeżony interfejs użytkownika 2 Rozwój wizerunkowy programu obejmuje odświeżenie interfejsu użytkownika. Wymieniona została ikona desktopowa programu,

Bardziej szczegółowo

Podstawy JavaScript ćwiczenia

Podstawy JavaScript ćwiczenia Podstawy JavaScript ćwiczenia Kontekst:

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz Aplikacja internetowa zbudowana w oparciu o środowisko Visual Web Java Server Faces. Zarządzanie obiektami typu SesionBeans, RequestBeen i ApplicationBeans, Laboratorium 1 Wzorce oprogramowania lab1, Okres

Bardziej szczegółowo

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS PROBLEMY TECHNICZNE Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS Jeżeli stwierdziłeś występowanie błędów lub problemów podczas pracy z programem DYSONANS możesz skorzystać

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Programowanie zaawansowane

Programowanie zaawansowane Programowanie zaawansowane Ćwiczenie 6 Komunikacja silnie typowana I. Utwórz aplikację okienkową realizującą proste obliczenia arytmetyczne. Obsługa zdarzeń w aplikacji typu Windows Form Application odbywa

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- 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ółowo

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

Bardziej szczegółowo

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku. Aktywności to podstawowe elementy związane z platformą Android. Dzięki poznaniu aktywności będziesz w stanie napisać pierwszą aplikację przeznaczoną na urządzenie mobilne. Po dodaniu kontrolek możesz w

Bardziej szczegółowo

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Specyfikacja API Runtime BAS 3.0

Specyfikacja API Runtime BAS 3.0 Specyfikacja API Runtime BAS 3.0 Spis treści Wstęp... 4 Informacja o dokumencie... 4 Opis usługi... 4 Typowy sposób wywołania usługi... 5 Udostępniane funkcje... 6 Funkcje liczące... 6 Execute... 6 SafeExecute...

Bardziej szczegółowo

Temat: Organizacja skoroszytów i arkuszy

Temat: 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ółowo

Dell Display Manager podręcznik użytkownika

Dell Display Manager podręcznik użytkownika Dell Display Manager podręcznik użytkownika Przegląd Korzystanie z okna dialogowego szybkich ustawień Ustawianie podstawowych funkcji wyświetlania Przypisywanie trybów ustawień wstępnych do aplikacji Stosowanie

Bardziej szczegółowo

Laboratorium 1 - Programowanie proceduralne i obiektowe

Laboratorium 1 - Programowanie proceduralne i obiektowe Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?

Bardziej szczegółowo

Jak używać funkcji prostego udostępniania plików do udostępniania plików w systemie Windows XP

Jak używać funkcji prostego udostępniania plików do udostępniania plików w systemie Windows XP Jak używać funkcji prostego udostępniania plików do udostępniania plików w systemie Windows XP System Windows XP umożliwia udostępnianie plików i dokumentów innym użytkownikom komputera oraz innym użytkownikom

Bardziej szczegółowo

Ustalanie dostępu do plików - Windows XP Home/Professional

Ustalanie dostępu do plików - Windows XP Home/Professional Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź

Bardziej szczegółowo

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Microsoft.NET: ASP.NET MVC + Entity Framework (Code First) Do realizacji projektu potrzebne jest zintegrowane środowisko programistyczne Microsoft Visual Studio 2012. W ramach projektu budowana jest prosta

Bardziej szczegółowo

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład

dr Artur Bartoszewski dr Artur Bartoszewski - Aplikacje mobilne - Wykład dr Artur Bartoszewski 1 Intencje Intencje (obok Aktywności) są jednym z podstawowych komponentów z których zbudowane są aplikacje systemu Android. Są one odpowiedzialne przede wszystkim za obsługę rozkazów

Bardziej szczegółowo

Programowanie w środowisku graficznym GUI

Programowanie 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ółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

WPF 4.5 : księga eksperta / Adam Nathan. Gliwice, cop Spis treści

WPF 4.5 : księga eksperta / Adam Nathan. Gliwice, cop Spis treści WPF 4.5 : księga eksperta / Adam Nathan. Gliwice, cop. 2015 Spis treści O autorze 11 Wstęp 13 Kto powinien przeczytać tę książkę? 14 Wymagania dotyczące oprogramowania 15 Przykładowe kody 16 W jaki sposób

Bardziej szczegółowo

Laboratorium 7 Blog: dodawanie i edycja wpisów

Laboratorium 7 Blog: dodawanie i edycja wpisów Laboratorium 7 Blog: dodawanie i edycja wpisów Dodawanie nowych wpisów Tworzenie formularza Za obsługę formularzy odpowiada klasa Zend_Form. Dla każdego formularza w projekcie tworzymy klasę dziedziczącą

Bardziej szczegółowo

using System;... using System.Threading;

using System;... using System.Threading; Kontekst synchronizacji Wątek w platformie.net może posiadać kontekst synchronizacji reprezentowany przez instancję klasy SynchronizationContext lub jej klasy potomnej. Jeżeli wątek posiada taki kontekst

Bardziej szczegółowo

Programowanie Obiektowe GUI

Programowanie Obiektowe GUI Programowanie Obiektowe GUI Swing Celem ćwiczenia jest ilustracja wizualnego tworzenia graficznego interfejsu użytkownika opartego o bibliotekę Swing w środowisku NetBeans. Ponadto, ćwiczenie ma na celu

Bardziej szczegółowo

Leszek Stasiak Zastosowanie technologii LINQ w

Leszek 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ółowo

Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika

Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika Dell UltraSharp UP3017 Dell Display Manager Instrukcja użytkownika Model: UP3017 Model - zgodność z przepisami: UP3017t UWAGA: UWAGA oznacza ważną informację, pomocną w lepszym używaniu komputera. Copyright

Bardziej szczegółowo

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 4 Budowa prostych formularzy, stany sesji, tworzenie przycisków Plan Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza 2 Formularz i jego typy Tworzenie formularza

Bardziej szczegółowo

Klasy cd. Struktury Interfejsy Wyjątki

Klasy cd. Struktury Interfejsy Wyjątki Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury

Bardziej szczegółowo

MentorGraphics ModelSim

MentorGraphics ModelSim MentorGraphics ModelSim 1. Konfiguracja programu Wszelkie zmiany parametrów systemu symulacji dokonywane są w menu Tools -> Edit Preferences... Wyniki ustawień należy zapisać w skrypcie startowym systemu

Bardziej szczegółowo

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

Systemy wirtualnej rzeczywistości. Komponenty i serwisy Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Systemy wirtualnej rzeczywistości Laboratorium Komponenty i serwisy Wstęp: W trzeciej części przedstawione zostaną podstawowe techniki

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main

Kompilacja javac prog.java powoduje wyprodukowanie kilku plików o rozszerzeniu.class, m.in. Main.class wykonanie: java Main Język obiektowy Wykład 13 Programowanie obiektowe z lotu ptaka, str 1 James Gosling, Mike Sheridan, Patrick Naughton Sun Microsystems 1995(20latmłodszyodC) C jest językiem proceduralnym Java jest językiem

Bardziej szczegółowo

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS

Program szkoleniowy. 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS Program szkoleniowy Microsoft Excel VBA Poziom Podstawowy 24 h dydaktycznych (18 h zegarowych) NAZWA SZCZEGÓŁY CZAS 1. Nagrywanie makr Procedura nagrywania makra Nadanie odpowiedniej nazwy Przypisanie

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Architektura interfejsu użytkownika

Architektura interfejsu użytkownika Uniwersytet Jagielloński Interfejsy graficzne Wykład 3 Architektura interfejsu użytkownika Barbara Strug 2011 Hall of shame Hall of Shame Hall of Fame O czym dzisiaj Model Widok- Kontroler Hierarchia widoków

Bardziej szczegółowo

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,

Bardziej szczegółowo

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4

SZYBKI START. Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2. Szyfrowanie/odszyfrowanie danych 4 SZYBKI START Tworzenie nowego połączenia w celu zaszyfrowania/odszyfrowania danych lub tekstu 2 Szyfrowanie/odszyfrowanie danych 4 Szyfrowanie/odszyfrowanie tekstu 6 Tworzenie nowego połączenia w celu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. Część XVII C++ Funkcje Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład. 2 3 Tworzymy deklarację i definicję funkcji o nazwie pobierzln() Funkcja

Bardziej szczegółowo

Podstawy Programowania 2

Podstawy Programowania 2 Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu

Bardziej szczegółowo

PHP 5 język obiektowy

PHP 5 język obiektowy PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje

Bardziej szczegółowo