Budowa aplikacji w technologii.net wykład 05 Polecenia i zasoby
|
|
- Feliks Urbaniak
- 5 lat temu
- Przeglądów:
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 Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,
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:
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.
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
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
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
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
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
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
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
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
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
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.
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ń
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
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.
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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("
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,
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
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
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,
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;
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
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
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ć
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
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
- 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
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
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
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
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
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
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...
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
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
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?
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
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ź
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
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
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
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
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
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
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ą
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
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
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
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
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
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