Chart1 - niewidoczne series

Chart1 - niewidoczne series
tomix
  • Rejestracja: dni
  • Ostatnio: dni
0

Drodzy koledzy,

mam na formularzu min. Chart1 do rysowania wykresów. Co godzinę ma przybywać kolejny Series, a żeby ułatwić sobie sprawę i wszystkie generować identyczne (pozmieniałem kolory, dodałem parę efektów 3d) zrobiłem tak:

Kopiuj
function TfmMain.GenerujSeries(Title: string): TChartSeries;
var
  tempSeries: TChartSeries;
begin
  result := nil;
  try
    tempSeries := TChartSeries.Create(nil);
    tempSeries.ParentChart := Chart1;
    tempSeries.Title := Title;
    tempSeries.Visible := True;
    tempseries.Pen.Width := 4;
    tempseries.Pen.Style := psDot;
    tempseries.Name := 'd';
    tempseries.Marks.Visible := true;
    tempseries.Marks.Clip := false;
  except
    on e: Exception do
      ObsluzBlad(e, 'TfmMain.GenerujSeries');
  end;
end;

Jak widzicie użyłem już sporo właściwości z TChartSeries, ale żadna mi nie pokazuje linii na wykresie. Tak jak na przykładowym screnie:

6bbf805b_o.png

Czy macie może pomysł czego mi jeszcze brakuje?

m_Lesiu
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 138
0

funkcja zawsze zwraca nil, może coś z tym dalej w programie massz

tomix
  • Rejestracja: dni
  • Ostatnio: dni
0

Pen.Color ? - _13th_Dragon -> nadal nic. Tzn coś się pojawia bo skala się zmienia, ale samego wykresu nadal nie widać.
W ogóle czy to jest cała funkcja? czy tylko kawałek? - TLesiu -> tj. całość. Czegoś brakuje wg. Ciebie?

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0
tomix napisał(a)

Pen.Color ? - _13th_Dragon -> nadal nic. Tzn coś się pojawia bo skala się zmienia, ale samego wykresu nadal nie widać.

@tomix - na litość boską, jak mamy Ci pomóc, jeśli podajesz tak ogólne informacje? Do tego masz mało kodu, a on sam jest słabo napisany...

TLesiu napisał(a)

funkcja zawsze zwraca nil, może coś z tym dalej w programie massz

Trafne spostrzeżenie - funkcja zawsze zwraca nil; Dodatkowo w kółko powtarzasz część kodu, który można skrócić przez skorzystanie z instrukcji wiążącej With;

Podałeś jedynie namiastkę kodu, który raczej błędu nie spowoduje, a dlaszy kod korzystający z metody GenerujSeries nie chcesz pokazać; Tak więc podaj więcej kodu i więcej szczegółów, ewentualnie dorzuć zrzut ekranu żeby zobrazować problem.

tomix
  • Rejestracja: dni
  • Ostatnio: dni
0

To jest "robocza" część kodu, co to oznacza:
• nie zastosowałem with ponieważ ciągle dopisuje nowe property "na chybił trafił" i potrzebuje podpowiedzi po. Ostatecznie przed wersją produkcyjną zostanie to poprawione
• faktycznie funkcja zwraca nil, ale to akurat tutaj jest celowe. Zamiast pisać kod, który zwróci TChartSeries - (Chart1.AddSeries(GenerujSeries(title))) zrobiłem w funkcji, że parentem jest Chart1

Kopiuj
tempSeries.ParentChart := Chart1; 
  • wychodzi na to samo, a w pierwszym wariancie coś mi nie działało.

Ogólnie dodawanie nowych wartości do series działa bo jak wspominałem zmienia się skala i dodają się nowe etykiety na osiach X i Y tylko samej linii wykresu nie widać...

flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12269
0

faktycznie funkcja zwraca nil, ale to akurat tutaj jest celowe.

Czegoś tutaj nie rozumiem - celowo wprowadzasz zamęt w kodzie? Skoro nie potrzebujesz zwracać żadnej wartości to po co zrobiłeś funkcję?

nie zastosowałem with ponieważ ciągle dopisuje nowe property "na chybił trafił" i potrzebuje podpowiedzi po.

Hmm... A to wewnątrz instrukcji wiążącej nie można dopisywać na chybił/trafił? Wiem, że to później poprawisz, jednak lepiej jest od razu pisać poprawnie, by później nie musieć poprawiać;

Ogólnie dodawanie nowych wartości do series działa bo jak wspominałem zmienia się skala i dodają się nowe etykiety na osiach X i Y tylko samej linii wykresu nie widać...

Ja niestety nie mam tej kontrolki i nigdy jej nie wykorzystywałem więc sprawdzić nie mam jak, ale w Google jest sporo przykładów z których wynika, że nieco przekombinowujesz dodawanie nowych serii; Poszukaj a znajdziesz prostsze rozwiązanie.

tomix
  • Rejestracja: dni
  • Ostatnio: dni
0

@Furious Programming: zgadzam się zupełnie co do porządku w kodzie - zawsze powinno być przejrzyście i stosownie zakomentowane. Tej zasady staram się trzymać, czego faktycznie może nie być widać w tym przypadku ;) Jednak ostateczna forma funkcji GenerujSeries musi poczekać do określenia aż dodawanie nowych serii będzie działać albo poprzez kod w jej ciele, albo poprzez referencję. Wtedy przestanie być funkcją. Niestety póki co próbuję na wszelkie możliwe sposoby (nawet te z google) i nic.

@Edit:
problem rozwiązany, zastąpiłem

Kopiuj
TChartSeries

klasą TLineSeries

Kopiuj
Pegii
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 54
0

Oprogramowałeś właściwości serii za pomocą funkcji ale nigdzie nie dodałeś do tej serii danych. No chyba że robisz to odwołując się później do tej funkcji?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.