Wykład4PB
Argumenty wyszukiwania w DataWindow.
Tworząc obiekt DataWindow musimy precyzyjnie określić, które dane mają być
wybrane do DataWindow oraz jakie warunki mają spełniać te dane. Jednak
konstruując odpowiednie zapytanie w SQL zwykle na sztywno określaliśmy te
warunki. Istnieje jednak możliwość zdefiniowania argumentów wyszukiwania, które
następnie zostaną wykorzystane do skonstruowania dynamicznie warunku WHERE.
Użytkownik w trakcie działania aplikacji będzie mógł określić wartość argumentu
.
Aby utworzyć DataWindow z argumentami wyszukiwania, wejść do trybu
projektowania pytania SQL i następnie wybrać opcję Design ą Retrieval arguments
i zdefiniować tam nazwy i typ argumentów wyszukiwania. Tak zdefiniowane
argumenty wykorzystujemy do budowania kryterium wyboru, wstawiając go po prawej
stronie warunku i poprzedzając dwukropkiem ":" . ( np Where placa=:pl_bru)
Zdefiniowane argumenty mogą być wykorzystane w obiekcie dialogowym DataWindow
do dynamicznego wybierania danych.
Poniżej okno dialogowe do definiowania argumentów wyszukiwania.
Formaty wyświetlania i style edycji.
Formaty wyświetlania i edycji w PowerBuilderze definiują sposób wprowadzania
danych oraz ich wyświetlania . Mogą też definiować reguły służące do
sprawdzania poprawności danych. W PB, formaty wyświetlania i edycji danych
nazywane są rozszerzonymi atrybutami i definiowane mogą być w bazie danych
podczas definiowania atrybutów tabeli lub w DataWindow, jednak wówczas ich
zasięg jest ograniczony do obiektu DataWindow.
Atrybuty rozszerzone dzielimy na :
formaty wyświetlania, które określają sposób wyświetlania danych i nie wpływają
na sposób przechowywania danych w bazie mogą mieć postać masek
na przykład: @@@-##-@@@@@ wyprowadzi dane w postaci ttt-12-abcde #####,##
wyprowadzi dane jako liczby w formacie dziesiętnym 22243,87,
dd/mm/yy wyprowadza daty w postaci dzień/miesiąc/rok np 22/06/99
Formaty tekstowe mogą mieć postać: format_tekstu;format null
Do wyprowadzania znaków alfanumerycznych używany jest znak @.
Każdy inny znak w szablonie jest wstawiany do tekstu.
Formaty liczbowe są cztero-członowe i mają postać:
format_liczby_dodatniej;format_liczby_ujemnej;format_zera:format null
Dwa pierwsze człony są obowiązkowe. Do wyprowadzania cyfr używane są znaki
# lub 0. Każdy inny znak jest wstawiany do liczby.
Formaty daty mogą mieć dwa człony : format_daty;format null
Daty mogą być wyświetlane w formie krótkiej lub długiej wykorzystując
następujące znaki: d, dd reprezentuje dzień bez zera wiodącego i z zerem,
ddd reprezentuje skróconą nazwę dnia.
m, mm reprezentuje miesiąc bez zera i z zerem wiodącym, mmm reprezentuje
nazwę miesiąca, yy, yyyy to ostatnie dwie cyfry roku oraz cztery cyfry roku
odpowiednio.
style edycji to formaty służące do określenia wyglądu danych podczas
wprowadzania ich do bazy oraz wyświetlania ich. Pilnują one poprawności
wprowadzanych danych przez użytkownika i ułatwiają wprowadzanie skomplikowanych
formatów danych. Najczęstszą formą definiowania stylu edycji są maski edycji,
które mogą zawierać następujące wypełniacze i znaki formatujące:
Formaty tekstowe
! - duża litera,
^ - mała litera,
# - cyfra,
a - znak alfanumeryczny,
x - dowolny znak,
Formaty liczbowe zawierają dwa znaki formatujące:
# - cyfra i kasowanie wiodącego zera,
0 - zera wiodące
Formaty daty pozwalają użyć następujących znaków:
dd - dzień,
mm, mmm - miesiąc,
yy, yyyy - rok,
jjj - data juliańska
Style edycji mogą być definiowane bezpośrednio w bazie danych poprzez maski
edycji oraz w DataWindow poprzez maski edycji EditMask oraz inne style
takie jak:
Checkbox - przyciski wyboru jednej lub kilku opcji
RadioButton - przyciski wykluczające się
DropDownListBox - rozwijalna lista wyboru (statyczna)
DropDownDataWindow - rozwijalna lista wyboru (dynamiczna)
reguły poprawności to wyrażenia służące do testowania poprawności danych
wprowadzanych do bazy. Reguły poprawności mogą być definiowane w bazie danych
lub w DataWindow
Jeśli reguły definiujemy w bazie danych, to do wartości atrybutu odwołujemy się
przez parametr @col . W regułach poprawności możemy zastosować wyrażenia i
funkcje zdefiniowane w języku PowerScript . Przykłady:
@col > 0 , IsNumber(@col), Match(@col, "^[A][0-9][0-9]")
W regułach poprawności w DataWindow do wartości atrybutów odwołujemy się
poprzez funkcję GetText() oraz typ danej.
Przykład. IsNumber(gettext()), IsTime(gettext()), string(gettext()) = "AB"
Tworzenie Menu oraz okna wielodokumentowego.
Głównym oknem aplikacji w PowerBuilderze może być standardowe okno główne jedno
dokumentowe lub okno wielo dokumentowe typu MDI. Wygodniejsze i częściej
stosowane jest oczywiście okno MDI, w którym możemy umieścić kilka okien
potomnych (dzieci) jedno dokumentowych traktowanych jako arkusze. Okno MDI
oprócz obszaru klienta może również zawierać menu i pasek stanu w którym
wyświetlone mogą być informacje pomocy czyli MicroHelp. Zarówno menu jak i Help
są bardzo wygodnymi i potrzebnymi obiektami aplikacji. W ramce MDI może być
otwartych kilka arkuszy jednocześnie ale tylko jeden jest aktywny. Użytkownik
może oczywiście zmieniać okno bieżące poprzez kliknięcie myszką na innym oknie.
W celu utworzenia okna MDI musimy utworzyć obiekt Window i ustawić jego
właściwości na wartość MDI Frame with MicroHelp. W polu Menu Name należy podać
nazwę obiektu Menu, który zawiera stworzone przez nas wcześniej menu. Okno Mdi
może być wyświetlone w postaci ramki zajmującej cały ekran lub ramki normalnej
wielkości lub zminimalizowanej. Za wielkość ramki odpowiada atrybut position,
który może przyjmować wartośći : maximized, minimized. Ramka MDI może zawierać
ikonę wybraną z galerii PB lub z własnej kolekcji ikon. Ikona ta będzie
wyświetlana na przycisku zminimalizowanej aplikacji.
Tworzenie menu
Menu jest obiektem tworzonym za pomocą edytora uruchamianego z menu
podręcznego. Może ono być dołączone do dowolnego okna lub dowolnej liczby
okien. W edytorze menu
możemy dodawać nowe elementy menu lub submenu. Wpisujemy nazwę menu i
określamy
literę poprzez którą możemy wybrać to menu. Wybór litery uzyskuje się poprzez
wpisanie przed literą znaku &. Nie należy stosować tych samych liter w jednym
menu. Okno właściwości obiektu Menu pozwala na ustalenie nazwy definiowanego
menu oraz wpisanie treści komentarza w polu MicroHelp, który następnie pojawia
się na pasku stanu.
Z każdą opcją menu powinien być skojarzony skrypt otwierający okna z danymi.
Skrypt łączący pozycje menu z oknem zawierającym dane lub inną aplikację musimy
skojarzyć ze zdarzeniem clicked danej pozycji menu.
Polecenie to powinno mieć postać :
OpenSheet(w_nazwa_okna , okno_mdi, pozycja_menu, styl_wyś_okna)
w_nazwa_okna jest nazwą okna potomnego, które ma pojawić się po kliknięciu na
pozycję
menu
okno_mdi - jest nazwą okna głównego wielo dokumentowego w którym pojawi się
otwierane okno potomne
pozycja_menu - jest numerem pozycji w menu pod którym zapisane jest każde
otwarte okno
zapisanie tam odwołania do okna daje możliwość odwołania się do niego i
ustanowienia go oknem bieżącym
styl_wyświetlania_okna - jest wartością typu wyliczeniowego , która ustala
styl
wyświetlania okien . Możliwymi wartościami są : Layered! Cascade! Horizontal!
Vertical! (warstwowo, kaskadowo, obok siebie w poziomie lub pionie)
Na pasku menu możemy również dodać pozycję pozwalającą na odpowiednie
uporządkowanie okien z danymi, zmianę tego uporządkowania oraz przełączanie się
między oknami.
Aby rozmieścić okna w żądany sposób, musimy skojarzyć z odpowiednią pozycją
menu, polecenie porządkujące okna. Poniżej wymienione są wszystkie dopuszczalne
sposoby uporządkowania okien:
ArrangeSheets(Tile!) - (vertical) rozmieszcza okna sąsiadująco w pionie
ArrangeSheets(TileHorizontal!) - (horizontal) rozmieszca okna sąsiadująco w
poziomie
ArrangeSheets(Layer!) (warstwowo) - rozmieszca okna warstwowo
ArrangeSheets(Cascade!) (kaskadowo) - rozmieszcza okna kaskadowo
Wyprowadzanie komunikatów o błędach
Bardzo ważną sprawą w każdej aplikacji jest wyprowadzanie komunikatów
informacyjnych, zapytań, oraz komunikatów o błędach. Możemy do tego celu użyć
funkcji MessageBox.
Funkcja ta wyświetla okno z komentarzem lub pytaniem oraz przyciskiem lub
przyciskami
OK, Cancel, Yes, No. Treść komunikatów i przycisków zależy od ilości argumentów
użytych w tej funkcji. Format funkcji MessageBox jest następujący:
MessageBox("Tytuł na pasku górnym" , "Treść komunikatu", "ikona", "przyciski",
nr. domyślnego przycisku)
Dwa pierwsze argumenty funkcji są obowiązkowe, typu znakowego i wyprowadzają
komentarz w oknie. Standardowa funkcja z dwoma argumentami zawiera przycisk
OK!
Argument trzeci definiuje ikonę użytą w oknie dialogowym. W miejscu argumentu
trzeciego stosowane są następujące wartości typu wyliczeniowego:
Information!
StopSign!
Excalmation!
Question!
None!
Argument czwarty jest również typu wyliczeniowego i definiuje zbiór
przycisków:
OK!
OKCancel!
YesNo!
YesNoCancel!
RetryCancel!
AbortRetryCancel!
Piąty argument wskazuje, który przycisk będzie domyślnie wybranym. Jeśli liczba
jest większa niż ilość przycisków, to domyślną wartością jest 1.
Innym sposobem wyprowadzania komunikatów oraz prowadzenia dialogu z
użytkownikiem jest stosowanie okien odpowiedzi (response window). Okna tego
typu są modalne w stosunku do aplikacji, co oznacza, że wykonanie aplikacji
jest zatrzymywane do czasu uzyskania odpowiedzi. Zatem nie należy nadużywać
tego sposobu do dialogu z użytkownikiem.
Wygodnym sposobem informowania użytkownika o tym co dzieje się w aplikacji jest
instrukcja SetMicroHelp("Tekst wyprowadzany"), którą można związać ze
zdarzeniami GetFocus i LoseFocus dowolnego obiektu dialogowego. Pozwala ona na
wyprowadzanie dowolnego tekstu na pasku statusu okna MDI. Dodatkowym atutem tej
instrukcji jest możliwość wyprowadzania wartości właściwości Tag obiektu
dialogowego.
Na przykład w_mdi_gl. SetMicroHelp("Teraz wprowadź dane o klientach "),
Zdarzenie LoseFocus powinno uruchamiać tę instrukcję w celu wyczyszczenia pola
statusu.
Tworzenie menu podręcznego
Menu podręczne jest bardzo wygodną rzeczą jeśli zawiera zestaw poleceń
wspólnych lub często używanych dla różnych elementów (obiektów ) naszej
aplikacji . W celu utworzenia menu podręcznego, możemy wykorzystać istniejące i
aktywowane wcześniej menu w oknie MDI z Helpem, związując je standardowo ze
zdarzeniem kliknięcia prawym klawiszem myszki - rbuttondown, jednego z obiektów
dialogowych np. DataWindow Control lub MultiLineEdit . Do wyświetlenia menu
użyjemy funkcji PopMenu(), której parametrami są współrzędne lewego górnego
rogu obszaru menu.
Polecenia skryptu dla zdarzenia rbuttondown wyglądają następująco:
Int lx, ly
lx = pointerx()
ly = pointery()
m_gl1.m_cośtam.PopMenu( lx, ly)
Menu podręczne możemy również utworzyć gdy chcemy mieć menu niezależne od menu
głównego. Musimy wówczas utworzyć niezależny obiekt menu z odpowiednimi
pozycjami i nadać mu nazwę np. podreczne. Nazwa pozycji menu niech będzie
m_poz1. Następnie dodać poniższy skrypt do zdarzenia rbuttondown odpowiedniego
obiektu dialogowego.
Int lx, ly
lx = w_mdi_gl1.pointerx()
ly = w_mdi_gl1.pointery()
m_gl1.m_cośtam.PopMenu( lx, ly)
podreczne NewMenu
NewMenu = create podreczne
NewMenu.m_poz.popmenu(lx,ly)
Wyszukiwarka
Podobne podstrony:
Sieci komputerowe wyklady dr FurtakWykład 05 Opadanie i fluidyzacjaWYKŁAD 1 Wprowadzenie do biotechnologii farmaceutycznejmo3 wykladyJJZARZĄDZANIE WARTOŚCIĄ PRZEDSIĘBIORSTWA Z DNIA 26 MARZEC 2011 WYKŁAD NR 3Wyklad 2 PNOP 08 9 zaoczneWyklad studport 8Kryptografia wykladBudownictwo Ogolne II zaoczne wyklad 13 ppozwyklad09Sporzadzanie rachunku przepływów pienieżnych wykład 1 i 2fcs wyklad 5Wyklad08 Zaopatrz wWodeWyklad3więcej podobnych podstron