Консультация № 198419
29.04.2020, 18:39
0.00 руб.
0 3 0
Здравствуйте, уважаемые эксперты! Использую Delphi7. Прошу вас ответить на следующий вопрос: Могу ли я изменить цвет столбца в графике с помощью ColorDialog? При этом хочется что бы настройки цвета сохранялись в ini файле что то типа
Код:
procedure TForm1.WriteParams;
Var
IniFile: TIniFile;
begin
IniFile := TIniFile.Create('c:\1\Set.ini');
IniFile.WriteInteger('Chart_Color'.....
end;

Ну и соответственно читать какой цвет сохранен.
Таким образом я получаю координаты курсора:
Код:
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 для визуального контроля при наладке, потом уберу. Благодарю за помощь.

Обсуждение

давно
Старший Модератор
31795
6196
29.04.2020, 19:37
общий
Адресаты:
Вы это смотрели Преобразовать RGB в TColor и наоборот?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Старший Модератор
31795
6196
30.04.2020, 18:00
общий
Адресаты:
Разобрались?
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Посетитель
352040
133
03.05.2020, 11:27
общий
Думаю что разобрался. Возможно что костыли. Но работает. Меня устраивает. Читаю и сохраняю так настройки.
Код:
procedure TForm1.ReadParams;
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.WriteParams;
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;
WriteParams;
ReadParams;
end;

Как то так. Не претендую на оригинальность, но работает. Спасибо за внимание к вопросу.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Форма ответа