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.