Mam prosbe,szukalem na forum,ale nie doszperalem sie czegos podobnego,moze przeoczylem,wiec jelsi ktos kojarzy prosze o napisanie,lub podanie linku.
Chce narysowac wykres,a moze raczej linie ktora by przebiegala w nastepujacy sposob:
Podaje np pierwszego dnia wartosc 1 i zaznacza mi punkt,nastepnie podaje np za 3 dni wartosc 2 i zaznacza mi kolejny punkt,chce zeby te punkty laczyly sie w jedna calosc,tzn wykres funkcji itd. Nie wiem czy da sie to zrobic na jakims wykresie, czy trzeba po prostu rysowac punkty i laczyc je??Prosze o pomoc kogos zorientowanego??
gadhet napisał(a)
Prosze niech ktos pomoze!!!!!!!!!!!!!!!!!
Ale o co dokładnie chodzi? Najlepiej daj kod który już masz to zobaczymy co trzeba poprawić.
Canvas.MoveTo(x, y); //Współrzędne początku rysowania (poprzedniego punktu)
Canvas.LineTo(x, y); //Współrzędne końca rysowania linii do bierzącego punktu
Zapisuj gdzieś (np. w pliku typowanym) współrzędne punktów tak aby można łatwo odtworzyć współrzędne wszyskich punków po ponownym uruchomieniu programu.
masz komponent TChart - obsługa podobnie jak wykresy w excelu
Misiekd napisał(a)
masz komponent TChart - obsługa podobnie jak wykresy w excelu
wlasnie wiem ze jest Tchart i chce wlasnie przerobic cos z excela,gdzie mam napisane makro i rysuje mi wykresy,ale chcialbym zrobic to w delphi,ale wlasnie nie wiem za bardzo jak obslugiwac Tchart moze ktos podac jakiegos linka z jakimis podstawami tego,albo przykladowy program rysowania czegos podobnego,moze wtedy dojde jak sie to obsluguje,czy Tchart ma wlasnie taka funkcje rysowania od punktu do punktu przy zczytywaniu np danych z memo,czy edita?
jedyna co musisz zrobić to dwukrotnie kliknąć na TChart utwozyć jakąś serie przycisk Add na zakładce Char|Series.
potem prostą intrukcja dodajesz punkty do wykresu:
chart1.Series[0].AddXY(x, y);
dj napisał(a)
jedyna co musisz zrobić to dwukrotnie kliknąć na TChart utwozyć jakąś serie przycisk Add na zakładce Char|Series.
potem prostą intrukcja dodajesz punkty do wykresu:
chart1.Series[0].AddXY(x, y);
wiec rozumie ze poprzez zmiane x i y bede otzrymywal kolejne punkty wykresu??
sprawdz a zobaczysz. komponent TChart ma dość rozbudowanego help'a tam jest prawie wszystko czego potrzeba!
dj napisał(a)
sprawdz a zobaczysz. komponent TChart ma dość rozbudowanego help'a tam jest prawie wszystko czego potrzeba!
dobra doszedlem do rysowania takiego wykresu,ale teraz mam kolejny problem,co zrobic,aby zapamietywal dane wprowadzone wczesniej,tzn zeby jak wlacze znowu nie rysowal od poczatku tylko od ostatniego punktu,chyba trzeba gdzies zapisac,czy mozna to jakos inaczej rozwiazac??
TIiniFiles, TRegistry, własne pliki typowane, zwykłe pliki tekstowe, możliwości masz wiele... do wyboru do koloru...
routex napisał(a)
TIiniFiles, TRegistry, własne pliki typowane, zwykłe pliki tekstowe, możliwości masz wiele... do wyboru do koloru...
hmm, pewnie mozliwosci jest duzo..,ale nie wiem co ktora robi,domyslalm sie ze zwykle pliki tekstowe czyli tworzenie pliku tekstowego i zapisywanie w nich danych wartosci,ale ja chcialbym tego uniknac,tworzenia dodatkowych plikow,gdyż za kazdym razem pozniej musialbym ladowac te pliki,czyż nie??Jest jakie sinne wyjscie z tego??
TRegistry - czyli rejestr Windows, bez nowych plików...
Jak dla mnie to najrozsądniej jest to zrobić na pliku binarnym, nie ma co zaśmiecać jaszcze bardziej rejestru.
routex napisał(a)
TRegistry - czyli rejestr Windows, bez nowych plików...
czytam to Tregistry w helpie ale nie mam zielonego pojecia jak np.zapisac fragment wykresu,czy jego dane,moglbys troche pomoc
Oj, słabo szukasz... :P
Obsługa TRegistry z pliku HELP Delphi:
function GetRegistryValue(KeyName: string): string;
var
Registry: TRegistry;
begin
Registry := TRegistry.Create(KEY_READ);
try
Registry.RootKey = HKEY_LOCAL_MACHINE;
// False because we do not want to create it if it doesn't exist
Registry.OpenKey(KeyName, False);
Result := Registry.ReadString('VALUE1');
finally
Registry.Free;
end;
end;
routex napisał(a)
Oj, słabo szukasz... :P
Obsługa TRegistry z pliku HELP Delphi:
function GetRegistryValue(KeyName: string): string;
var
Registry: TRegistry;
begin
Registry := TRegistry.Create(KEY_READ);
try
Registry.RootKey = HKEY_LOCAL_MACHINE;
// False because we do not want to create it if it doesn't exist
Registry.OpenKey(KeyName, False);
Result := Registry.ReadString('VALUE1');
finally
Registry.Free;
end;
end;
ale ja juz dawno to przekleilem,ale nie odpala mi sie rzuca sie o
Registry: TRegistry;
ale ja juz dawno to przekleilem,ale nie odpala mi sie rzuca sie o
Registry: TRegistry;
a dodałeś do sekcji uses Registry ?
przed zamknięciem aplikacji pobierasz dane z wykresu w następującu sposób(pseudo kod):
var
t: TChartValueLists;
x, y: TChartValueList;
begin
t:= chart1.Series[0].ValuesLists;
x:= t.ValueList[0];
y:= t.ValueList[1];
zmienne x, y zawierają właściwość values[i] i masz dostęp do wszystkich punktów.
Jeżeli chcesz korzystać z rejestrów to masz trzy wyjscia zapisujesz każdy punkt w nowej watrośći, wszystkie punkty razem jako wartości binarne lub jak kolega wcześniej napisał jako string:
var
reg: TRegistry;
begin
reg:= Tregistry.Create;
// przygotowanie danych
// pierwsza opcja
for i:= all points do begin
reg.WriteFloat('nazwax' + i, point.x);
reg.WriteFloat('nazway' + i, point.y);
end;
reg.Free;
// drug opcja dane pakujesz do odpowieniej zmiennej choćby tablica a: array[0..1000] of char;
reg.WriteBinaryData('punkty', a, rozmiar_w_bajtach);
łatwiej jest posłurzyć się plikiem
var
s: TFileStream;
begin
s:= TFileStream.Create('punkty.bin', fmCreate);
for i:= all points do begin
s.write(x[i], 4); // rozmiar zmiennej dla integer i float 4 dla double 8
s.write(y[i], 4); // przy odczycie urzywasz s.read(x[i], 4);
end;
s.Free;
routex napisał(a)
ale ja juz dawno to przekleilem,ale nie odpala mi sie rzuca sie o
Registry: TRegistry;a dodałeś do sekcji uses Registry ?
teraz juz tak;) i działa,no ale skad mam wiedziec np ze zapisalo czesc wykresu(jego x,y) i gdzie i jak to pozniej odtworzyc i rysowac dalej wykres??