![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый вечер!
Прошу направить по правильному направлению) Задача такая: Есть Combobox1 Список для Combobox1 берется из файла ComboBoxList.txt Есть два Image: - Image2 - картинка минуса, т.е. как бы кнопка "удалить" - Image1 - картинка плюса, т.е. как бы кнопка "добавить" Есть 2 Memo - Memo1 - для загрузки списка из файла в Мемо - Memo2 - для загрузки списка из файла в Мемо Суть: При входе загружается список в ComboBox1 При выходе список сохраняется в ComboBoxList.txt Например мы пишем слово в ComboBox1 далее - нажимаем на Image1 (+), если такого слова нет в списке, тогда добавляем в список, сохраняем в файл ComboBoxList.txt и загружаем из этого файла новый список в ComboBox1, в противном случае ничего не происходит - нажимаем на Image2 (-), если такое слово есть в списке, тогда удаляем его из списока, сохраняем в файл ComboBoxList.txt и загружаем из этого файла новый список в ComboBox1, в противном случае ничего не происходит Теперь самое интересное необходимо реализовать условие появления картинок Image1 (+) и Image2 (-) в зависимости от того есть введенное слово (или выбранное слово) в списке или нет его. Пример: Список: 1 2 3 4 5 1) вводим значение 6 - в результате появляется Image1 (+) и мы можем добавить это значение в наш список. 2) вводим/выбираем значение 3 - в результате появляется Image2 (-) и мы можем удалить это значение из нашего список. Надеюсь я доходчиво объяснил ситуацию ![]() Вот кусок кода, который уже работает но без реализации последних 2-х улови появления нужных картинок Image1 (+) и Image2 (-) Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, jpeg;
type
TForm1 = class(TForm)
ComboBox1: TComboBox;
Button1: TButton;
Image1: TImage;
Image2: TImage;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure Image2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{$R WindowsXP.res}
procedure TForm1.Button1Click(Sender: TObject);
begin
ComboBox1.Items.SaveToFile('ComboBoxList.txt');
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Combobox1.Items.LoadFromFile('ComboBoxList.txt');
end;
procedure TForm1.Image1Click(Sender: TObject);
var list:string;
q:integer; //счетчик цикла
begin
list:=ComboBox1.Text;
Memo1.Lines.LoadFromFile('ComboBoxList.txt'); //загрузка файла в Memo
for q:=0 to Memo1.Lines.Count-1 do //цикл до последней строки Memo
if Memo1.Lines[q]=list then exit;
if Memo1.Lines[q]<>list then Combobox1.Items.Add(list);
Combobox1.Items.SaveToFile('ComboBoxList.txt');//сохранение содержимого Memo в файл
Memo1.Lines.LoadFromFile('ComboBoxList.txt'); //загрузка файла в Memo
ShowMessage('Вы добавили строку'+' '+ComboBox1.Text+' '+'в список!');
end;
procedure TForm1.Image2Click(Sender: TObject);
var
i:integer; //счетчик цикла
begin
Memo1.Lines.LoadFromFile('ComboBoxList.txt'); //загрузка файла в Memo
for i:=0 to Memo1.Lines.Count-1 do //цикл до последней строки Memo
if Memo1.Lines[i]=Combobox1.Text then
begin
Memo1.Lines.Delete(i); //проверка условия и удаление строки
Memo1.Lines.SaveToFile('ComboBoxList.txt');//сохранение содержимого Memo в файл
Combobox1.Items.LoadFromFile('ComboBoxList.txt');
ShowMessage('Вы удалили строку '+' '+ComboBox1.Text+' '+'из списка!');
end;
if Memo1.Lines[i]<>Combobox1.Text then exit;
end;
End.Последний раз редактировалось Vovich, 19.11.2010 в 21:17. |
|
#2
|
||||
|
||||
|
Надо чтоб при вводе текста в MEMO на ходу менялись Image'ы?
Тогда по событию MEMO OnChange надо смотреть, есть ли имеющаяся строка в CB, и в зависимости от этого выставлять значения ImageX.Visible в True/False. А лучше использовать для этих целей TEdit. |
|
#3
|
|||
|
|||
|
Цитата:
Я так и делал) но видимо что-то напутал с условиями и у меня отображались либо 2 сразу либо один. перепробовал практически все события((( понимаю что это принципе просто реализовать, но к сожаления не могу... |
|
#4
|
||||
|
||||
|
Ну два не могут никак - надо всегда делать сразу
Код:
Image1.Visible:=true; Image2.Visible:=false; ![]() |
|
#5
|
|||
|
|||
|
Шота я туплю
![]() Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var t:integer;
begin
Memo2.Lines.LoadFromFile('ComboBoxList.txt');
for t:=0 to Memo2.Lines.Count-1 do
if Memo2.Lines[t]=Combobox1.Text then
begin
Image1.Visible:=true;
Image2.Visible:=false;
end;
if Memo2.Lines[t]<>Combobox1.Text then
begin
Image1.Visible:=false;
Image2.Visible:=true;
end;
end;при вводе нового значения которого нет в списке минус так и остается висеть... |
|
#6
|
||||
|
||||
|
Стоп. Сча перечитаю все сначала.
так... Код:
procedure TForm1.ComboBox1Change(Sender: TObject);
var t:integer;
fl:boolean;
begin
Memo2.Lines.LoadFromFile('ComboBoxList.txt');
fl:=false;
for t:=0 to Memo2.Lines.Count-1 do
if Memo2.Lines[t]=Combobox1.Text then
begin
fl:=true;
break;
end;
if fl then
Image1.Visible:=true;
Image2.Visible:=false;
end
else
begin
Image1.Visible:=false;
Image2.Visible:=true;
end;
end;Последний раз редактировалось Bargest, 19.11.2010 в 22:36. |
|
#7
|
|||
|
|||
|
могу скинуть сам проджект...
|
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
|||
|
|||
|
не получается
Вот ошибки появляются (первые две не значительные) ![]() а понял там еще begin нужен, спасибо ! |
|
#10
|
||||
|
||||
|
а ты направил обрабочик события на эту процедуру?
а то не втупляю, что значит "Undeclared Identifier: Image1" можно впринципе попробовать Код:
for t:=0 to Memo2.Lines.Count-1 do BEGIN if Memo2.Lines[t]=Combobox1.Text then begin fl:=true; break; end; END; А еще нашел у себя Код:
if fl then BEGIN Image1.Visible:=true; Image2.Visible:=false; end Последний раз редактировалось Bargest, 19.11.2010 в 22:51. |
|
#11
|
|||
|
|||
|
Да вот этот го begin'a и не хватало! Спасибо!
Последний раз редактировалось Vovich, 19.11.2010 в 22:54. |