|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с ComboBox'ами
Помогите пожалуйста, ищу в интернете, не могу ничего подходящего найти(((
Необходимо в программе выбирать ФАМИЛИИ из списков, но эти списки должны быть разными, а храниться в одном месте, то есть: 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
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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
|
|||
|
|||
Проверь правильность созданного файла, у меня все работает)
|