360 likes | 604 Views
Urnik. XE2: LiveBindings. LiveBindings ?. Ogrodje za prenos podatkov Lastnost ⇒ lastnost Lastnost ⇔ lastnost Seznam ⇔ lastnost Lastnost ⇔ objekt …. LiveBindings !. XE2, XE 3 ⇒ RAD Studio, Delphi , C++ Builder Windows 32/64, OS X, (iOS) ⇒ VCL, FireMonkey. Za. Proti.
E N D
LiveBindings? • Ogrodje za prenos podatkov • Lastnost ⇒ lastnost • Lastnost ⇔ lastnost • Seznam ⇔ lastnost • Lastnost ⇔ objekt • …
LiveBindings! • XE2, XE3⇒ • RAD Studio, Delphi, C++ Builder • Windows 32/64, OS X, (iOS) ⇒ • VCL, FireMonkey
Za Proti Težaven začetek Zapleteno iskanje napak Počasnost • Programiranje brez programiranja • Ločevanje vmesnika od poslovne logike • Emulacija podatkovno osveščenih gradnikov • Simulacija podatkov
Dve vrsti živih povezav • Managed • Programsko obveščamo o spremembah • Unmanaged • Spremembe so zaznane samodejno
Izrazi • Konstante (nizi, števila) • ' ali " • Operatorji • + - * / < > • Oklepaji • Lastnosti objektov v dosegu • Owner.<lastnost> • Funkcije objektov v dosegu • TBindingsList, Methods • Lastne funkcije
Izrazi in žive povezave • Izraz (expression) <> živa povezava (LiveBinding) • Ena živa povezava, več izrazov • Izračunajo se zaporedno • Izrazi imajo lahko stranske učinke!
Izhodni pretvorniki • Samodejno pretvarjanje izraza v tip izhodne lastnosti • TBindingsList, OutputConverters • Lastni pretvorniki
Komponente • TBindingsList • Seznam živih povezav • Notify • TBindScope, TBindScopeDB • Dodajanje funkcij/lastnosti drugim gradnikom
Povezovalni razredi • TBindExpressions • Managed • Ena živa povezava = en izraz • SourceExpression, ControlExpression • TBindExprItems • Managed • Ena živa povezava = več izrazov • FormatExpressions, ClearExpressions
Povezovanje seznamov • Enosmeren prenos podatkov • Običajno v povezavi z TBindScopeDB • TBindList • Povezovanje seznamov • TListBox, TComboBox, TListView, TStringGrid • TBindGridList • TStringGrid
TBindList • FormatControlExpressions • SourceExpression, ControlExpression • FormatExpressions • ClearControlExpressions
TBindGridList • FormatControlExpressions • ColumnExpressions • FormatControlExpressions • ColumnExpressions • ClearControlExpressions • ClearControlExpressions
Links • Unmanaged • IEditLinkObserver, IEditGridLinkObserver • Dvosmeren prenos podatkov • TBindScopeDB • TBindLink • TBindListLink • TBindGridLink • TBindPosition
TBindLink • (TBindExprItems) • FormatExpressions • ParseExpressions • ClearExpressions
TBindListLink • (TBindList) • FormatControlExpressions • FormatExpressions • ParseExpressions • ClearControlExpressions • PosSourceExpressions • PosControlExpressions
TBindGridLink • (TBindGridList) • FormatControlExpressions • ColumnExpressions • FormatColumnExpressions • FormatCellExpressions • ParseCellExpressions • ClearControlExpressions • PosSourceExpressions • PosControlExpressions
TBindPosition • IPositionObserver • TScrollBar (Position) • TBindScopeDB (RecNo) • TStringGrid (Row) • PosSourceExpressions • PosControlExpressions • PosClearExpressions
Povezovanje z objekti • Uporabniški vmesnik | Poslovni model • TBindings.CreateManagedBinding • TBindings.CreateAssociationScope • Person.Bind
FireMonkey • Data-aware • TBindDBEditLink, TBindDBTextLink, TBindDBCheckLink, TBindDBGridLink, TBindDBListLink, TBindDBImageLink, TBindDBMemoLink • BindNavigator • Link to DB Field, Link to DB DataSouce
Novosti • CustomFormat, CustomParse • BindNavigator v VCL • TBindSourceDB, TBindSourceDBX • TDataSource • TAdapterBindSource • TDataGeneratorAdapter • TPrototypeBindSource • TAdapterBindSource + TPrototypeBindSource
MVVM? • Model – View – ViewModel • Ločitev uporabniškega vmesnika od poslovnega modela • Arhitekturni vzorci • MVC, MVP, MVVM
MVVM • View • Uporabniški vmesnik • Forma, Frame, TPanel … • ViewModel • Abstrakcija uporabniškega vmesnika • Določa njegovo obnašanje • Model • Poslovna (domenska) logika
Model-View-ViewModel Predstavitev Domena Dostop do podatkov Pogledi (Views) Modeli pogledov (ViewModels) Model VLB
RAD MVVM Počasnejši razvoj Ločeni nivoji Aplikacija lahko raste Dva sloja lahko avtomatsko testiramo Olajšan razvoj aplikacij za različne operacijske sisteme/naprave • Hiter razvoj • Prepleteni nivoji • Hitro dosežemo kritično točko • Težavno avtomatsko testiranje
Primer: To-Do • Malcolm Groves, CodeRage 7