Generator raportów FastReport .NET oferuje szerokie możliwości customizacji, czyli konfigurowania opcji pod własne potrzeby. Z kodu aplikacji użytkownika można tworzyć własne komponenty generatora raportów, wykorzystując biblioteki FastReport. Można więc stworzyć własny projektant raportów i ich przeglądarkę.
Można również zmienić okna dialogowe w projektancie raportów, na przykład okno zapisu pliku.
Jednak prawdziwie nieograniczone możliwości dopasowania zapewnia kod źródłowy generatora raportów. Możesz przekonfigurować obecne funkcje do swoich potrzeb lub dodać nowe. Dziś opowiemy o tym, jak dodać własny element sterujący do przybornika w projektancie raportów.
Załóżmy, że w swoich raportach często używasz obiektu tekstowego z określonymi ustawieniami. Byłoby wygodnie mieć skonfigurowany obiekt "tekst" z określonym wyróżnieniem czcionki lub koloru, bez konieczności ręcznego ustawiania tych właściwości za każdym razem.
Musisz po prostu stworzyć swój własny obiekt! W tym celu wystarczy odziedziczyć swój obiekt po istniejącym, rozszerzając jego funkcje lub tworząc nowe.
Do wytworzenia własnego komponentu do raportu potrzebny jest kod źródłowy generatora raportów FastReport .NET. Rozważmy przypadek stworzenia własnego obiektu na bazie obiektu Text. W tym celu należy dodać nową klasę do podstawy projektu FastReport:
public class CustomerTextObject : TextObject { public override void OnBeforeInsert(int flags) { base. OnBeforeInsert(flags); Border. Lines = BorderLines. All; } }
W tej klasie przedefiniowaliśmy zdarzenie przed wstawieniem obiektu, w którym ustawiliśmy domyślną wartość dla granic obiektu. Dzięki temu nasz obiekt tekstowy od samego początku będzie posiadał włączone granice. Jeśli potrzebujesz ustawić jakieś inne właściwości obiektu - nie ma problemu. Ustawmy na przykład kolor:
public override void OnBeforeInsert(int flags) { base.OnBeforeInsert(flags); Border.Lines = BorderLines.All; TextColor = System.Drawing.Color.Gray; }
Jeśli chcesz stworzyć obiekt z własną funkcjonalnością, dziedzicz po klasie bazowej ReportComponentBase. Jednak w takim przypadku oprócz właściwości obiektu i jego zachowania, będziesz musiał wykonać renderowanie - metoda Draw(). Wtedy wywołujesz w niej base.Draw() i dodajesz rysowanie obiektu.
Rozważmy przykład renderowania obiektu Text:
public override void Draw(FRPaintEventArgs e) { base.Draw(e); DrawText(e); DrawMarkers(e); Border.Draw(e, new RectangleF(AbsLeft, AbsTop, Width, Height)); DrawDesign(e); }
Jak widać, wywoływanych jest tu kilka metod naraz: do renderowania tekstu, znaczników, granic i edytora.
Po wytworzeniu obiektu należy go zarejestrować, aby pojawił się w przyborniku w projektancie raportów. W tym celu użyj metody FastReport.Utils.RegisteredObjects.Add() w klasie AssemblyInitializer.cs.
Przykład rejestracji stworzonego przez nas obiektu:
RegisteredObjects.Add(typeof(CustomerTextObject), “ReportPage”, 120, 1);
Wszystkie parametry są w kolejności: nazwa rejestrowanego obiektu, nazwa obiektu strony raportu, identyfikator ikony obiektu, numer porządkowy obiektu w przyborniku. Ikony są zapisane w zasobach. Do zasobów można dodać swój obrazek w formacie bmp lub zamiast identyfikatora ikony przesłać go bezpośrednio do parametru metody.
Teraz możesz skompilować rozwiązanie i uruchomić kreator raportów. W oknie narzędziowym pojawi się jeszcze jedna kontrolka:
Użyliśmy ikony obiektu Text, dlatego wygląda on tak samo. Teraz dodajemy go do strony raportu i wpisujemy tekst:
Jak widzimy, zarówno obramowania, jak i kolor tekstu odpowiadają naszym ustawieniom w kodzie. Stworzyliśmy "niestandardowy" obiekt "Tekst" z ustawionymi granicami i kolorem tekstu. Za pomocą tej metody można skonfigurować dowolny istniejący obiekt w raporcie lub stworzyć własny.