![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте, проблема вот какая имеется форма, на которой находятся 3-и ComboBox-а, один ListBox и кнопка «Сохранить»
При запуске формы активен только ComboBox1 после того как будет выбрано одно из значений (кол-во значений 2), активируется ComboBox2 в нем доступно, если выбран 0 то 4 пункта, если 1 то 6, после выбора строки ComboBox2 активируется ComboBox3 в него подгружаются строки из текстового файла, которые тоже зависят от выбора в ComboBox1 и 2 (baz_PR.rtt). В зависимости от выбранных в ComboBox-ах строк в ListBox грузятся данные из текстового файла (baz_PO.rtt) Теперь, сама суть: Кнопку сохранить я не долго думая прописал так: Код:
procedure TForm1.Button4Click(Sender: TObject);
var
AFile: TextFile;
C, i, z,v1,v2,v3 : Integer;
t:string;
begin
AssignFile(AFile,dir+'BAZA\baz_PO.rtt');
Rewrite(AFile);
begin
z:=0;
C:= ListBox1.Items.Count;
for i := 1 to C do
begin
t:=ListBox1.Items.Strings[z];
WriteLn(AFile, '[',t,']');
v1:=ComboBox1.ItemIndex;
WriteLn(AFile, 'tip =', v1);
v2:=ComboBox2.ItemIndex;
WriteLn(AFile, 'vid =', v2);
v3:=ComboBox2.ItemIndex;
WriteLn(AFile, 'pro =', v3);
z:=z+1;
end;
CloseFile(AFile);
end;
end;И теперь возникла проблема с загрузкой данных из файлов по категориям указанным ComboBox-ами. Не могу никак придумать, как организовать выборку из текстового файла, если можно то приведите примеры кода. Последний раз редактировалось Faraon, 29.04.2010 в 20:46. |
|
#2
|
||||
|
||||
|
А не хотите через IniFile это организовать?
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
IniFile: TIniFile;
i: Integer;
begin
IniFile := TIniFile.Create('c:\test.rtt');
IniFile.ReadSection('ListBox1',ListBox1.Items);
for i := 0 to ListBox1.Count-1
do ListBox1.Items.Strings[i] := IniFile.ReadString('ListBox1',ListBox1.Items.Strings[i],'');
IniFile.ReadSection('ComboBox1',ComboBox1.Items);
for i := 0 to ComboBox1.Items.Count-1
do ComboBox1.Items.Strings[i] := IniFile.ReadString('ComboBox1',ComboBox1.Items.Strings[i],'');
IniFile.ReadSection('ComboBox2',ComboBox2.Items);
for i := 0 to ComboBox2.Items.Count-1
do ComboBox2.Items.Strings[i] := IniFile.ReadString('ComboBox2',ComboBox2.Items.Strings[i],'');
IniFile.ReadSection('ComboBox3',ComboBox3.Items);
for i := 0 to ComboBox3.Items.Count-1
do ComboBox3.Items.Strings[i] := IniFile.ReadString('ComboBox3',ComboBox3.Items.Strings[i],'');
IniFile.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
IniFile: TIniFile;
i: Integer;
begin
IniFile := TIniFile.Create('c:\test.rtt');
for i := 0 to ListBox1.Count-1
do IniFile.WriteString('ListBox1',IntToStr(i),ListBox1.Items[i]);
for i := 0 to ComboBox1.Items.Count-1
do IniFile.WriteString('ComboBox1',IntToStr(i),ComboBox1.Items[i]);
for i := 0 to ComboBox2.Items.Count-1
do IniFile.WriteString('ComboBox2',IntToStr(i),ComboBox2.Items[i]);
for i := 0 to ComboBox3.Items.Count-1
do IniFile.WriteString('ComboBox3',IntToStr(i),ComboBox3.Items[i]);
IniFile.Free;
end; |
|
#3
|
||||
|
||||
|
Страдалецъ прав. Почитай про ИНИ файлы там все легко и просто. Идеально подходит для твоего случия.
|
|
#4
|
|||
|
|||
|
Цитата:
Сдесь проблема в самом сохранении, а в методе загрузки, при выборе параметров ComboBox(1,2,3), они должны запоминается для поля ListBox1, а при выборе из ЭТИХ тех же значений в ComboBox(1,2,3) в ListBox1 должны выводится строки соответствующие им. |
|
#5
|
||||
|
||||
|
Не буду спорить, я предложил оптимальный вариант, адаптировать под свою задачу вы уже должны сами. Но то, что вы там изначально пытаетесь сделать, вообще с трудом понимаю поддается, а потому нерационально.
|
|
#6
|
|||
|
|||
|
Спасибо буду пытатся организовать запись и чтение подругому....
|