Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2017, 17:20   #1
GamerOld
 
Регистрация: 24.09.2017
Сообщений: 4
Вопрос Работа с ComboBox+Ini+ItemIndex

Здравствуйте, уважаемые программисты!

Помогите, пожалуйста, новичку в мире программирования, реализовать задуманное...

На форме расположил 2 комбобокса, каждый в своём раскрывающемся списке содержит по 2 строки.

Название строк я внёс в инспектор объектов в Items (cbb1 - "Text1" и "Text2", для cbb2 - "Text3" и "Text4").

В папке с программой создал 2 ini-файла это: "settings1.ini" и "settings2.ini".

Задача:

1. Заполнить эти ini-файлы.
Например, чтобы при выборе в cbb1 строки "Text2" в "settings1.ini" было следующее:

[Settings]
Renderer=4

При выборе в cbb1 строки "Text1", было так:

[Settings]
Renderer=3

Для "settings2.ini", чтобы при выборе в cbb2 строки "Text3", было так:

[EmuCore/Speedhacks]
vuThread=enabled

При выборе "Text4", так:

vuThread=disabled

т. е. нужно, чтобы все эти строки менялись в ini-файлах, в зависимости от выбранной строки/позиции в ComboBox.

2. Выбранная позиция комбобокса, чтобы сохранилась после перезапуска программы.

Заранее благодарю за содействие.

На данный момент располагаю вот таким небрежно написанным кодом (черновик) по этим вопросам:

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles, StrUtils;

type
  TForm2 = class(TForm)
    cbb1: TComboBox;
    lbl1: TLabel;
    cbb2: TComboBox;
    lbl2: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure OnShow(Sender: TObject);
    procedure cbb1Change(Sender: TObject);
    procedure cbb2Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
  Ini:TIniFile;
  cbRenderer: TComboBox;
  cbVuThread: TComboBox;

implementation

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  with TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings1.ini') do
  try WriteInteger('Settings', 'Renderer', cbRenderer.ItemIndex + 4);
  finally Free;
  end;
  with TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings2.ini') do
  try WriteString('EmuCore/Speedhacks', 'vuThread', ifthen(cbVuThread.ItemIndex=0, 'enabled', 'disabled'));
  finally Free;
  end;
end;

procedure TForm2.OnShow(Sender: TObject);
begin
  with TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings1.ini') do
  try cbRenderer.ItemIndex := ReadInteger('Settings', 'Renderer', cbRenderer.ItemIndex + 4);
  finally Free;
  end;
  with TIniFile.Create(ExtractFilePath(Application.ExeName) + 'settings2.ini') do
  try cbVuThread.ItemIndex := ord(ReadString('EmuCore/Speedhacks', 'vuThread', 'enabled') = 'enabled');
  finally Free;
  end;
end;

procedure TForm2.cbb1Change(Sender: TObject);
begin
cbb1.itemindex;
cbb1.items[0];
cbb1.items[1];
end;

procedure TForm2.cbb2Change(Sender: TObject);
begin
cbb2.itemindex;
cbb2.items[0];
cbb2.items[1];
end;

end.

Последний раз редактировалось GamerOld; 16.10.2017 в 18:48.
GamerOld вне форума Ответить с цитированием
Старый 26.10.2017, 08:16   #2
zdus2757
vk.com/replog
Пользователь
 
Регистрация: 04.05.2012
Сообщений: 87
По умолчанию

что это такое :/

1) зачем в разных файлах хранить по одной настройке?
2) что с кодом?.. и он вообще работает?)
3) cbb1-2 зачем так сокращать..
4) а что делают cbb change? эт нужно?
5) ниже нубопример который хоть будет работать, забирай
6..7..8(и еще +100500 вопросов)

Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IniFiles, StrUtils;

type
  TForm2 = class(TForm)
    cbb1: TComboBox;
    lbl1: TLabel;
    cbb2: TComboBox;
    lbl2: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure OnShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
var Ini:TIniFile;
begin
Ini:=TIniFile.Create(ExtractFilePath(paramstr(0))  + 'Settings.ini');
Ini.WriteInteger('Settings','Renderer',cbb1.itemindex + 3);

if cbb2.ItemIndex = 0 then
   Ini.WriteString('Settings','VuThread','enabled')
   Else
   Ini.WriteString('Settings','VuThread','disabled');

Ini.Free;
end;

procedure TForm2.OnShow(Sender: TObject);
var Ini:TIniFile;
begin
Ini:=TIniFile.Create(ExtractFilePath(paramstr(0))  + 'Settings.ini');
cbb1.ItemIndex:=Ini.ReadInteger('Settings','Renderer',3) - 3;

if Ini.ReadString('Settings','VuThread','enabled') = 'enabled' then
   cbb2.ItemIndex:=0
   Else
   cbb2.ItemIndex:=1;

Ini.Free;
end;

end.

Последний раз редактировалось zdus2757; 26.10.2017 в 08:23.
zdus2757 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ComboBox.ItemIndex IIIu6ko Компоненты Delphi 5 12.04.2015 01:39
Combobox и itemindex Максим139 Помощь студентам 2 02.04.2011 18:30
Сохранить ItemIndex ComboBox Shouldercannon Общие вопросы Delphi 20 11.06.2010 13:11
Combobox itemindex beemoto Общие вопросы Delphi 28 06.05.2009 14:09
Проблема с ComboBox.ItemIndex Селезин Общие вопросы Delphi 3 27.10.2007 16:42