Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.04.2020, 15:41
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию Chart

Доброго дня всем.
Такой вопрос. Могу ли я изменить цвет столбца в графике с помощью ColorDialog?
Таким образом я получаю координаты:
Код:
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var r :Real;
    r1, r2 :String;
begin
R := Chart1.Series[0].XScreenToValue(X);
Edit01.Text:= FloatToStr(R);
R1:=Edit01.Text;
r2:=Copy(r1,1,Pos(',',r1)-1);
Edit02.Text:=r2;

 if
  r2='1'
   then
    begin
   N1.Visible:=True;
   N2.Visible:=False;

 end;
 if
  r2='2'
   then
    begin
   N1.Visible:=False;
   N2.Visible:=True;
 end;
То есть я знаю положение курсора и соответственно могу нажатием на N1 или N2 вызвать ColorDialog. Получается что при нажатии на N1 я получаю в ColorDialog текущий цвет, а при закрытии ColorDialog меняется цвет в графике. Хочется иметь возможность поменять цвет, не правя код, а в процессе работы. Edit01, Edit02 для визуального контроля при наладке, потом уберу. Благодарю за помощь.
Ответить с цитированием
  #2  
Старый 28.04.2020, 04:30
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, если ты умеешь определять серию, то вот простенький пример:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ColorDialog1.Color := Chart1.Series[0].SeriesColor;
  if colorDialog1.Execute Then
    Chart1.Series[0].SeriesColor := ColorDialog1.Color;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  I : Integer;
begin
  For I := 1 To 10 Do
    Chart1.Series[0].AddX(Random(100));
end;

Вторая процедурка - просто случайные значения для отладки.
Ответить с цитированием
  #3  
Старый 05.05.2020, 14:26
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Слепил так. Возможно что костыли. Но работает. Меня устраивает. Читаю и сохраняю так настройки.
Код:
procedure TForm1.ReadP;
var
 IniFile: TIniFile;
begin;
IniFile := TIniFile.Create('c:\Prog\Set.ini');
  Label01.Color:=IniFile.ReadInteger('Chart_Color','Y1',Label01.Color);
  Label02.Color:=IniFile.ReadInteger('Chart_Color','Y2',Label02.Color);
  Label03.Color:=IniFile.ReadInteger('Chart_Color','Y3',Label03.Color);
  IniFile.Free;
end;
procedure TForm1.WriteP;
var
 IniFile: TIniFile;
begin;
IniFile := TIniFile.Create('c:\Prog\Set.ini');
  IniFile.WriteInteger('Chart_Color','Y1',Label01.Color);
  IniFile.WriteInteger('Chart_Color','Y2',Label02.Color);
  IniFile.WriteInteger('Chart_Color','Y3',Label03.Color);
  IniFile.Free;
end;

Таким образом передаю данные и цвет в график:
Код:
begin
 Chart1.Series[0].Clear;
Chart1.Series[0].AddXY(1,y1,n1,Label01.Color);
Chart1.Series[0].AddXY(2,y2,n2,Label02.Color);
Chart1.Series[0].AddXY(3,y3,n3,Label03.Color);

Меняю цвет:
Код:
procedure TForm1.N2Click(Sender: TObject);
begin
  ColorDialog1.Color := Label02.Color;
  if ColorDialog1.Execute Then
    Label02.Color := ColorDialog1.Color;
    WriteP;
    ReadP;
end;
Как то так. Не претендую на оригинальность, но работает. Спасибо за внимание к вопросу.
Ответить с цитированием
  #4  
Старый 06.05.2020, 08:05
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Для сохранения/восстановления настроек удобно применять специальные компоненты. Там указываешь, что надо сохранить - и всего делов.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:59.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter