![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Помогите пожалуйста, ищу в интернете, не могу ничего подходящего найти(((
Необходимо в программе выбирать ФАМИЛИИ из списков, но эти списки должны быть разными, а храниться в одном месте, то есть: 1. В окне несколько ComboBox, необходимо для каждого загрузить разные списки, но из одного файла. 2. В процессе выполнения программы можно увеличить или уменьшить список любого ComboBox и эти списки нужно сохранить снова в этот же файл, то есть переписать его. 3. При запуске программы необходимо чтобы в поля ComboBox загружалась информация, которая оставалась при закрытии программы. На ум ничего не приходит((( Последний раз редактировалось Beast, 23.08.2008 в 18:10. |
|
#2
|
|||
|
|||
|
Ну здесь много способов...
1) Можно создать переменную типа TSrtings, туда методом LoadFromFile() записать твой файл а деле расскидывать по твоим ComboBox'ам Можно читать построчно файл и записывать напрямую в Боксы (ну это нужно глядеть на файл) 2) ComboBox1.Items.Add() - добавить в конец ComboBox1.Items.Insert(); - добавить в любое место ComboBox1.Items.Delete(); - удалить Сохраняешь аналогично закрытию, либо в переменню либо построчно 3) Чтобы вывести при загрузке то, что было правлено, перед закрытием сохраняешь в ini файл или реестр индексы ComboBox'ов которые выведены на экран, а при загрузке читать их и мененять после загрузки файла в ComboBox'ы |
|
#3
|
||||
|
||||
|
1) использовать TIniFile
|
|
#4
|
|||
|
|||
|
У меня трудности возникли, как же провести запись в файл из всех ComboBox, объясню на примере, почему:
ComboBox1 может состоять max из 20 строк; ComboBox2 может состоять max из 15 строк; ComboBox3 может состоять max из 25 строк; При первом запуске программы пользователь занес в списки 5, 3, 7 записей соответственно и это сохранится в файл после завершения. Как мне при следующем запуске занести в ComboBox1=5, ComboBox2=3, ComboBox3=7 записей? Как эти записи разделить в файле? Или есть какое нибудь другое решение? |
|
#5
|
|||
|
|||
|
А при добавлении записей в файл, как мне понять куда его дописывать или тут проще переписать полностью файл?
А по п.3 я так понял надо будит еще один файл создавать, где будут хранится все индексы, по которым вся картинка будит восстановлена. |
|
#6
|
|||
|
|||
|
Столкнулся с такой проблемой - как мне добавить в ComboBox текст, если ComboBox находится в одном окне, а форма для набора текста в другом окне? При этом ComboBox'ов несколько, а окно для набора текста однотипное.
Как запомнить позицию фокуса на ComboBox, нажать кнопку для перехода в окно набора текста (Модальное окно), а после нажатия кнопки добавить в нужный ComboBox??? Помагите плиз. |
|
#7
|
|||
|
|||
|
Чтобы хранить записи можно использовать ini файл а построить так:
[ComboBox1] Records = 5 // число записей в первый Бокс Name1 = 'Иванов' Name2 = 'Петров' ... [ComboBox2] Records = 1 Name1 = 'Сидоров' [ComboBox3] Records = 2 Name1 = 'Иванова' Name2 = 'Петрова' У тебя их мало, так что это позволительно При добавленнии файл переписываю полностью, уже придется не как Ini а как обычный... Хотя если ini файл создать сразу с заготовками неймов для каждого бокса то можно использовать и ini Самый простой способ добавления в боксы просто создать три кнопки в первый, во втрой и третий |
|
#8
|
|||
|
|||
|
Спасибо за идею, надо будит попробовать с файлом таким образом попробовать - ограничение [СomboBox1] и т.д. Типо ищу [СomboBox1] и в его список занашу все до [СomboBox2].
А вот по добавлению не пойдет, у меня все окно в этих ComboBox'ах итак будит, поэтому добавлять в них информацию проще из одного окна, где будит три Edit'а (Фамилия, Имя, Отчество) и две кнопки ДОБАВИТЬ и ОТМЕНА. Вот тока пока не могу догнать как при нажатии кнопки добавить текст попал именно в то поле ComboBox'а. |
|
#9
|
|||
|
|||
|
Не не!!! Читаешь файл как ini!!!
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Ini: TIniFile;
Count, i: Integer;
begin
Ini := TIniFile.Create('C:\1.txt');
Count := Ini.ReadInteger('[ComboBox1]', 'Records', 0);
for i := 1 to Count do
ComboBox1.Items.Add(Ini.ReadString('[ComboBox1]', 'Name'+IntToStr(i), ''));
Count := Ini.ReadInteger('[ComboBox2]', 'Records', 0);
for i := 1 to Count do
ComboBox2.Items.Add(Ini.ReadString('[ComboBox2]', 'Name'+IntToStr(i), ''));
Count := Ini.ReadInteger('[ComboBox3]', 'Records', 0);
for i := 1 to Count do
ComboBox3.Items.Add(Ini.ReadString('[ComboBox3]', 'Name'+IntToStr(i), ''));
Ini.Free;
end;А записываешь так Код:
procedure TForm1.Button2Click(Sender: TObject);
var
AFile: TextFile;
Count, i: Integer;
begin
AssignFile(AFile, 'C:\1.txt');
Rewrite(AFile);
WriteLn(AFile, '[ComboBox1]');
Count := ComboBox1.Items.Count;
WriteLn(AFile, Format('Records = %d', [Count]));
for i := 1 to Count do
WriteLn(AFile, Format('Name%d = %s', [i, ComboBox1.Items.Strings[i-1]]));
WriteLn(AFile, '[ComboBox2]');
Count := ComboBox2.Items.Count;
WriteLn(AFile, Format('Records = %d', [Count]));
for i := 1 to Count do
WriteLn(AFile, Format('Name%d = %s', [i, ComboBox2.Items.Strings[i-1]]));
WriteLn(AFile, '[ComboBox3]');
Count := ComboBox3.Items.Count;
WriteLn(AFile, Format('Records = %d', [Count]));
for i := 1 to Count do
WriteLn(AFile, Format('Name%d = %s', [i, ComboBox3.Items.Strings[i-1]]));
CloseFile(AFile);
end;А выбор можешь сделать RadioButton'ами |
|
#10
|
|||
|
|||
|
На строке:
var Ini: TIniFile; выдает ошибку: Undeclared identifier: 'TIniFile' |
|
#11
|
|||
|
|||
|
Код:
uses IniFiles; |
|
#12
|
|||
|
|||
|
Сохраняет в файл идеально, но читать нивкакую не хочет. ComboBox'ы все пустые
|
|
#13
|
|||
|
|||
|
Оу реально не заметил))) препиши так
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Ini: TIniFile;
Count, i: Integer;
begin
Ini := TIniFile.Create('C:\1.txt');
ComboBox1.Items.Clear;
ComboBox2.Items.Clear;
ComboBox3.Items.Clear;
Count := Ini.ReadInteger('ComboBox1', 'Records', 0);
for i := 1 to Count do
ComboBox1.Items.Add(Ini.ReadString('ComboBox1', 'Name'+IntToStr(i), ''));
Count := Ini.ReadInteger('ComboBox2', 'Records', 0);
for i := 1 to Count do
ComboBox2.Items.Add(Ini.ReadString('ComboBox2', 'Name'+IntToStr(i), ''));
Count := Ini.ReadInteger('ComboBox3', 'Records', 0);
for i := 1 to Count do
ComboBox3.Items.Add(Ini.ReadString('ComboBox3', 'Name'+IntToStr(i), ''));
Ini.Free;
end; |
|
#14
|
|||
|
|||
|
Все равно ничего не получается, теперь список тока стирается, но чтения из файла все равно не происходит
|
|
#15
|
|||
|
|||
|
Проверь правильность созданного файла, у меня все работает)
|