2013-06-12 2 views
0

Я разрабатываю игру Tic Tac Toe с подключением к Интернету для проверки по всему миру. Я также добавил ColorDialog, чтобы пользователь мог выбрать свой собственный цвет для X и O внутри сетки. Посмотрите на эти 2 изображения в качестве примера:Сохранить цвет из ColorDialog и загрузить его в ярлыки

  1. pic1
  2. pic2

Я думал, чтобы добавить эту функцию: когда пользователь щелкает затем сетки пункт цвета Редактировать и (от TMENU выше), MessageDialog появляется, спрашивая, будет ли в следующий раз, когда вы запустите программу, вы хотите использовать этот цвет снова или по умолчанию (черный). Я написал следующий код:

procedure TfrMain.MenuItem10Click(Sender: TObject); 
begin 
if (MessageDlg('Set this color as default? Next time you play or you open the program, you will use this color. [Yes=OK||Cancel=NO]', 
    mtConfirmation,mbOKCancel,0) = mrCancel) then 
    begin 
    if ColorDialog1.Execute then 
     for i:= 0 to 8 do 
     begin 
     (FindComponent('lblcell'+IntToStr(i)) as TLabel).Font.Color := ColorDialog1.Color; 
     end; 
    end 
    else 
    begin 
    //saves the color somewhere, when the program will run again, it will load this color 
    end; 
end; 

Если нажать Cancel появляется ColorDialog и устанавливает цвет. Моя проблема в том, что я не знаю, как сохранить выбранный цвет и загрузить его, когда программа запустится снова. Эта программа также сохраняет свой материал в папке по адресу C:\tictactoe8, поэтому я решил сохранить здесь текстовый файл с настройками цвета и загрузить их через событие OnCreate TForm1. Кстати, я действительно не знаю, как это сделать, не могли бы вы дать мне несколько советов?

+0

Вы уже использовали 'TRegistry', или знакомы с использованием реестра Windows? Я бы рекомендовал сохранить настройки как значения реестра Windows для вашего приложения. – lurker

+0

Другой попыткой может быть IniFile http://stackoverflow.com/search?q=inifile+delphi – bummi

+0

Похоже, ваш вопрос о tic tac toe или о colordialog, но это не так. Речь идет о сохранении (любой) настройки программы. Если вы подходите к проблеме таким образом, вам будет проще решить ее, и вам будет легче найти информацию об этом. «Сохранение цветов цвета tic tac toe», вероятно, приведет к меньшим (релевантным) результатам поиска, чем «Сохранение настроек приложения». Последний, вероятно, посоветует вам использовать 'TRegistry' или' TiniFile'. ;) – GolezTrol

ответ

1

Ниже приведен пример сохранения основного состояния формы в реестре в Delphi. Вы можете использовать этот метод, чтобы сохранить цвет. Константы KN_xxx - это мои имена в реестре. Вы можете просто позвонить своему Color в качестве имени параметра. И KEY_SETTINGS - путь вашего реестра приложения, например, \Software\MyCompany\TicTacToe\Settings.

Это сохраняет информацию, когда создается форма (окно):

procedure TFormTicTacToe.FormCreate(Sender: TObject); 
var 
    reg: TRegistry; 
    idx: Integer; 
begin 
    reg := TRegistry.Create; 

    try 
    idx := RegReadInteger(reg, KN_CFPPI, 0); 

    if idx = PixelsPerInch then 
    begin 
     Width := RegReadInteger(reg, KN_CFWIDTH, Width); 
     Height := RegReadInteger(reg, KN_CFHEIGHT, Height); 
     Left := RegReadInteger(reg, KN_CFLEFT, Left); 
     Top := RegReadInteger(reg, KN_CFTOP, Top); 
    end; 

    WindowState := TWindowState(RegReadInteger(reg, KN_CFWINDOWSTATE, Integer(wsNormal))); 
    finally 
    reg.CloseKey; 
    reg.Free; 
    end; 
end; 

И здесь мы сохранить его как форма закрывается:

procedure TFormTicTacToe.FormClose(Sender: TObject; 
    var Action: TCloseAction); 
var 
    reg: TRegistry; 
begin 
    reg := TRegistry.Create; 

    if not reg.OpenKey(KEY_SETTINGS, true) then 
    begin 
    reg.Free; 
    Exit; 
    end; 

    with reg do try 
    if WindowState = wsNormal then 
    begin 
     WriteInteger(KN_CFWIDTH, Width); 
     WriteInteger(KN_CFHEIGHT, Height); 
     WriteInteger(KN_CFLEFT, Left); 
     WriteInteger(KN_CFTOP, Top); 
    end; 

    WriteInteger(KN_CFPPI, PixelsPerInch); 
    finally 
    CloseKey; 
    Free; 
    end; { with reg do try } 
end; 

В вашем случае, вам просто нужно сохранить и получить цвет.

+0

Здесь я сохраняю свои настройки в реестре. Это где-то в C:? Спасибо, кстати! :) –

+1

Реестр - это реестр Windows. Поддерживается Windows. Это самый стандартный способ сохранения данных конфигурации приложения в Windows с момента выхода Windows 95. – lurker

+3

По-моему, файл .ini предпочтительнее, и он должен храниться в папке appdata пользователя. –

Смежные вопросы