Podstrony
- Strona startowa
- Andrzej.Sapkowski. .Ostatnie.Zyczenie.[www.osiolek.com].1
- Philip K. Dick Transmigracja Timothyego Archera
- Hyperion
- Michail Bulhakow Mistrz i Malgorzata v 1.1
- Denning Troy Gwiazda po gwiezdzie
- Cornwell Bernard Trylogia Arturiańska Tom 1 Zimowy Monarcha (2)
- Clarke Arthur C 2001 odyseja kosmiczna (2)
- Umberto Eco Imie Rozy (2)
- Stewart Ian, Pratchett Terry, C
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- boszanna.htw.pl
[ Pobierz całość w formacie PDF ]
.OnValidateInna droga do ustanowienia reguÅ‚ logiki aplikacji w TField wiedzie poprzezzdarzenie OnValidate.Każdy TField ma zwiÄ…zane ze sobÄ… zdarzenieOnValidate, którego można użyć do weryfikacji jego wartoÅ›ci.Kod, który siÄ™w nim znajdzie, może zrobić praktycznie wszystko - może porównać wartoÅ›ci, jakapole otrzymuje, ze staÅ‚ymi, innymi polami lub rezultatami zapytania.JeÅ›listwierdzimy, że wartość, którÄ… pole otrzymuje, jest nieprawidÅ‚owa, po prostugenerujemy wyjÄ…tek.Powoduje to wyÅ›wietlenie komunikatu o bÅ‚Ä™dziei uniemożliwia zatwierdzenie wiersza.Możemy tworzyć nasze wÅ‚asne, pochodnetypy wyjÄ…tków lub korzystać tylko z tych, których dostarcza Delphi.OnExitInnym powszechnie wykorzystywanym miejscem implementowania bazujÄ…cych napolach reguÅ‚ logiki aplikacji jest zdarzenie OnExit w skojarzonych z danymi(data-aware) komponentach, takich jak DBEdit.Do zdarzenie OnExit możemydoÅ‚Ä…czyć kod, który bÄ™dzie siÄ™ wykonywać w momencie, gdy użytkownik zaczniewychodzić z danej kontrolki.Kod ten może przypisywać wartoÅ›ci innym polom(na przykÅ‚ad, przypisywać datÄ™ zakoÅ„czenia w oparciu o dostarczonÄ… datÄ™rozpoczÄ™cia), dokonywać sprawdzenia wartoÅ›ci lub też uwidaczniać albo ukrywaćinne komponenty na formularzu w zależnoÅ›ci od wprowadzonych wczeÅ›niejwartoÅ›ciZbiory danych a reguÅ‚y logiki aplikacjiNastÄ™pnym poziomem, na którym konstruować można reguÅ‚y logiki aplikacjiaplikacji, jest poziom zbiorów danych (DataSet).W klasie komponentówDataSet (której pochodnymi sÄ… wszystkie komponenty Table, Queryi StoredProc) wystÄ™pujÄ… trzy zdarzenia, które zasÅ‚ugujÄ… na specjalnÄ… uwagÄ™:OnNewRecord, BeforeDelete i BeforePost.OdpowiadajÄ… one z grubszaprocedurom zdarzeÅ„ INSERT, DELETE I UPDATE, które można podÅ‚Ä…czać dotabel bazy danych.OnNewRecordZdarzenie OnNewRecord zachodzi za każdym razem, gdy do tabeli dodawanyjest nowy rekord.Można go wykorzystać do nadawania wartoÅ›ci kolumnom tabeli.A oto próbka kodu, dostarczajÄ…ca domyÅ›lnych wartoÅ›ci kolumnom PetDepositi LawnService z tabeli LEASE, wykorzystywanej w sekcji Tutorial książki:638 Część IVprocedure TForm1.taLEASENewRecord(DataSet: TDataSet);begintaLEASEPetDeposit.Value:=0;taLEASELawnService.Value:=True;end;BeforeDeleteZdarzenie BeforeDelete, jak sama nazwa wskazuje, poprzedza kasowaniewiersza.Zdarzenia BeforeDelete można użyć do sprawdzenia poprawnoÅ›ciusuwania wiersza zanim zostanie ono wykonane.Na przykÅ‚ad można jewykorzystać aby zapobiec usuniÄ™ciu wiersza, który jest powiÄ…zany z wierszamiinnej tabeli.JeÅ›li w trakcie obsÅ‚ugi tego zdarzenia wygenerujemy wyjÄ…tek,usuwanie zostaje przerwane.Poniżej podajemy próbkÄ™ kodu używajÄ…cego tabelLEASE i PROPERTY z części drugiej tej książki:taLEASE.IndexName:= Propery_Number ;If taLEASE.FindKey([taPROPERTYProperty_Number.AsInteger]) thenraise EDatabaseError.Create( Property_Number is in use - deletefailed );Ten fragment programu zabezpiecza przed usuniÄ™ciem wierszy tabeli PROPERTYktóre posiadajÄ… odwoÅ‚anie do wierszy w tabeli LEASE.BeforePostZdarzenie BeforePost, jak sama nazwa wskazuje, zachodzi tuż przedzapisaniem wiersza w jego rodzimej tabeli.Zdarzenia BeforePost można użyćdo sprawdzenia poprawnoÅ›ci wartoÅ›ci w nowym wierszu lub zmian dokonanychw wierszu istniejÄ…cym.JeÅ›li w trakcie obsÅ‚ugi tego zdarzenia wygenerujemywyjÄ…tek, zatwierdzanie zostaje przerwane.Poniżej podajemy próbkÄ™ koduzapewniajÄ…cÄ…, że chronologicznie data LeaseEndDate wypadnie zawsze podacie LeaseBeginDate:procedure TForm1.taLEASEBeforePost(DataSet: TDataSet);beginIf (taLEASELeaseBeginDate.AsDateTime >¥' taLEASELeaseEndDate.AsDateTime) thenraise EDatabaseError.Create( Lease ending date m.¥' ust come after its beginning date );end;Istnieje kilka innych specjalnych zdarzeÅ„ DataSet, które można wykorzystać doimplementowania bazujÄ…cych na programie reguÅ‚ logiki aplikacji.Tabela 21.1RozdziaÅ‚ 21 ReguÅ‚y logiki aplikacji w aplikacjach Delphi 639zawiera listÄ™ zdarzeÅ„ dostÄ™pnych w klasie komponentów DataSet, które majÄ…zwiÄ…zek z projektowaniem reguÅ‚ logiki aplikacji.Tabela 21.2.Metody DataSet, które mogÄ… siÄ™ przydać przy implementowaniubazujÄ…cych na aplikacji reguÅ‚ biznesowych.Zdarzenie Czynnik wywoÅ‚ujÄ…cyAfterCancelZachodzi po CancelAfterCloseZachodzi po zamkniÄ™ciu DataSetAfterDeleteZachodzi po DeleteAfterEditZachodzi po EditAfterInsertZachodzi po Insert lub AppendAfterOpenZachodzi po otwarciu DataSetAfterPostZachodzi po PostBeforeCancelZachodzi przed CancelBeforeCloseZachodzi przed zamkniÄ™ciem DataSetBeforeEditZachodzi przed EditBeforeInsertZachodzi przed Insert lub AppendBeforeOpenZachodzi przed otwarciem DataSetOnCalcFieldZachodzi gdy pole obliczane potrzebuje wartoÅ›ciOnDeleteErrorZachodzi gdy przy kasowaniu rekordu pojawia siÄ™problemOnEditErrorZachodzi gdy przy redagowaniu rekordu pojawia siÄ™problemOnFilterRecordZachodzi gdy filtrowanie jest uaktywnione i DataSetpotrzebuje wiersza
[ Pobierz całość w formacie PDF ]