Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
alexandr017
2 / 2 / 1
Регистрация: 09.12.2011
Сообщений: 58
#1

Работа с файлами и цветом - Delphi

11.01.2012, 21:12. Просмотров 1348. Ответов 10
Метки нет (Все метки)

Друзья, у меня такая проблема:
Во время работы с моей программой у пользователя есть возможность изменять цвет формы. Помагите сделать так, чтобы при октрытии программы сохранялся прошлый цвет. ( То есть если у меня форма зелёного цвета, я закрываю программу. Затем открываю и она снова зелёная, а не белая)

Вот мой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.FormShow(Sender: TObject); (также я думаю можно использовать FormCreate )
var s:string;  f:System.Text;
Begin
if FileExists('...\conf.ns') then begin
assignFile (f,'conf.ns');
reset (f);
readln(s);
Form1.Color:=strtoint(s);
CloseFile (f);
end; 
 
а вот процедура закрытия:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var s:string;  f:System.Text;
Begin
if FileExists('...\conf.ns') then begin
assignFile (f,'conf.ns');
s:=inttostr (form1.color); // вместо этой строчки надо что другое
Rewrite(f,s);
CloseFile (f);
end;
end;
Если не ошибаюсь, то каждый цвет имеет свой номер ("FFF432", "C33A42")...так вот я не знаю как его программно узнать, записать и считывать из файла.
 Комментарий модератора 
Теги кода добавлены модератором. По правилам форума, код должен быть оформлен соответствующими тегами. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку: "DELPHI".
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2012, 21:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с файлами и цветом (Delphi):

работа с цветом - Delphi
можноли какнибудь присвоить компоненту свой цвет? те. memo1.Color:=#171aa7; Добавлено через 4 минуты пробую так ...

Работа с цветом в Delphi - Delphi
Главная плавно изменяет цвет формы About (три ScrollBar: R, G, B), числовые значения которых отображаются в форме Дочерняя

Работа с цветом пикселя - Delphi
Доброго дня! Есть такая проблема - мне нужно определить цвет пикселя в неактивном окне и при этом, если цвет не равен, допустим, красному,...

Лабораторная работа №5. Работа с файлами и алгоритмы сортировки - Delphi
1. Написать функцию Load для считывания из текстового файла (например, Workers.txt) информации о работниках и заработной плате. В первой...

Работа с файлами - Delphi
Здравствуйте! Помогите пожалуйста решить 2 задачи на файлы, сам пробовал, результат 0 =) Задачи: Заранее спасибо!

Работа с файлами - Delphi
Есть список строк в листбоксе типа- C:\Users\Николай\Pictures\icons_2\fl1.bmp C:\Users\Николай\Pictures\icons_2\fl2.jpg ...

10
tupik123
12 / 4 / 1
Регистрация: 10.02.2011
Сообщений: 46
11.01.2012, 21:25 #2
Попробуй во это:
ColorToString();
StringToColor();
1
kwinto
55 / 83 / 14
Регистрация: 27.02.2010
Сообщений: 373
11.01.2012, 21:40 #3
На вскидку:
readln(s) исправить на readln(f, s)
Rewrite(f,s) на rewrite(f); writeln(f,s);
1
sexovich
21 / 21 / 0
Регистрация: 11.01.2012
Сообщений: 132
11.01.2012, 21:40 #4
В тебя создает файлик conf.ns куда всё пишет??? Я в себя проверил но в меня не создает его почему то, а если его не создает, значит цвет форми нигде не сохраняется, а значит и загрузить иной цвет не получится.
0
alexandr017
2 / 2 / 1
Регистрация: 09.12.2011
Сообщений: 58
11.01.2012, 21:56  [ТС] #5
Файл у меня пока что не создается. Я пока делаю при условии, что файл уже сужествует...(т.е. создал его через проводник и занес туда случайные числа)

tupik123,
Спасибо за ColorToString(); StringToColor();, так дейсвительно легче.....
а вообще я уже разобрался с ColorToString(); StringToColor();, осталось только сделать правильное сохранение и загрузку.

Добавлено через 3 минуты
kwinto спасибо за исправление кода...буду пробывать дальше делать сохранение и загрузку. Если кому не лень, можите помочь, так будет быстрее.
0
Mawrat
12788 / 5695 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
12.01.2012, 09:21 #6
Тип TColor представлен в виде целого числа типа Integer. Поэтому данные типа TColor можно записывать и читать из файла, как целое число. Для сохранения настроек удобно использовать INI файл.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
uses
  IniFiles;
 
const
  FnIni = 'settings.ini';
 
//Чтение сведений о цвете формы.
procedure TForm1.FormCreate(Sender: TObject);
var
  FileName : String;
  FIni : TIniFile;
begin
  FileName := ExtractFilePath(ParamStr(0)) + FnIni;
  if not FileExists(FileName) then Exit;
 
  FIni := TIniFile.Create(FileName);
  Self.Color := FIni.ReadInteger('Form-' + Self.Name, 'Color', Self.Color);
end;
 
//Запись сведений о цвете формы.
procedure TForm1.FormDestroy(Sender: TObject);
var
  FileName : String;
  FIni : TIniFile;
begin
  FileName := ExtractFilePath(ParamStr(0)) + FnIni;
 
  FIni := TIniFile.Create(FileName);
  FIni.WriteInteger('Form-' + Self.Name, 'Color', Self.Color);
end;
0
ромик0
9 / 9 / 0
Регистрация: 27.07.2011
Сообщений: 90
12.01.2012, 16:59 #7
Цитата Сообщение от alexandr017 Посмотреть сообщение
s:=inttostr (form1.color); // вместо этой строчки надо что другое
color же не цифрами обозночается а именем и у каждого свой. получается нужно сделать так
Delphi
1
s := form1.color;
но почему то не работает .логика в этом случае не работает ))

Добавлено через 43 секунды
как узнать имя колора?
0
Arcor
4799 / 1800 / 159
Регистрация: 20.11.2009
Сообщений: 5,696
Записей в блоге: 1
12.01.2012, 17:55 #8
Цитата Сообщение от ромик0 Посмотреть сообщение
color же не цифрами обозночается
а чем? оО
Цитата Сообщение от ромик0 Посмотреть сообщение
а именем и у каждого свой
ну и сколько же ты знаешь названияй цветов? штук 255 не более, а сколько всего цветов? 255*255*255 вот столько их всего, чуть больше полутора миллионов, и как скажем их называть все именем? серо-буро-малиновый с продрысью допустим???

функция перевода из цвета в строку осуществляется
Delphi
1
ColorToString()
выдает 8 значный код цвета...

ну если хочешь пиши все названя цветов в массив например, и потом сверяй где какой...
1
tupik123
12 / 4 / 1
Регистрация: 10.02.2011
Сообщений: 46
12.01.2012, 18:12 #9
На крайней случай используй ColorDialog. И удобно и цвета запоминать не надо.
1
Mawrat
12788 / 5695 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
14.01.2012, 01:24 #10
Цитата Сообщение от ромик0 Посмотреть сообщение
как узнать имя колора?
Если уж это в самом деле очень нужно, тогда в модуле Graphics надо взять определения констант, задающих цвета:
Константы, задающие цвета. Взято из модуля Graphics.pas

const
clSystemColor = $FF000000;

clScrollBar = TColor(clSystemColor or COLOR_SCROLLBAR);
clBackground = TColor(clSystemColor or COLOR_BACKGROUND);
clActiveCaption = TColor(clSystemColor or COLOR_ACTIVECAPTION);
clInactiveCaption = TColor(clSystemColor or COLOR_INACTIVECAPTION);
clMenu = TColor(clSystemColor or COLOR_MENU);
clWindow = TColor(clSystemColor or COLOR_WINDOW);
clWindowFrame = TColor(clSystemColor or COLOR_WINDOWFRAME);
clMenuText = TColor(clSystemColor or COLOR_MENUTEXT);
clWindowText = TColor(clSystemColor or COLOR_WINDOWTEXT);
clCaptionText = TColor(clSystemColor or COLOR_CAPTIONTEXT);
clActiveBorder = TColor(clSystemColor or COLOR_ACTIVEBORDER);
clInactiveBorder = TColor(clSystemColor or COLOR_INACTIVEBORDER);
clAppWorkSpace = TColor(clSystemColor or COLOR_APPWORKSPACE);
clHighlight = TColor(clSystemColor or COLOR_HIGHLIGHT);
clHighlightText = TColor(clSystemColor or COLOR_HIGHLIGHTTEXT);
clBtnFace = TColor(clSystemColor or COLOR_BTNFACE);
clBtnShadow = TColor(clSystemColor or COLOR_BTNSHADOW);
clGrayText = TColor(clSystemColor or COLOR_GRAYTEXT);
clBtnText = TColor(clSystemColor or COLOR_BTNTEXT);
clInactiveCaptionText = TColor(clSystemColor or COLOR_INACTIVECAPTIONTEXT);
clBtnHighlight = TColor(clSystemColor or COLOR_BTNHIGHLIGHT);
cl3DDkShadow = TColor(clSystemColor or COLOR_3DDKSHADOW);
cl3DLight = TColor(clSystemColor or COLOR_3DLIGHT);
clInfoText = TColor(clSystemColor or COLOR_INFOTEXT);
clInfoBk = TColor(clSystemColor or COLOR_INFOBK);
clHotLight = TColor(clSystemColor or COLOR_HOTLIGHT);
clGradientActiveCaption = TColor(clSystemColor or COLOR_GRADIENTACTIVECAPTION);
clGradientInactiveCaption = TColor(clSystemColor or COLOR_GRADIENTINACTIVECAPTION);
clMenuHighlight = TColor(clSystemColor or COLOR_MENUHILIGHT);
clMenuBar = TColor(clSystemColor or COLOR_MENUBAR);

clBlack = TColor($000000);
clMaroon = TColor($000080);
clGreen = TColor($008000);
clOlive = TColor($008080);
clNavy = TColor($800000);
clPurple = TColor($800080);
clTeal = TColor($808000);
clGray = TColor($808080);
clSilver = TColor($C0C0C0);
clRed = TColor($0000FF);
clLime = TColor($00FF00);
clYellow = TColor($00FFFF);
clBlue = TColor($FF0000);
clFuchsia = TColor($FF00FF);
clAqua = TColor($FFFF00);
clLtGray = TColor($C0C0C0);
clDkGray = TColor($808080);
clWhite = TColor($FFFFFF);
StandardColorsCount = 16;

clMoneyGreen = TColor($C0DCC0);
clSkyBlue = TColor($F0CAA6);
clCream = TColor($F0FBFF);
clMedGray = TColor($A4A0A0);
ExtendedColorsCount = 4;

clNone = TColor($1FFFFFFF);
clDefault = TColor($20000000);

и написать код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.Button1Click(Sender: TObject);
var
  Cl : TColor;
  ClName : String;
begin
  //Для проверки.
  Cl := clWindow;
 
  ClName := '';
  case Cl of
    clSystemColor     : ClName := 'clSystemColor or clScrollBar';
    //clScrollBar       : ClName := 'clScrollBar';
    clBackground      : ClName := 'clBackground';
    clActiveCaption   : ClName := 'clActiveCaption';
    clInactiveCaption : ClName := 'clInactiveCaption';
    clMenu            : ClName := 'clMenu';
    clWindow          : ClName := 'clWindow';
    clWindowFrame     : ClName := 'clWindowFrame';
    clMenuText        : ClName := 'clMenuText';
    clWindowText      : ClName := 'clWindowText';
    clCaptionText     : ClName := 'clCaptionText';
    //...
  else
    ClName := 'Нет такой константы';
  end;
 
  ShowMessage('Имя константы, задающей цвет: "' + ClName + '".');
end;
0
Alex_pac
1285 / 691 / 8
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
14.01.2012, 02:11 #11
вот прога, она все цвета знает ввиде чисел, поле номер 2

так вот я не знаю как его программно узнать, записать и считывать из файла.
TColor это число INTEGER так что записать его и считать из файла не сложно

Delphi
1
2
3
var c: integer;
begin
c:=Form1.Color;
0
Миниатюры
Работа с файлами и цветом  
Вложения
Тип файла: rar АРЕ Цветик 6.2.rar (58.9 Кб, 8 просмотров)
14.01.2012, 02:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 02:11
Привет! Вот еще темы с ответами:

работа с файлами - Delphi
program Project2; {$APPTYPE CONSOLE} uses SysUtils; const n=100; var a: file of real; ...

Работа с файлами - Delphi
Здравствуйте. Помогите пожалуйста написать программу, которая считывает текст из файла и выводит на экран толь¬ко цитаты, то есть...

Работа с файлами - Delphi
Разработать программу, которая читает текст из файла и выводит на экран строки, в которых не содержатся двузначные числа. (В строках...

работа с файлами - Delphi
ребята помогите разобраться вот задание: Из текстового файла удалить все пустые строки. Пустой считать строку, не содержащую символов или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru