Formatowanie w tabelach¶
W NEOSie można kolorować, wytłuszczać, stosować kursywę itp. dla danych w tabelach i widoku drzewka. Sterowanie wyróżnieniem odbywa się niezależnie dla każdego rekordu i każdego pola. Informacja o wyróżnieniu pochodzi wprost z zapytania SQL lub przeglądanej tabeli i nie wymaga żadnej innej konfiguracji z poziomu definicji okna. Jedyne co trzeba zrobić, to w tabeli lub zapytaniu SQL wybrać jedno pole, które zwraca informacje formatujące dane i jego nazwę podać we właściwościach elementu formy TABLE na zakładce Bindowanie jako Pole formatowania danych. Pole to powinno być typu znakowego i posiadać ciąg o następującej składni:
<SYMBOL_POLA1>=<WARTOSC1>;<SYMBOL_POLA2>=<WARTOSC2>;...
gdzie SYMBOL_POLA to po prostu symbol pola dla którego zdefiniowano formatowanie (lub gwiazdka, co oznacza formatowanie wszystkich pól nie wymienionych z nazwy), a WARTOSC to ciąg znaków postaci:
<WART_BD1>=<WART_WYSW1>|<WART_BD2>=<WART_WYSW2>|...
gdzie WART_BD to wartość pola w bazie danych podlegająca formatowaniu, a WART_WYSW to ciąg znaków określający formatowanie pola i wyświetlaną wartość w komórce. W szczególnym przypadku stosujemy:
*=<WART_WYSW>(gwiazdka) - zastępuje dowolną niepustą wartość.~=<WART_WYSW>(tylda) - zastępuje dowolną wartość, także pustą.=<WART_WYSW>(nic) - pozwala pustą wartość zamienić na coś niepustego.
Ponieważ średnik jest używany jako separator par <SYMBOL_POLA>=<WARTOSC>, nie może być użyty w WART_BD ani WART_WYSW.
WART_WYSW może zawierać tekst do wyświetlenia oraz następujące znaczniki formatujące:
%B- wytłuszczenie%I- kursywa%U- podkreślenie%S- ~~przekreślenie~~%T<KOLOR>- nadanie koloru dla tekstu (możemy podać kod tekstowy koloru, albo podać szesnastkowo wartość składowych BGR w postaci0xBBGGRR)%C<KOLOR>- nadanie koloru dla tła j.w.%l- wyrównaj tekst do lewej (od wersji 4.0.5 do wersji 6.1)%r- wyrównaj tekst do prawej (od wersji 4.0.5 do wersji 6.1)%c- wyśrodkuj tekst (od wersji 4.0.5 do wersji 6.1)%Fxx- zmiana czcionki naxxpt (od wersji 4.0.5)%Pxxx- grupa parametrów dotycząca tylko kontrolki progressbar, opis poniżej (od wersji 6.1)- #<IKONA> - numer lub nazwa ikony
Gwiazdka (*) w WART_WYSW oznacza wartość pola.
Kody tekstowe kolorów VCL: Colors in VCL w sekcji Normal Colors (pozycje tabeli System Colors mogą nie działać poprawnie w kliencie VCL). Należy także pamiętać, że VCL definiuje kolory w postaci 0xBBGGRR!
Przykład
Wyrażenie do formatowania danych w tabeli, które:
- dla pola NAZWA robi niebieski kolor czcionki
- dla pola STAN=1 wyświetla "ok" na zielono, dla STAN=2 wyświetla "anulowano" na żółto
- wytłuszcza pole WARTOSC
powinno wyglądać następująco:
NAZWA=*=%TclBlue*;STAN=1=%CclRed ok|2=%CclYellow anulowano;WARTOSC=*=%B*
Uwaga
Jeśli ciąg znaków określający formatowanie pola jest stałą tekstową w SQL to powinien być podawany w apostrofach, np.: 'NAZWA==%B'. W przeciwnym razie otrzymamy komunikat mówiący o błędzie podczas wykonywania zapytania!
Definiowanie formatowania z poziomu ustawień widoku¶
Od wersji 6.2 formatowaniem konkretnej kolumny w kliencie desktop możemy sterować również z poziomu ustawień widoku, we właściwościach wypełniając pole Wyrażenie formatujące. Jest to odpowiednik funkcjonalności w definicji grida na oknach natywnych VCL. Format ten dotyczy tylko danej kolumny, więc może być wyrażony tekstem w takiej postaci jak token WARTOSC w rozdziale Formatowanie w tabelach.
Formatowanie kontrolki ProgressBar¶
W wersji 6.1 doszła możliwośc parametryzowania kolumn grida reperezentowanych przez kontrolkę ProgressBar. Możliwość dotyczy tylko widoku tabeli. Możliwe jest definiowanie paska w 2 trybach: "standardowym" i "z przekroczeniem". Jeśli jako kontrolkę na kolumnie mamy ustawiony ProgressBar, a nie ustawimy żadnych parametrów, to zostanie ustawiony tryb standard, wartość min=0, max=100, kolor automatycznie ze skórki, napis wartość procentowa dla przedziału, a 0% lub 100% poza przedziałem. Zaleca sie ustawianie tych samych (niekoniecznie takich samych) parametrów dla każdego wiersza. W przeciwnym razie mogą pojawiać się niespójności pomiędzy wierszami dotyczące kolorów i wyświetlanej wartości tekstowej. Uwaga ta dotyczy szczególnie parametru Ptxt oraz Povl.
Możliwe znaczniki formatujące:
%Pmin<liczba zmiennoprzecinkowa>- minimalna wartość na pasku (poniżej pasek ma zerową długość). Obsługiwany znak '*' oznaczający bieżącą wartość w komórce%Pmax<liczba zmiennoprzecinkowa>- maksymalna wartość na pasku (powyżej pasek ma maksymalną długość). Obsługiwany znak '*' oznaczający bieżącą wartość w komórce%Povl<liczba zmiennoprzecinkowa>- wartość przekroczenia - niemniejsza od min i niewiększa od max. Wartości spoza zakresu są korygowane do min lub max. Ustawienie tego parametru poduje włączenie trybu "z przekroczeniem" na kontrolce. Długość paska jest taka jak w trybie "standardowym", ale dla wartości mniejszych niż wartość przekroczenia pasek ma kolor %Pbbc, a powyżej kolor $Pobc. Obsługiwany znak '*' oznaczający bieżącą wartość w komórce%Pbbc<KOLOR>- kolor paska, w trybie "z przekroczeniem" części paska od min do przekroczenia%Pobc<KOLOR>- w trybie "z przekroczeniem" kolor części paska od przekroczenia do wartości komórki%Ptxt<TEXT>%Ptxt- Ten parametr definiuje wyświetlany na pasku tekst. Jeśli nie jest zdefiniowany, wtedy wyświetlana jest wartość procentowa w przedziale [min,max]. Wartości spoza zakresu to odpowiednio 0% lub 100%. Ten parametr wyjątkowo musi być również zakończony ciągiem znaków %Ptxt. Tekst między ogranicznikami %Ptxt jest wyświetlany dokładnie jak wpiszemy. Jedynym wyjątkiem jest znak "*", który jest zamieniany na wartość w komórce.
Przykłady¶
Przykład
Wytłuść pole NAZWA we wszystkich rekordach:
NAZWA=*=%B*
Przykład
Wytłuść pole NAZWA jak powyżej plus zamień pole STATUS z liczb na ikonki:
NAZWA=*=%B*;STATUS=0=#14|1=#12
Ikony mogą być podawane za pomocą nazwy, np. STATUS=1=#MI_WWW
Przykład
Pole WARTOSC podkreśl i pokoloruj na czerwono:*
WARTOSC=*=%TclRed%U*
Przykład
Tło pola WARTOSC pokoloruj na zielono, nawet dla pustych komórek:*
WARTOSC=~=%CclGreen*
Przykład
Wyświetl ProgressBar na polu StanProcentowy w taki sposób, aby dla wartości <= 100 wyświetlał się na zielono, powyżej na zielono do 100, a ponad na czerwono. Pasek dla wartości 100 będzie miał połowę długości, dla 200 i powyżej pełną długość. Na pasku pojawi się tekst z wartością i znakiem %. Tylko '*' jest traktowana specjalnie, reszta może być dowolna, dlatego '%' w tekście wystarczy wpisać raz, gdyż nie jest traktowany jak znak specjalny.
STANPROCENTOWY=~=*%Pmin0%Pmax200%Povl100%Ptxt*%%Ptxt%PbbcclGreen%PobcclRed
Przykład
Dodajemy fragment zapytania SQL, który generuje dynamicznie pole formatowania danych, którego celem jest wytłuszczenie rekordów w których WARTOSC>=100, a samo pole WARTOSC ma być na czerwono:
case when WARTOSC>=100 then '*=*=%B*;WARTOSC=*=%TclRed*' else ''; end as FORMATFIELD
W ostatnim przykładzie dublujemy procenty, gdyż jest to analiza SQL podlegająca parsowaniu. Jeśli chciałbyś kolorować na czerwono tylko pola dla tych rekordów, które są powyżej lub poniżej pewnej wartości, lub pasują do innego warunku, to w zapytaniu SQL napisz kod, który generuje inny formatujący ciąg znaków dla każdego rekordu. Jeśli pracujesz bezpośrednio na tabeli z danymi, to dodaj do niej pole na ciąg formatujący i twórz go triggerami BI/BU dla każdego rekordu.
Wyświetlanie obrazków wewnątrz tabeli¶
Jeśli w tabeli zdefiniujesz kolumnę wyświetlaną jako IMAGE, w miejsce tekstowej wartości tej kolumny zostanie wyświetlone obrazek. Tekst musi być odpowiednio sformatowany aby aplikacja wiedziała dokładnie skąd i jakim mechanizmem pobrać obraz do wyświetlenia.
Wyświetlanie ikon skojarzonych z typami plików¶
Jeśli w polu danych po prostu umieścisz nazwę pliku, to zostanie wyświetlona ikona skojarzona z danym typem pliku, a sam tekst z nazwą pliku zostanie wyświetlony obok niej. Podany plik nie jest w ogóle otwierany - nawet nie musi się znajdować na dysku.
Przykład
Poniższy tekst powoduje wyświetlenie ikony skojarzonej z plikami pdf:
.pdf
Wyświetlanie zdjęć z repozytoriów¶
Jeśli w polu danych umieścisz coś postaci <Repozytorium>::<Nazwa pliku w repozytorium> to zostanie wyświetlony plik z repozytorium zamiast tego tekstu. Jeśli danego pliku nie ma w repozytorium w komórce tabeli będzie pusto.
Przykład
Poniższy tekst powoduje wyświetlenie pliku plik_1234.jpg z repozytorium CRMDOC:*
CRMDOC::plik_1234.jpg
Wyświetlanie zdjęć ze starego mechanizmu plików (TOWPLIKI)¶
Jeśli w polu danych umieścisz coś postaci ::<baza>/<tabela>/<pole>/<wartość klucza> to zostanie wyświetlony plik ze starego mechanizmu plików (TOWPLIKI). Jeśli danego pliku nie ma, w komórce tabeli będzie pusto.
Przykład
Poniższy tekst powoduje wyświetlenie pliku z rekordu o REF=1234 skojarzonego z polem PLIK tabeli TOWPLIKI:*
::esystem/TOWPLIKI/PLIK/1234
Wskazówki¶
Jeśli obiekt pochodzi z zapytania SQL powyższe ciągi tekstowe sformatujesz bez problemu w SQL-u. Jeśli obiekt pochodzi z tabeli wykorzystaj możliwość tworzenia w obiekcie wirutalnych pól wyliczanych wyrażeniem SQL.
Pamiętaj, że ten mechanizm umożliwia jedynie wyświetlanie obrazków w tabeli, nie wyświetlisz tym obrazków w dowolnym miejscu okna niezwiązanym z tabelą.
Jeżeli tekst w kolumnie wskazujący na repozytorium jest poprawny, wskazany obraz istnieje, ale nadal się nie wyświetla, to zweryfikuj czy poprawnie skonfigurowałeś ścieżkę dla repozytorium. Klient musi mieć dostęp oraz uprawnienia odczytu i zapisu do folderu, w którym przechowywane są obrazy, więc folder ten musi znajdować się w systemie plików maszyny, na której jest uruchamiany klient, lub w lokalizacji sieciowej, do której ma dostęp.
Aby obraz miał pożądany rozmiar ustaw kolumnom tabeli odpowiednią wysokość. Mechanizm ten sam skaluje obrazy źródłowe do pożądanego rozmiaru i przechowuje w repozytoriach thumbnaile w podkatalogach thumbnails_XXX - gdzie XXX jest wysokością docelowych obrazów w pikselach. Aby thumbnaile mogły być tworzone, każdy użytkownik przeglądający tabele z obrazkami musi posiadać prawo odczytu i zapisu do katalogów z których pobierane są pliki. Raz utworzone thumbnaile są wykorzystane przez wszystkich innych użytkowników, co ogranicza ilość danych przesyłanych przez sieć lokalną. Podmiana plików oryginalnych na nowe spowoduje, że thumbnaile będą automatycznie tworzone na nowo.
Każdy użytkownik cache-uje w pamięci RAM wszystkie wyświetlane pliki, dzięki czemu każdy plik jest wczytywany tylko za pierwszym razem. Cache-owane są jedynie thumbnaile, więc nie zajmuje to znacznych ilości pamięci. Natomiast powoduje to, że podmiana plików na nowe w repozytoriach będzie przez danego użytkownika widziana dopiero po przelogowaniu.
Jeśli zdefiniowałeś wyrażenie formatujące dane dla wszystkich pól niewymienionych z nazwy (poprzez użycie gwiazdki w miejscu SYMBOL_POLA), ale jednocześnie chcesz wyświetlić w jednym z pól obrazek, to potrzebne jest zastosowanie, konkretnie dla tego pola, dodatkowego wyrażenia na listę elementów.
Przykład
Załóżmy, że dla wszystkich niewymienionych z nazwy pól ustawiliśmy wytłuszczenie czcionki poprzez zastosowanie następującego wyrażenia:
*=*=%B*
Mamy też pole ZDJECIE, w którym za pomocą kontrolki IMAGE chcemy wyświetlić obrazek. Przy zastosowaniu powyższego formatowania, obrazek się jednak nie wyświetli, ponieważ nadpisało ono domyślne formatowanie na polu z kontrolką IMAGE. Zamiast obrazka, pokaże się sformatowany tekst zawierający zapis stanowiący odwołanie do repozytorium. Żeby temu zaradzić, należy dla pola z obrazkiem ustawić wyrażenie na listę elementów. Wówczas całość będzie wyglądać tak:
*=*=%B*;ZDJECIE=*=@*
Dodatkowo, należy zwrócić uwagę, czy na polu z obrazkiem Symbol pola i jego Nazwa pola w BD nie różnią się od siebie. Jeśli się różnią, to w wyrażeniu należy użyć Nazwy pola w BD, a nie Symbolu.
Wyświetlanie zdjęć w oknach nie-neosowych¶
Zdjęcia w tabelach można też wyświetlać w oknach standardowych (wyświetlanych akcją BrowseTable lub BrowseQuery) oraz oknach zbudowanych w builderze. Aby wyświetlić zdjęcie powinieneś:
- zapewnić aby źródło danych zwracało kolumnę z nazwą pliku zbudowaną dokładnie tak samo, jak opisano wyżej, czyli np.
CRMDOC::plik_1234.jpglub::esystem/TOWPLIKI/PLIK/1234. - w definicji kolumn tabeli dla tej kolumny zdefiniuj wyrażenie na listę elementów (pick lista) jako:
*=@*
Znak małpki w tym wyrażeniu oznacza to samo co określenie w neosie, że kolumna jest typu IMAGE.
Jeśli masz w tabeli / zapytaniu kolumnę która zawiera samą nazwę pliku z repozytorium, np plik_1234.jpg i wiesz z góry, że zdjęcia chcesz wyświetlać z repozytorium o symbolu CRMDOC, możesz użyć tej kolumny. Wystarczy, że wyrazenie na listę elementów zdefiniujesz jako: *=@CRMDOC::*. Czyli prefiks z nazwą repozytorium dokleisz w pick liście a nie w zapytaniu zwracającym dane. Jeżeli zdjęcia się nie wyświetlają należy sprawdzić czy mamy dobrze skonfigurowaną ścieżkę dla wybranego repozytorium (Konfiguracja -> System -> Repozytoria plików)
Tworzenie tabel wielowierszowych z grupami pól¶
Od wersji 4.0.5 można definiować tabele, w których kolumny można umieszczać nie tylko obok siebie, ale także jedna nad drugą. Jest to przydatne zwłaszcza wtedy, gdy jako jedną z kolumn będzie zdjęcie, które ma wysokość np 3 lub 5 sentemetrów. Do tej pory pozostałymi kolumnami musiały być kolumny tej samej wysokości, zawierające tekst złożony z kilku wierszy.
Aby tworzyć tabele wielowierszowe wystarczy podczas definiowania okna w definicji kolumn tabeli ustawić parametry: wysokość, grupa i wiersz. Wartość pusta grupy i wiersza jest tożsama z wartością 0. Pusta wartość wysokości jest tożsama z wartością 1. Poniżej przykład tabeli wraz z parametrami jakie należy wpisać, aby uzyskać poniższy wygląd.
| Grupa 0 | Grupa 1 | ||
|---|---|---|---|
| wiersz=0 | wiersz=0 | wiersz=0 | wiersz=0 |
| wiersz=1 | wiersz=1, wysokość=2 | ||
| wiersz=2 | |||
Kolorowanie pól edycyjnych¶
Info
Zmiana rozmiaru czcionki w jednym stylu wpływa na wszystkie pozostałe w obrębie elementu.
Aby zmienić kolorystykę pól edycyjnych, należy w definicji pola w oknie podpiąć metodę na styl. Metoda ta otrzymuje w parametrze obiekt klasy ControlStyleInfo. Przypisanie właściwości do tego obiektu steruje kolorami tła i czcionki pola w trzech trybach pracy kontrolki:
- StyleFocused - w kontrolce aktualnie przebywa kursor
- StyleDisabled - kontrolka jest nieredagowalna
- Style - zwykły tryb pracy
- Font - krój i rozmiar czcionki kontrolki
- CaptionFont - krój i rozmiar czcionki etykiety kontrolki
Poniżej znajduje się przykład metody. Wynika z niego, że kolorystyka może być zmieniana dynamicznie w zależności od wartości pól i parametrów obiektu.
public void SetFIELDStyle(ControlStyleInfo info)
{
info.StyleFocused.BackgroundColor = Color.Yellow;
if(this.AKT=="0") return;
info.Style.BackgroundColor = Color.LightGreen;
info.Style.FontColor = Color.BlueViolet;
info.Font.FontSize = 24;
info.Font.FontName = "Times New Roman";
info.Font.FontStyles = new FontStyles[] { FontStyles.Bold };
}
Kolor opisywany jest standardową klasą C# o nazwie Color.
Kolorowanie etykiet¶
Metoda na styl nie umożliwia zmiany koloru tła etykiety. Etykiety nie obsługują również:
- StyleFocused
- StyleDisabled
- CaptionFont jeżeli jest oparta o parametr
Kolorowanie akcji¶
Akcje nie obsługują:
- StyleFocused
- CaptionFont
Kolorowanie paneli¶
Obsługuje jedynie Style.BackgroundColor.
Pozostałe funkcji tabeli¶
Tryb chodzenia po komórkach a nie po wierszach¶
W wersji 4.2.12 doszła nowa możliwość ustawiania grida w NEOSie.
Podczas tworzenia formy BROWSE gdy ustawimy się na tabeli w właściwościach pojawi się możliwość wybrania trybu chodzenia po komórkach grida. Wyróżniamy 2 tryby:
- "Tryb wierszowy" - taki jak do tej pory, przesuwamy się tylko po wierszach i zaznaczamy cały wiersz.
-
"Tryb komórkowy" - możemy w trybie BROWSE zaznaczyć poszczególną komórkę grida. Następnie w kodzie formy biznesowej jesteśmy w stanie odczytać nazwę zaznaczonej komórki z właściwości "SelectedColumn". Uwaga właściwość ta działa tylko w trybie komórkowym.
-
Uwaga - tryb komórkowy nie obsługuje zwracania nazwy pola pochodzącego ze słownika!!! Jeśli pojawi się taka potrzeba proszę o zgłoszenie tego do działu DBR.
- Uwaga - tryb komórkowy działa tylko na kliencie VCL.
Filtrowanie restrykcyjne¶
Od wersji 4.3.2 jest możliwość ukrycia danych w tabeli dla użytkowników, jeśli nie są przefiltrowane do bardzo ograniczonej dziedziny. Zabezpieczamy się w ten sposób przed oglądaniem pełnych kartotek.
Aby to skonfigurować dla okien nieneosowych, wystarczy w ustawieniach kolumn tabeli wypełnić parametr kolumny "Minimalna ilość znaków, aby filtrować dane". W oknach neosowych istnieje analogiczny parametr kolumny widoczny w Neos Expercie. Jeśli dana tabela ma zdefiniowaną co najmniej jedną kolumnę z takim parametrem, to dane w niej są domyślnie ukrywane. Pokazywane są dopiero wtedy, jeśli w polu wyszukiwania nad tabelą wpiszemy co najmniej tyle znaków, ile jest wymagane. Zazwyczaj dziedzina danych jest już wtedy mocno ograniczona.