Risipa de key_press | Programare

Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Risipa de key_press | Programare - Programare .Net | Tehnici de programare | Tutoriale | Lectii si exemple

Controale WPF standard (I)

Urmatoarele controale sunt considerate “standard” in WPF:

System.Windows.Controls.Border
System.Windows.Controls.Button
System.Windows.Controls.CheckBox
System.Windows.Controls.ComboBox
System.Windows.Controls.Grid
System.Windows.Controls.Image
System.Windows.Controls.Label
System.Windows.Controls.ListBox
System.Windows.Controls.RadioButton
System.Windows.Controls.StackPanel
System.Windows.Control.TabControl
System.Windows.Controls.TextBox


System.Windows.Controls.Canvas
System.Windows.Controls.DockPanel
System.Windows.Controls.Frame


System.Windows.Controls.Menu
System.Windows.Controls.ToolBar
System.Windows.Controls.Primitives.StatusBar


System.Windows.Controls.DocumentViewer
System.Windows.Controls.FlowDocumentPageViewer


Despre unele dintre aceste controale am discutat deja, de exemplu Border. Voi reveni si asupra controalelor deja discutate completand acolo unde este cazul informatiile omise si folosindu-le in exemple care sa faciliteze si usureze intelegerea rolului lor. Aceste controale vor fi prezentate pe parcursul a cateva capitole: deoarece vreau sa fac prezentarea lor prin construirea unei aplicatii ordinea in care voi introduce si prezenta controalele nu este cea din lista ci o sa fie ordinea in care respectivele controale vor fi introduse in aplicatie; unele controae vor fi folosite nu pentru ca aduc un plus de functionalitate exemplului pe care il voi contrui, ci doar pentru a fi prezentate. Asupra tuturor controalelor voi reveni in momentul in care voi ajunge sa scriu despre DataBinding si despre template/style. Voi incerca sa introduc elemente noi progresiv, revenind la ceea ce deja am scris si imbunatatind sau completand informatia prezentata.

Continue reading

Ce mai e nou de 2 zile…

Asa cum, poate, ati remarcat, acest blog a fost “down” pentu mai mult de 30 de ore. Imi cer scuze celor care nu au reusit sa il acceseze. Se pare ca a fost o problema cu serverul pe care este gazduit, problema aparuta in paralel cu un atack al unui grup de hackers care au reusit sa imi modifice continutul paginilor, motiv pentu care am preferat sa raman “down” pana acum. Se pare, ca in afara de back-up-ul facut de firma de hodting ar trebui sa am si eu back-up-ul meu. Pana acum nu am dat prea mare importanta acestui lucru… ceea ce nu e bine.

Am fost si eu in “vacanta” de 2 zile, si acum, cand am revenit, si am deschis hotnews, citesc despre parteneriatul semnat intre Nokia si Microsoft. Se pare ca windows mobile va intra puternic pe platformele Nokia. Asa ca… programatori m$… viitorul suna bine. Si nu numai pentru programatori, ci si pentru utilizatori. M$, pentru telefoanele cu windows mobile 7, impune un anumit standard de calitate: ecran de o anumita dimensiune, o anumita rezolutie, un numar de butoane, camera foto, gps etc nu imi amintesc exact toate cerintele lor. Asta inseamna ca in viitor, cand voi cumpara un telefon Nokia cu windows 7, acesta va avea macar ceea ce microsoft cere pentru rularea OS-ului.

Continue reading

Dynamic in C# 4.0

In cadrul lansarii .Net 4.0, una din temele principale a fost legata de programare dinamica. Tot atunci, a fost introdus cuvantul cheie dynamic in C#.
Un obiect este definit ca dinamic prin faptul ca structura si comportamentul lui nu sunt conforme cu un tip static (pe care compilatorul il recunoaste).
Exemple de obiecte dinamice sunt obiecte provenite din limbaje de programare dinamice ca Python sau Ruby, obiecte care isi schimba structura – HTML DOM – si altele.

C# este un limbaj type-safe. Acest lucru inseamna ca o variabila poate fi accesata doar prin tipul asociat, adica nu se poate interactiona cu o variabila de tip string ca si cum ar fi una de tip integer. Altfel spus, C# suporta static type checking (limbajul verifica type safety la momentul compilarii). Complementar, exista dynamic type safety ce are loc la runtime.

Un limbaj dinamic are proprietati opuse limbajului static. Tipul expresiei sau variabilei nu este cunoscut la momentul compilarii.
Continue reading

Mi-ar prinde bine cateva idei.

S-ar putea sa fi remarcat ca am inceput sa scriu cate ceva (as vrea sa numesc ceea ce scriu tutorial, insa pana ce voi reusi sa scriu macar 10-15 articole ma abtin sa folosesc aceasta titulatura) despre WPF. As vrea sa descriu aceasta tehnologie cu cat mai multe exemple, cu programele utile (sau semiutile). Insa am cam ramas in pana de idei. Am ceva idei, insa mi-ar prinde bine o mana de ajutor.

Eu cred ca o metoda eficienta de invatare este prin exemple si exercitii, as vrea sa pot oferi cat mai multe exemple si exercitii. Daca e ceva ce ai vrea sa vezi pus intr-o aplicatie, un program pe care l-ai scris si ai vrea sa il vezi transpus in WPF, o idee de aplicatie, de metoda, de clasa, de demo de orice e binevenit sa imi scrie. In plus, putina interactiune nu strica!
Continue reading

WPF – utilizarea c# pentru UI

Pana acum am folosit XAML pentru a construi fereastra aplicatiei. Toate controalele au fost create cu ajutorul XAML, c# fiind folosit numai pentru diverse operatii logice. In continuare imi propun sa construiesc o aplicatie WPF fara a folosi XAML. Mai exact, in afara de fereastra propriu-zisa, tot continutul va fi cnstruit folosind numai c#.

Pentru asta voi crea un proiect nou, pe care il voi numi… FaraXaml. Din Solution Explorer voi deschide fisierul MainWindow.xaml.cs – fisier care contine numai urmatorul cod:
Continue reading

Fotografie panoramica

Am o fotografie panoramica facuta noaptea de pe acoperisul cladirii unde se afla biroul meu. Dimensiunile fotografiei sunt: 29149 x 2296 – ceea ce presupune ca pentru a o vedea in detaliu ar trebui facut putin zoom si apoi derulata imaginea in lateral.

Panorama Tel Aviv din DovHoz1

Am folosit un Canon EOS 550D, cu obiectiv standard (24-55). Fotografiile componente, 14 la numar, au urmatorii parametrii de expunere: diafragma (aperture) f/9, timp de expunere: 20 secunde, ISO 100, distanta focala 51 mm.

Tip pentru vizualizare: click dreapta, save image si apoi deschidere intr-un viewer (recomandarea mea: acdsee).

Controale in WPF – Containere

Controale in WPF:

In WPF exista cateva tipuri de controale container. Un astfel de container poate gazdui orice tip de continut (Content): string, obiect, UIElement etc. Containerele pot fi clasificate in 4 categorii:

  1. ContentControl: poate “gazdui” un singur element copil: Content. Window deriva din ContentControl, ceea ce inseamna ca o fereastra poate gazdui doar un singur element. Elementul gazduit poate fi de orice tip (object, string, UIElement etc).
  2. HeaderedContentControl: Este asemanator cu ContentControl cu diferenta ca acest control are o parte (proprietate) header in plus fata de Content. Exemple de controale: GroupBox, Expander, TabItem etc
  3. ItemsControl: Acest tip de control poate gazdui multiple obiecte, insa nu ca si Content ci ca ItemsControl. Exemple de astfel de controale ListBox, ListView.
  4. HeaderedItemsControl: Contine o colectie de elemente care au, fiecare, un header distinct. TreeView este un exemplu de element de tip HeaderedItemsControl. Alte controale care deriva din HeaderedItemsControl sunt ToolBar si MenuItem.

Continue reading

SFM – proiect final partea 4-a

Pentru ca am terminat scrisul codului si testele pentru aplicatia noastra, SFM, dorim ca ea sa fie instalata pe telefon si sa fie disponibila oricand. In acest caz, ne lovim de notiunea de “deployment”.

Software deployment se defineste ca un set de activitati care fac disponobil pentru utilizare un sistem software. Pentru ca fiecare sistem software este unic, este greu in a defini activitatile. Asfel, “deployment” trebuie interpretat ca un proces general ce va fi particularizat in functie de cerinte/caracteristici. In acest articol vom descrie cum vom proceda in cazul Windows Mobile 6.5.

Cream un nou proiect in solutie, de tip Smart Device CAB, pentru a incepe actiunea de “deploy” a aplicatiei.

NewProjecCab

Un fisier Cab este tipul implicit de “setup” pentru aplicatiile adresate Windows CE si Windows Mobile (fisierele .cab sunt corespondenta fisierelor .msi). Fisierele .cab sunt procesate de wceloader.exe si se poate instala un singur fisier .cab la un moment dat. Poate exista, totusi, situatia urmatoare: Un fisier .cab sa contina un alt .cab. Fisierul .cab continut nu poate fi instalat in timpul instalarii celui gazda. El trebuie sa fie instalat dupa ce se completeaza instalarea cab-ului container.

Alegem tipul proiectul, Smart Device Cab file, si apasam OK.

Continue reading

GC

Mi-am propus ca in acest articol sa scriu despre modul in care .Net Framework, mai exact CLR, administreaza obiectele in memorie prin intermediul Garbage Collection. De asemenea, voi incerca sa identific legaturile dintre Finalize si Dispoze, folosite pentru crearea obiectelor de tip disposable.

Dupa cum stiti, ca programator C# nu trebuie sa eliberezi un obiect din memorie. Obiectele .Net sunt alocate in managed heap unde acestea vor fi distruse de garbage collector mai tarziu.

Managed heap

Managed heap este o “portiune de memorie” folosita de toate limbajele .Net pentru alocarea referintelor catre tipurile de obiecte create.

Continue reading