IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Работа с осями в Tchart
AlexSCH
сообщение 19.08.2006 15:58
Сообщение #21


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


В ходе выполнения программы я даю названия осям, при повторной загрузке файла с графической информацией, при отображении на его осях появляются новые названия, а также остаются старые(от прошлой графической информации), как от этого избавится? может быть 2 раза перестраивать график, 1 раз без названий (загнать в область названий пустоту), 2 раз уже с новыми названиями. Я делал так, но ничего не получилось, все равно остаются старые названия:
Код

Chart1.LeftAxis.Title.Caption:='';
Chart1.Repaint;
Chart1.LeftAxis.Title.Caption:=Ch1;
defaultLabels := not defaultLabels;
Chart1.Repaint;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.08.2006 16:10
Сообщение #22


Гость






Ну, это смотря как ты "повторно загружаешь файл с графической информацией". Код, при котором не происходит корректного изменения Axis.Title.Caption - в студию...
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 19.08.2006 16:23
Сообщение #23


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Думал, думал как же это корректно выложить...... пришел к выводу что приклепу весь свой проект, в архиве с проектом есть файл '10', при запуске проги его и нужно открывать. Попробуй 2 раза его открыть, сразу добавляется название в ось Y (появляется лишняя буква В), а ось Х почему-то увеличивается в 2 раза..........
p.s. Файл PRB.EXE также нужен для корректной работы (в смысле не спеши его стирать smile.gif ).

2Volvo извините за бардак в проекте.............. smile.gif


Прикрепленные файлы
Прикрепленный файл  _____.rar ( 40.93 килобайт ) Кол-во скачиваний: 158
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.08.2006 17:13
Сообщение #24


Гость






По поводу
Цитата(AlexSCH @ 19.08.2006 16:23)
ось Х почему-то увеличивается в 2 раза..........

Очень просто... Ты делаешь
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
, а кто при входе в процедуру
procedure TForm1.N4Click(Sender: TObject);
begin
If OpenDialog1.Execute
then begin
t := 0; { <-- Здесь !!! }
...
будет T сбрасывать? Оно же накапливается, и при третьей загрузке длина оси X утроится по сравнению с первой, если T не обнулить smile.gif

Теперь про ось Y... Я не добрался, честно говоря, до причины такого поведения Axis.Title.Caption, но одно выяснил совершенно точно: у тебя здесь:
          Chart1.LeftAxis.Title.Caption:='';
Chart1.Repaint;
Chart1.LeftAxis.Title.Caption:=Ch1; { <-- !!! }

в Ch1 хранится неверное значение. То есть, прибавляется B... Проблема, скорее всего, схожая, где-то не присвоил Ch := '';

Кстати, если этот проект писать как положено, используя процедуры/функции/Case, то от почти 2000 строк, что есть сейчас останется в худшем случае 400. Как думаешь, какую программу легче сопровождать? wink.gif
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 19.08.2006 18:25
Сообщение #25


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Спасибо, разобрался, заработало smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 28.08.2006 15:01
Сообщение #26


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


У меня еще вопрос.
Как можно поменять масштаб дополнительной оси.
Дополнительную ось я создавал так
Код

procedure TForm1.Series1AfterDrawValues(Sender: TObject);
var posaxis:longint;
begin
  With Chart1 do
  begin
    { Calculate axis position and draw... }
    PosAxis:=ChartRect.Left+Trunc(ChartWidth*YPercent/1000.0);
    LeftAxis.CustomDraw(posaxis-5,posaxis-5,posaxis+0,true);
  end;
end;

Получилось то что на вложенной картинке.
Изображение
Требуется, чтобы дополнительная ось при том же масштабе графика, была в другм масштабе единиц измерения.
То есть по типу того, как до этого сделали с главными осями Х и Y.
Как это сделать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.08.2006 18:22
Сообщение #27


Гость






AlexSCH, во-первых, картинку присоедини сюда (ее невозможно посмотреть, сервер не отвечает), а во-вторых, если даешь код, так давай так, чтобы было понятно, что чему равняется...

YPercent это что такое и чему равно, например?
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 29.08.2006 11:21
Сообщение #28


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Вот архив, с программой.
YPercent это из демо TeeChart к делфе, где оси кординат могут перемещатся, с помошью таймера, я таймер отключил, просто переменная осталась.


Прикрепленные файлы
Прикрепленный файл  5.rar ( 22.65 килобайт ) Кол-во скачиваний: 178
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 29.08.2006 15:56
Сообщение #29


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


AlexSCH, а где Unit2 ?

кмх ... Попробуй использовать циклы в программе smile.gif

j:=1;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;
j:=2;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;
j:=3;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;
j:=4;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;
j:=5;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;
j:=6;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;
j:=7;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;
j:=8;
Chart1.Series[0].AddXY(t, strtoint('$'+Mat[j]));
t:=t+1;


Такой код во первых выглядит странно, во вторых читается плохо

Ты можешь написать задание полностью ? Что-то мне подсказвыает, что этот код можно сократить в несколько раз, и обойтись без таких вещей :

t,tt,ttt,tttt,ttttt:integer;
r,zz,zs,zss,zx,uu,uu2,ww,zz1,zx1,zs1,zss1,zz2,xx,xx2,yy,yy2,yy1,
yy12,yyy,yyy2,www,www2,laxis,baxis,qaz,gerc44:real;


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 29.08.2006 16:05
Сообщение #30


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Unit 2 добавил.
Файл с информацией в архиве под именем "10"
Согласен, код корявый. Добавление дополнительной оси происходит в самом конце кода вот этой процедурой procedure TForm1.Series1AfterDrawValues(Sender: TObject);
Цитата

ты можешь написать задание полностью

Задача программы отображать графическую информацию. Эта информация хранится в файле, например под именем "10", в поле TChart выводится несколько графиков, изначально они идут в единой системе координат, а требуется, при том же масштабе(расположении) графиков, чтобы было несколько осей Y, с различными масштабами единиц измерения.
В файле copy11 рисунок, там уже есть 2шкала, но я не знаю как поменять ее относительный масштаб


Сообщение отредактировано: AlexSCH - 29.08.2006 16:11


Эскизы прикрепленных изображений
Прикрепленное изображение

Прикрепленные файлы
Прикрепленный файл  6.rar ( 25.67 килобайт ) Кол-во скачиваний: 171
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 30.08.2006 17:54
Сообщение #31


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Действительно никто не знает как поменять масштаб на второй оси??? или это действительно нереально??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.08.2006 18:09
Сообщение #32


Гость






Да ты покажи, НА ЧТО ты хочешь поменять? Как это выглядеть должно??? Телепаты кончились.

И программу подправь, а то она у тебя через раз дает ошибку обращения к TXT файлу, сколько можно ее перезапускать?
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 31.08.2006 10:15
Сообщение #33


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Цитата
Да ты покажи, НА ЧТО ты хочешь поменять? Как это выглядеть должно??? Телепаты кончились.

Выглядеть это должно так: первая ось Y остается неизменной, а вторая должна отображать те же цифры что и первая, только разделенные на коэффициент, например 10. То есть, если левая шкала показывает 100, то правая на этом-же уровне далжна показывать 10. Коэффициент необязательно может быть целым числом.
Цитата
И программу подправь, а то она у тебя через раз дает ошибку обращения к TXT файлу, сколько можно ее перезапускать?

Задержку я поставил побольше должно помочь.
Измененный проект прилагается.


Прикрепленные файлы
Прикрепленный файл  7.rar ( 46.23 килобайт ) Кол-во скачиваний: 153
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
AlexSCH
сообщение 26.09.2006 12:26
Сообщение #34


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской

Репутация: -  0  +


Я переделал вид программного окна в графическом редакторе, должно выглядеть вот так как на приклепленном изображении, то есть вторая ось Y представлена в другом масштабе. Как добавленную ось Y перевести в другой масштаб? (код на дополнительную ось Y представлен в пердыдущих постах, проблема в том, что дополнительная ось Y по масштабу полностью соответствует начальной оси Y, а нужно чтобы их масштабы отличались)


Сообщение отредактировано: AlexSCH - 28.09.2006 10:38


Эскизы прикрепленных изображений
Прикрепленное изображение
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 29.07.2007 23:49
Сообщение #35


Гость






Помогите пожалуйста с моей проблемой...
кусок кода:
....
var
cicli:integer;
a,b:double;
Matrix6, Matrix1: array of integer;
begin
setlength(Matrix6, 6);
setlength(Matrix1, 6);
Matrix6[1]:=2; Matrix6[2]:=51; Matrix6[3]:=53; Matrix6[4]:=23; Matrix6[5]:=1;
Matrix1[1]:=14; Matrix1[2]:=52; Matrix1[3]:=13; Matrix1[4]:=5; Matrix1[5]:=23;

for cicli:=1 to 5 do
begin
a:=Matrix6[cicli];
b:=Matrix1[cicli];
unit4.Form4.Chart1.SeriesList[0].AddXY(a,b,'',clRed);
end;
unit4.Form4.Chart1.LeftAxis.TitLE.Caption:='KTG';
unit4.Form4.Chart1.BottomAxis.Title.Caption:='MR';
unit4.Form4.ShowModal;
...
В общем, проблема в том, что график строится не в том порядке, в каком я ему добавляю точки, а по возрастанию оси Х...т.е. 1,2,23,51,53... а не 2,51,53,23,1. Как разрешить проблему?
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 14.09.2025 4:16
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"