Budowa interfejsu administratora

TfrxWPContainer

Właściwości:

Property RtfVar[AName : string]

Pozwala na nadawanie i odczyt dowolnych stringów – globalnie w ramach dokumentu. Pozwala to na zapamiętywanie pewnych wartości znakowych do wykorzystanie w później wykonywanych skryptach.

Np.:

WPContainer.RtfVar[‘Jakaś_zmienna’] := ‘Tu wartość zmiennej’;

ShowMessage(WPContainer.RtfVar[‘Jakaś_zmienna’]);

Wiele właściwości formularza jest zapisanych w tych zmiennych, w szczególności wszystkie właściwości frxWPContainer np.:

EditFieldEndString, EditFieldStartString, EditFieldMinOnlyWhenEmpty i inne.

Property SaveResultingDoc

Czy zapisywać dokument do sekcji wizualizacji. Jeśli dokument jest zapisany, wówczas system przy otwieraniu dokumentu zaczytuje zapisany dokument. Jeśli nie jest zapisany, wówczas jego zawartość jest budowana na podstawie danych zapisanych w sekcji dane dokumentu XML

Property EditForm

Czy dokument jest formularzem edycyjnym, czyli cze możliwa jest jedynie edycja w obrębie pól.

Property Appendable

Czy dokument jest typu „rosnącego” – wówczas na formularzu pobytu dostępny jest klawisz Dodaj wpis zamiast Regeneruj dokument.

Property EditFieldBkColor

Domyślny kolor tła pola edycyjnego

Property EditFieldTextColor

Domyślny kolor tekstu pola edycyjnego

Property EditFieldStartEndBkColor

Kolor tła znaczników początku i końca pól edycyjnych

Property EditFieldStartEndColor

Kolor znaczników początku i końca pól edycyjnych

Property EditFieldActiveBkColor

Kolor tła aktywnego pola edycyjnego (czyli tego, w którym stoi kursor)

Property EditFieldActiveTextColor

Domyślny kolor tekstu aktywnego pola edycyjnego

property EditFieldHotBkColor

Kolor tła pola nad którym znajduje się kursor myszki

property EditFieldStartString

Znaki stanowiące znacznik początku poszczególnych pól edycyjnych

property EditFieldEndString

Znaki stanowiące znacznik końca poszczególnych pól edycyjnych

property EditFieldMinLength

Minimalna długość pola wyrażona w TWIPS. Pole jest rysowane w taki sposób, by mieć wskazaną długość

property EditFieldMinOnlyWhenEmpty

Czy podana w polu EditFieldMinLength wartość ma obowiązywać jedynie w sytuacji, gdy pole jest puste

property IgnoreMouse

Ignoruj kiknięcia myszy. W normalnych warunkach kliknięcie na dokument powoduje ustawienie kursora na najbliższe pole edycyjne. Zaznaczenie tej właściwości wyłącza tą funkcjonalność. Wskazane dla formularzy zawierających mało pól edycyjnych, a wiele checkboxów.

Property MainContainer

Czy aktualny container jest źródłem głównego dokumentu. W ramach jednego formularza może być tylko jeden MainContainer (niezależnie, czy typu WP, czy FR)

property WndShowVRuler

Czy ma być widoczny ruller przewijania pionowego

property WndShowHRuler

Czy ma być widoczny ruller przewijania poziomego

property WndShowStyleButtons

Czy mają być widoczne klawisze edycji stylów czcionki, akapitów itp. Wskazane jest wyłączenie w przypadku formularza zawierającego pola danych bez konieczności formatowania tekstu

property WndShowFunctionButtons

Czy mają być widoczne klawisze funkcyjne

property WndShowConfirmButtons

Czy mają być widoczne klawisze zatwierdzenia/cofania zatwierdzania grupy pól

property WndShowMenu

Czy ma być widoczne menu formularza edycji

property WndSizeAndPosition

Określa wygląd i pozycję otwieranego okna:

wspMaximize - okno ma być otwarte na cały ekran

wspScreenCenter - rozmiar domyślny; pozycjonowane na środku ekranu

wspDialog - okno w formie okna dialogowego – bez możliwości zmiany rozmiaru. Tekst skalowany tak samo, jak w oknie macierzystym. Formularz centrowany na ekranie

wspCombo - jak wspDialog, ale prezentowane jak combo poniżej aktywnego pola edycyjnego. Okno nie zawiera belki z nazwą okna.

property WndCaption

Nazwa okna

Funkcje:

function InsertImageToTable(AName: string; AImage: TObject; AColCount:integer = 4; ACol : integer = -1;ARow: integer = -1): boolean

Funkcja wstawia obrazek AImage do pierwszego eolnego okienka tabeli AName. Jesli tabela nie instnieje, to jest tworzona w polu o nazwie AName; jesli pole nie iestnieje, to na pozycji kursora; AColCount określa ilość kolumn w tabeli; Jeśli podamy ACol/ARow - wówczas obrazek jest wstawiany we wskazane okienko tabeli;
UWAGA: Jeśli system odnajdzie tabele o podanej nazwie, to ja wykorzytuje - stąd można wstawić taka tabelę w samym szablonie, dzieki temu można wizualnie ustawić brzegi itp.
UWAGA2: Tabele dodawana automatycznie nie może mieć edytowanej treści, a jedynie obrazki (czyli nie da się dopisać opisu poszczególnych zdjęć). Tabele wstawione wcześniej (nie tą funkcją) nie mają takiego ograniczenia.

function InsertImageAtCP(aImage : TObject):boolean;

Wstawia obrazek na pozycji kursora.

function TableGetImageCountInCell (aTableName : string; aCol : integer; aRow : integer) : integer;

Zwraca ilość obrazków znajdujących się we wskazanej komórce tabeli.

procedure TableShowImageFromCell (aTableName : string; aCol : integer; aRow : integer; aImageNr : integer = 1; aModal : boolean = true); < /STRONG >

Otwiera okno podglądu z obrazkiem o numerze aImageNr ze wskazanej tabeli i komórki

function TableDeleteImageFromCell(ATableName : string; ACol : integer; ARow : integer; aImageNr : integer = 1) : boolean;

Usuwa wskazany obrazek. Zwraca infrmację, czy obrazek udało się usunąć.

function TableGetImageFromCell(ATableName : string; ACol : integer; ARow : integer; aImageNr : integer = 1) : TJPEGImage;

Zwraca obiekt zawierający obrazek z danej komórki. Obiekt nalezy potem usunąć.

procedure SetActiveFrame(ASID : string)

Funkcja określa nazwę (SID) formularza, którego będą dotyczyły kolejne odwołania. Dotyczy operacji wykonywanych na oknach dodatkowych - dialogowych tworzonych z podaniem ASID. Podczas otwoerania i generowania takiego okna funkcja ta jest automatycznie wykonywana. Stąd wszystkie odwołania będą dotyczyły ostatnio otwartego okna. Jeśli chcemy wykonać operację na innym (zamkniętym) oknie, wówczas należy wykonać funckję SetActiveFrame.

procedure GenerateDocument(ASID : integer = 0)

procedure GenerateDoc(ASID : string = ‘’)

Generuje dokument - musi być wywołana podczas generowania raportu.

UWAGA:Obecnie do generowania dok. głównego należy wykorzystać globalną funkcję: WPGenerateDocument zamiast tej metody. Aby z tego skorzystać należy ustawić własność: MainContainer.

ASID oznacza SID wszystkich pól na otwieranym formularzu. Ma zastosowanie do otwierania okien dialogowych z różnymi SID (wówczas jest wywoływana wewnętrznie przez OpenDocument)

procedure OpenDocument(ASID : integer = 0)

procedure OpenDoc(ASID : string = ‘’)

Otwiera okno dialogowe – w zależności od tego, czy otwieramy je po raz pierwszy, czy nie wywołuje GenerateDocument(ASID).

ASID oznacza SID wszystkich pól na otwieranym formularzu. Ma zastosowanie do otwierania okien dialogowych z różnymi SID – na przykład okien dla poszczególnych rekordów w „rosnącej” tabeli.

Wynika stąd, że jeśli w okno dialogowe otwieramy z podaniem ASID, wówczas nie nelaży w nim stosować funkcji zwiększających SID dodawanych pól.

Generalnie wszystkie dokumenty tworzone w ramach jednego raportu należy traktować jako wspólny zbiór pól – jeśli dane pole występuje w kilku formularzach, to zmiana jego wartości powoduję zmianę we wszystkich formularzach. To samo dotyczy odczytu wartości funkcja GetFieldValue – otrzymamy wartość pola niezależnie na jakim formularzu się znajduje.

procedure BookmarkClearFields(AName : string; AClearFields, AClearFieldsInXML : boolean)

Procedura czyści pola w zakładce AName.

Jeśli AClearFields = true, to czyści pola z zakładki w dokumencie; Jeśli AClearFieldsInXML = true - czyście tez pola w XMLu.

function BookMarkMoveTo(ANazwa : string) : boolean

Przesuwa kursor do zakładki o podanej nazwie

function BookMarkShow(ANazwa : string; AShow : Boolean) : boolean

Pokazuje/ukrywa całą zawartość zakładki (zakładki definiujemy w edytorze; Zakładką może być objęty dowolnie długi fragment tekstu)

function GetFieldValue(ANazwa : string) : string

odczytyje wartość wskazanego pola (nie działa dla CheckBoxów)

function SetFieldValue(ANazwa : string; Value : string) : boolean

wstawia wartość do wskazanego pola ; Zwraca true, gdy zmieniono wartość

Dla CheckBoxów nalezy nadawać wartość T, albo N

function BookMarkInsert(AWPContainer : TfrxWPContainer; ANazwa : string; AMinSID : integer =0) : integer

function BKMarkInsert(AWPContainer : TfrxWPContainer; ANazwa : string; AMinSID : string) : string

wstawia w miejscu kursora zakładkę ANazwa z containera AWPContainer.

function BookMarkAppend(AWPContainer : TfrxWPContainer; ANazwa : string; AMinSID : integer =0) : integer

function BKMAppend(AWPContainer : TfrxWPContainer; ANazwa : string; AMinSID : string = ‘’) : string

wstawia na końcu dokumentu zakładkę ANazwa z containera AWPContainer

function BookMarkInsertInBookMark(AWPContainer : TfrxWPContainer; ANazwa : string; ANazwaCelu : string; AMinSID : integer =0) : integer

function BKMInsertInBKM(AWPContainer : TfrxWPContainer; ANazwa : string; ANazwaCelu : string; AMinSID : string =’’) : string

wstawia w zakładce: ANazwaCelu zakładkę ANazwa z containera AWPContainer;

UWAGA: Jeśli wstawiana zakładka zawiera tabelę, to nie może ona być na samym końcu (między końcem tabeli i końcem zakładki musi być przynajmniej jakiś jeden znak - np. spacja;

Funkcje zwracają SID wstawionej zakładki (i automatycznie wszystkich wstawionych pól i zakładek we wstawionej zakładce)

UWAGA:Funkcje wstawiają całą zawartość zakładki wraz z jej markerem.

Wstawione pola i zakłądka mają zazwy w formacie:

NAZWA$SID

Gdzie Nazwa oznacza nazwę zaczytaną z zakładki, a SID oznacza numer wstawienia - chodzi o to, by pola były rozróżnialne w ramach dokumentu.

Czyli jeśli pola w zakładce nazywały się: POLEAAA, POLEBBB, a zakłądka ZAKLADKA

wszystkie pola w pierwszym wstawieniu mają nazwy np:

POLEAAA$1, POLEBBB$1, a zakładka ZAKLADKA$1

wszystkie pola w drugim wstawieniu mają nazwy np:

POLEAAA$2, POLEBBB$2, a zakładka ZAKLADKA$2

UWAGA TABELE:

Jeśli zakładka zawiera tabele, to ich nazwy również są zmieniane - otrzymują one nazwę: StaraNazwaTabeli + ASID (czyli bez znaku $ - aby pola w tabeli mogly mieć oddzielne SID). Wszystkie pola we wstawianej tabeli otrzymują automatycznie w chwili wstawiania tabeli SID = NowaNazwaTabeli_NrRekordu, czyli nie ma znaczenia jaki SID nadano polom w wyjściowej zakładce.

Można podać minimalną wartość SID (AMinSID) dla pól i zakładki wstawianych tą funkcją.

Ma to sens, jeśli na przemian wstawiamy zakładki z tymi samymi polami i chcemy, by pola w różnych zakładkach nie miały tych samych SID

procedure BookMarkEmpty(ANazwa : string; AClearFields : boolean = true)

Opróżnia zawartość zakładki: ANazwa.

W połączeniu z funkcją: BookMarkInsertInBookMark pozwala symulować ukrywanie/ujawnianie fragmentów dokumentu poprzez rzeczywiste wstawianie/usuwanie

Parametr: ; AClearFields mówi, czy wyczyścić pola z bookmarku, jeśli występują jeszcze gdzies poza bookmarkiem i czy opróżnić odpowiednie wpisy w XMLu.

procedure BookMarkDelete(ANazwa : string ; AClearFields : boolean = true)

Usuwa zakładkę: ANazwa wraz z zawartością.

Parametr: ; AClearFields mówi, czy wyczyścić pola z bookmarku, jeśli występują jeszcze gdzies poza bookmarkiem i czy opróżnić odpowiednie wpisy w XMLu.

UWAGA: Czasem nie usuwa końcowego markera zakładki – zależy to od treści zakładki – zwykle dodanie spacji przed markerem rozwiązuje problem (to jest jakiś błąd w WPEdit)

Function ChkRights(ARights : string):boolean

Sprawdza, czy zalogowany użytkownik ma którekolwiek z uprawnień z listy ARights.

function BookMarkProtect(ANazwa : string; AProtect string = ‘D’) : boolean

Włącza/wyłącza protekcję zakładek o nazwie ANazwa. Dopuszczalna jest nazwa Nazwa*

Powoduje to zabezpieczenie/odbezpieczenie wszystkich zakładek o nazwie zaczynającej się na słowo Nazwa.

Gdy ANazwa = *, wówczas funcka dotyczy wszystkich zakładek w dokumencie.

AProtect może zawierać:

T – zabezpiecz przed edycją;

N – nie zabezpieczaj,

D – zastosuj domyślne uprawnienia dla danej zakładki

String z listą uprawnień wymaganych do edycji. Wówczas system ocenia, czy zabezpieczyć, czy nie

function BookMarkGetRights(AName : string) : string

Zwraca string opisujący uprawnienia edycji wskazanej zakładki

function BookMarkSetRights(AName : string; ARights : string) : boolean

Powala wpisać string opisujący uprawnienia edycji wskazanej zakładki.

Dopuszczalny jest wpis: AName* - powoduje ustawienie usprawnień na wszystkie zakładki o nazwie zaczynającej się na: AName

function BookMarkGetList(AName : string = ''*'') : TStringList

Tworzy obiekt o typie TStringList zawierający listę zakładek o podanej nazwie.

Dopuszczalny jest wpis: AName* - powoduje ustawienie usprawnień na wszystkie zakładki o nazwie zaczynającej się na: AName.

Koniecznie po wykorzystaniu listy należy ją zwolnić poprzez metodę Free

Przykład:

Ls := BookMarkGetList;

….. // Tu coś z listą robimy

Ls.Free; // zwalaniam listę

function ExtractName(AName : string) : string

Zwraca nazwę pola z podanej nazwy (po odcięciu ewentualnego SID)

function ExtractSID(AName : string) : string

Zwraca SID z nazwy (np. z AName = ‘POLE10$7’ zwraca ‘7’; UWAGA: z AName= ‘POLE10$0’ zwraca ‘’)

function ExtractNumericSID(AName : string) : integer

Zwraca część numeryczną SID z nazwy rozumianą jako liczba na końcu nazwy (np. z AName = ‘POLE10$kawalek_sid17’ zwraca 17.

Jeśli nie ma części numerycznej – zwraca 0.

function GetDocName: string

Zwraca nazwę aktualnie otwartego okna. Zwykle odpowiada nazwie WPContainera, ale może być rozszerzona o SID - np. okno$2.

Konstrukcja:

wpc.ExtractSID(wpc.GetDocName)

pozwala uzyskać informację o aktualnym SID formularza.

function GetDocReadRights : string

Zwraca string uprawnień odczytu całego raportu

function GetDocEditRights : string

Zwraca string uprawnień edycji całego raportu

function TableInsertRow(AName : string; ACopyAll : boolean = false; ARow : integer = -1) : integer

Kopiuje do tabeli o nazwie AName row o numerze ARow (numeracja od 0);

Gdy ARow <0 – kopiuje ostatni row;

Gdy ACopyAll = true, to kopiuje również wartości pól.

Zwraca numer dodanego row.

UWAGA: Wszystkie pola są kopiowane z SID = Nazwa_tabeli + numer ROW, więc mają postać np.: POLE$NazwaTabeli_1 itp. (dotyczy to też nazw ewentualnych zakładek)

Zależnie od parametru ACopyAll pola są inicjowane wartościami z poprzedniego rekordu (gdy True), lub wartościami domyślnymi (gdy false).

W XMLu pola są zapisane w nodzie odpowiadającym SID = NazwaTabeli_NrRekordu

function TableDeleteRow(AName : string; ARow : integer = -1; aForceForUpperStatus : boolean = false) : boolean

Usuwa wskazany rekord z tabeli. Gdy ARow = -1 – usuwa ostatni rekord.

Zwraca info, czy udało się usunąć wskazany rekord.

UWAGA: Funkcja nie sprawdza uprawnień. Dodatkowo nie usuwa pól z XMLa, ale wstawia NULL do wartości pola. Należy pamiętać, że usuwanie rekordów z tabeli innych, niż ostatni zaburzy numerację pól opartą na numerze rekordu.
Jeśli pole ma status > 'A', to aby je usunąć trzeba ustawić: aForceForUpperStatus na true

function TableGetRowCount(AName : string) : integer

Zwraca aktualną ilość rekordów w tabeli o nazwie AName.

function InsertText(AText : string; ABookMark : string = ''; AFormat : string = '') : boolean

Wstawia tekst AText na końcu zakładki ABookmark, lub na pozycji kursora (gdy ABookmark = ‘’).

Text może być w formacie RTF, HTML, WPTOOLs, lub TXT. System sam rozpozna format; W razie trudności można wymusić format zmienną: AFormat – dopuszczalne: RTF, HTML, WPTOOL, lub TXT.

Dzięki tej funkcji można wypełniać zawartość pól treścią formatowaną.

function CurrentEditField: string

Zwraca nazwę pola, w którym znajduje się kursor

function MoveToField(const AFieldName: string; AFrom_start: Boolean = TRUE): Boolean

Przenosi kursor do wskazanego pola

function MoveToNextField(AFrom_start: Boolean = FALSE): string

Przenosi kursor do kolejnego pola. Zwraca nazwę nowego pola.

function MoveToPreviousField(AFrom_end: Boolean = FALSE): string

Przenosi kursor do poprzedniego pola. Zwraca nazwę nowego pola.

function SelectFieldAtCP: Boolean

Zaznacza treść pola, w którym znajduje się kursor

function ButtonGetParam(AName : string; AParam : string) : string

Zwraca aktualną wartość parametru AParam klawisza o nazwie AName.

function ButtonSetParam(AName : string; AParam : string; AValue : string) : boolean

Ustawia nową wartość (AValue) parametru AParam klawisza o nazwie AName.

Zwraca true jeśli opracja została wykonana prawidłowo.

function GetDropListValue(AField : string; ACode : string) : string

Funckja zwraca Wartość odpowiadającą kodowi Acode w liście popup dla pola AField

function GetDropListCode(AField : string; AValue : string) : string

Funkcja zwraca Kod odpowiadający wartośći AValue w liście popup dla pola Afield

procedure SaveFieldsToXML

Funkcja zapisuje pola z aktualnego subdokumentu reprezentowanego przez aktualny frxWPContainer do XMLa dokumentu.



Zdarzenia:

OnFieldGetData

Podczas inicjacji dokumentu – umożliwia wprowadzanie wartości domyślnych.
Podczas inicjowana dokumentu wartość pola jest wypełniana wartością pola pochodzącą z innych formularzy dokumentu. Jeśli nigdzie nie ma tego pola, wówczas jest odczytywana wartość z sekcji dane XML. Jeśli i tu nie zostanie odnaleziona, wówczas jest generowana na podstawie wyrażenia wartości domyślnej i kierowana do tego zdarzenia. Wartość zwrócona przez to zdarzenie jest wstawiana do inicjowanego pola.

UWAGA: Obecnie preferowane jest analogiczne zdarzenie komponentu: TfrxDoc.

Jeśli jest ono przypisane, wówczas opisywane zdarzenie nie jest wywoływane.

OnFieldExitEvent

podczas opuszczania pola edycyjnego

OnFieldEnterEvent

podczas wchodzenia do pola edycyjnego

OnChangeFieldEvent

Wywoływana podczas zmiany wartości pola. Jeśli pole występuje w kilku formularzach dokumentu, to może być wywołane w kilku Containerach.

UWAGA: Patrz na opis TfrxDoc.OnBeforeChangeFieldEvent

FieldClickEvent

po kliknięciu na pole

ButtonClickEvent

po kliknięciu na klawisz

OnHyperLinkClickEvent

po kliknięciu na hypelinku

OnBeforeSaveDocumentEvent

przed zapisem zmian dokumentu do bazy. Przypisanie wartości do ErrorMessage spowoduje wyświetlenie jej jako komunikatu błędu.

OnFillDropListEvent

przed wypełnieniem listy combo kontrolki na formularzu.

Poprzez zmianę parametrów Type, List i ListData.

możliwa jest pełna kontrola nad zawartością combo.

Typ jest analogiczny do wypełnianych w definicji pola:

S - Na podstawie listy elementów

Z - Na podstawie zapytania SQL

E - Na podstawie gotowej listy z systemu

Zależnie do pola wartości Typ – ListData zawiera zapytanie SQL zwracające dane, lub listę wartości do umieszczenia w combo.

OnAppendEvent

po wciśnięciu klawisza Dodaj wpis – pozwala na dodanie fragmentu dokumentu. Dodawane wpisy powinny mieć ustawione minimalne uprawnienia edycji (może żadne) i wyłączoną protekcję. Dzięki temu można go edytować aż do momentu zapisu.

OnOpenDocEvent(AFirstOpen : boolean; AEditing : boolean; var ErrorMessage : string)

AFirstOpen – czy jest to pierwsze otwarcie dokumentu do edycji od czasu wygenerowania. W rzeczywistości jest ustawione na True przy pierwszym OnOpenDocEvent po wykonaniu funkcji GenerateDocument.

AEditing – oznacza, czy dokument jest otwierany do edycji, czy odczytu.

ErrorMessage – można tu podać wiadomość, która zostanie zaprezentowana jako błąd.