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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2013, 05:08   #1
Plex3
 
Регистрация: 20.11.2013
Сообщений: 8
По умолчанию Проблема с ComboBox

Доброго всем времени суток.
Прошу подсказать знающих.
В ComboBox1 вбито 3 строки (назовем их А,В,С). При нажатии кнопки выбранное значение переносится в Мемо1. (Это все отлично работает)
Так же есть компонент Panel, в котором надо реализовать следующие:
- на компоненте Panel должно подсчитываться (отображаться) количество записей "А" имеющихся в Мемо1. Подскажите как реализовать данную функцию, можно и не в компоненте Panel - а в любом другом.

В крации: Надо отобразить сколько компонентов "А" вбито в Мемо.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Add(IntToStr(Memo1.Lines.Count + 1) + ' ' + Edit1.Text + '/' +
Edit2.Text + '/' + Edit3.Text + '/' + MaskEdit1.Text + '/' + ComboBox1.Text
+ '/' + ComboBox2.Text + '/' + ComboBox3.Text);
end;

end.

Последний раз редактировалось Stilet; 20.11.2013 в 12:02.
Plex3 вне форума Ответить с цитированием
Старый 20.11.2013, 10:06   #2
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Код:
Cnt := 0;
for I := 0 to Memo1.Lines.Count - 1 do
    if Memo1.Lines[I] = ComboBox1.Items[0] then
        Inc(Cnt);

Panel.Caption := 'Выбрано записей A: ' + IntToStr(Cnt);
igh0st вне форума Ответить с цитированием
Старый 20.11.2013, 15:29   #3
Plex3
 
Регистрация: 20.11.2013
Сообщений: 8
По умолчанию

Теперь Panel1 постоянно отображает - Выбрано записей A:0

По сути надо сделать так чтоб Panel выводила число сколько раз я выбрал "А" в ComboBox и занес в Мемо
Код:
var
  Form1: TForm1;
   cnt: Integer;
   i: Integer;
implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);

begin
Memo1.Lines.Add(IntToStr(Memo1.Lines.Count + 1) + ' ' + Edit1.Text + '/' +
Edit2.Text + '/' + Edit3.Text + '/' + MaskEdit1.Text + '/' + ComboBox1.Text
+ '/' + ComboBox2.Text + '/' + ComboBox3.Text);

Cnt := 0;
for I := 0 to Memo1.Lines.Count - 1 do
    if Memo1.Lines[I] = ComboBox1.Items[0] then
        Inc(Cnt);

Panel1.Caption := 'Выбрано записей A: ' + IntToStr(Cnt);
end;


end.

Последний раз редактировалось Stilet; 20.11.2013 в 16:43.
Plex3 вне форума Ответить с цитированием
Старый 20.11.2013, 16:27   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

у вас в мемо сложная строка фрагментом которой является (или не является) нужный вам текст (А).
либо если есть гарантия (что вряд ли) неповторения такого текста в других составляющих строки (Edit1, Edit2, ....)
воспользоваться для подсчета поиском в строке
Код:
if Memo1.Lines[I] = ComboBox1.Items[0]
заменить на
Код:
if pos(combobox.Items[0], memo1.Lines[i])>0 then Inc(cnt);
либо честно при нажатии проверять текущее состояние combobox1
Код:
cnt:=strtointdef(Panel1.caption); //узнать старое (предыдущее) значение
if combobox1.text =combobox1.Items[0] then Inc(cnt); //вар 1
if combobox1.ItemIndex=0 then Inc(cnt); //вар 2
Panel1.Caption:=inttostr(cnt);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.11.2013, 21:34   #5
Plex3
 
Регистрация: 20.11.2013
Сообщений: 8
По умолчанию

Спасибо большое, все получилось, вариант второй подошел.


begin
Memo1.Lines.Add(IntToStr(Memo1.Line s.Count + 1) + ' ' + Edit1.Text + '/' +
Edit2.Text + '/' + Edit3.Text + '/' + MaskEdit1.Text + '/' + ComboBox1.Text
+ '/' + ComboBox2.Text + '/' + ComboBox3.Text);

Cnt := 0;
for I := 0 to Memo1.Lines.Count - 0 do

if pos(combobox1.Items[0], memo1.Lines[i])>0 then Inc(cnt);
Panel1.Caption:=inttostr(cnt);

Panel1.Caption := 'Выбрано записей A: ' + IntToStr(Cnt);
end;

Последний раз редактировалось Plex3; 20.11.2013 в 23:41.
Plex3 вне форума Ответить с цитированием
Старый 21.11.2013, 11:12   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

Цитата:
Спасибо большое, все получилось, вариант второй подошел.
а привели код по первому.
В этом случае возможны ошибки (ложные срабатывания), если вдруг текст из других источников (Edit1, Edit2 и т.д) окажется точно таким же как и первая строка Combobox1, хотя она в этой строке и не была бы использована.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.11.2013, 15:43   #7
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Просто у Вас подход неправильный. Не надо привязывать логику работы к компонентам, они лишь средства ввод-вывода информации. Лучше, например, завести пару массивов, и при первой операции заносить во второй массив информацию, какая была выбрана строка (из первого массива), а потом просто подсчитывать нужные записи из этого второго массива. Мемо при этом просто отображают содержимое 2го массива, а комбо - первого, по кнопке узнать индекс строки в комбо и произвести перенос из массива в массив и обновлять компоненты по мере надобности.

пс. За "В крации" надо карать методом скормления злобным лингвистам.

Последний раз редактировалось phomm; 21.11.2013 в 16:11.
phomm вне форума Ответить с цитированием
Старый 24.11.2013, 05:34   #8
Plex3
 
Регистрация: 20.11.2013
Сообщений: 8
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
пс. За "В крации" надо карать методом скормления злобным лингвистам.
Исправлюсь
Plex3 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с ComboBox gsl180 C++ Builder 4 10.07.2012 14:12
Проблема с Combobox Максим139 Помощь студентам 2 17.07.2011 09:21
Проблема comboBox Kors07 C# (си шарп) 2 09.05.2011 16:27
Проблема с ComboBox boostman Общие вопросы Delphi 13 13.08.2008 15:01
Проблема с ComboBox'ом KORT Помощь студентам 8 27.10.2007 18:12