TeeChart w Delphi 10.3 CE

0

Witam,

Czy w Delphi 10.3 CE jest komponent do obsługi wykresów jak w starych wersjach Delphi (TeeChart)?

Pozdrawiam.

1

Według informacji
screenshot-20201018144656.png
powinny być ale potwierdzić musi ktoś kto posiada CE.

0

w Delphi Community 10.3 u3 nie ma, sprawdzałem też menadżerze pakietów.

0

Tools -> Manage Platforms
W zakładce "Additionals options..." powinno być.

0

Zgodnie z https://en.wikipedia.org/wiki/Teechart:

TeeChart has been included in most Delphi and C++Builder products since 1997[2], and TeeChart Standard currently is part of Embarcadero RAD Studio 10.4 Sydney

Sprawdziłem i w wersji 10.2 CE tego nie ma, natomiast o ile się nie mylę, to wersja CE nie różni się znacząco pod względem zawartości od wersji płatnej, główne różnice dotyczą możliwości komercyjnego wykorzystania.

0

Ok, jednak w 10.3 CE nie ma :/
http://docwiki.embarcadero.com/RADStudio/Rio/en/TeeChart

TeeChart is included with all RAD Studio versions except Starter;

0

Znacie zamiennik do wykresów?
Szukałem w internecie, ale ciągle nic nie znajduje.

0

@Markoni pewnie interesuje cię jakiś bezpłatny zamiennik?
Z płatnych jest sporo, np. TMS VCL Chart, TMS FMX Chart, LMD ChartPack, List & Label Enterprise Reporting Edition, TeeSuite, ProEssentials, Plotlab, SDL Chartpack.

0

Tak wolę bezpłatny, ponieważ nie programuję komercyjnie.

1

Komponent do tworzenia wykresów do jeden wieczór programowania. Jeśli jest potrzebny do prostych zastosowań to nie wiem czy jest sens poświęcać czas na poszukiwania.

0

Same statyczne wykresy to nie problem, nie wiem jak zrobić dynamiczne powiększanie/zmniejszanie zakresu podobnie jak w TChart.

0

Za mało szczegółów, żebym mógł cokolwiek doradzić.

Kontrolek TChart nie miałem okazji używać, więc w razie czego napisz konkretnie z czym masz problem, a coś się doradzi.

0

Np. w X mam czas, a w Y wartości. Teraz wczytując z pliku chcę przybliżać wykres który z powodu np. rozdzielczości nie zmieściłby się na ekranie.
W tym przypadku widać też problem, jak zmieścić cały zakres na wykresie jeśli rozdzielczość danych jest większa od okna.

1

Mnożysz wartości przez zmiennoprzecinkową skalę, a następnie wyniku używasz do renderowania – nic trudnego.

Czyli najpierw pobierasz rozmiar obszaru dla wykresu i odejmujesz od tego stałe offsety (żeby punkty nie leżały na samym kraju obszaru), następnie wyznaczasz mnożnik(i) dzieląc szerokość/wysokość obszaru przez maksymalną dopuszczalną wartość dla punktu. W tym momencie masz małą liczbę zmiennoprzecinkową. Teraz czas na renderowanie. Po kolei bierzesz punkty z serii i mnożysz go przez ten wyliczony mnożnik – otrzymujesz współrzędną relatywną względem dostępnego obszaru, do której dodajesz offset i gotowe. I tak z każdym punktem, otrzymasz współrzędne Y na wykresie.

Dla współrzędnych X będzie podobnie, tyle że ów maksimum nie będzie maksymalną możliwą liczbą dla danego typu danych (lub dla typu liczb z serii do wyświetlenia), a po prostu ilością liczb mieszczących się w obszarze. Im więcej danych ma być widocznych, tym odległości między sąsiednimi punktami będą mniejsze. Tutaj też weź pod uwagę offsety, żeby pierwszy i ostatni punkt nie leżały na samych krajach obszaru.

Ewentualnie zamiast dodawania offsetów, najpierw pobierz rozmiar obszaru dla wykresu, a następnie zmniejsz go o te offsety. W ten sposób obliczenia będą krótsze, bo dotyczyć będą jedynie skalowania, czyli de facto samego mnożenia.


Dobrze by było wiedzieć jakie dane i w jaki sposób chcesz pokazać na wykresie. Jeśli np. masz serię liczb typu Integer, mnożnik będzie bardzo mały, pokroju 0.000002843, dla wartości typu UInt8 będzie pokroju 0.7982374876, a jeśli obszar jest większy niż 255 pikseli, mnożnik będzie większy niż 1.

W każdym razie to co opisałem wyżej pozwoli renderować dowolne wartości w dowolnie małym/dużym obszarze. W razie czego mogę przygotować małego PoC-a w Lazarusie, który zilustruje ww. obliczenia, tak żebyś dokładnie wiedział jak wygląda implementacja oraz dokładnie widział w oknie, jakie są rezultaty tych obliczeń. Coś prostego do zabawy, raczej w formie renderowania w PaintBox – bo szybciej. A przeniesienie tego kodu do klasy kontrolki będzie banalne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1