Chart1 - niewidoczne series

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:

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?

0

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

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?

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.

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

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ć...

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.

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

TChartSeries

klasą TLineSeries

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?

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