Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2013, 21:13
Myrik Myrik вне форума
Прохожий
 
Регистрация: 22.05.2013
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Помогите пожалуйста с программой в дельфи

суть проблемы: выбираю в ComboBox1 первую строчку, открывается ComboBox7, там тоже выбираю первую строчку, в Memo выводится отчёт: "1) ляляля". затем выбираю в ComboBox1 вторую строчку, открывается ComboBox6, там выбираю первую строчку, в Memo выводится уже вот такой отчёт: "2) ляляля 2) ляляля". если продолжаю переключать комбобоксы, то отчёт в Мемо утраивается, учетверяется и т.д.. В чём ошибка в коде программы?

вот сам код:
Код:
procedure TForm2.ComboBox1Change(Sender: TObject); 
begin 
 if form2.ComboBox1.ItemIndex=0 then 
 begin 
 form2.Button1.Visible:=true; 
 form2.ComboBox6.Visible:=false; 
 form2.ComboBox7.Visible:=true; 

 end; 
 if form2.ComboBox1.ItemIndex=1 then 
 begin 
 form2.Button1.Visible:=true; 
 form2.ComboBox6.Visible:=true; 
 form2.ComboBox7.Visible:=false; 
 end; 
end; 

procedure TForm2.Button1Click(Sender: TObject); 
begin 
 ch:=ch+1; 
 if form2.ComboBox6.ItemIndex=0 then 
 begin 
 spec:=form2.ComboBox6.Items[0]; 
 form2.Memo1.Lines.Add(inttostr(ch)+')'+spec); 
 end; 
 if form2.ComboBox7.ItemIndex=0 then 
 begin 
 spec:=form2.ComboBox7.Items[0]; 
 form2.Memo1.Lines.Add(inttostr(ch)+')'+spec); 
 end; 
end;

Последний раз редактировалось Myrik, 22.05.2013 в 21:26.
Ответить с цитированием
  #2  
Старый 22.05.2013, 21:15
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Перед тем как что-то добавлять в мемо, нужно вызвать Memo.Clear
Ответить с цитированием
  #3  
Старый 22.05.2013, 21:20
Myrik Myrik вне форума
Прохожий
 
Регистрация: 22.05.2013
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

мне надо, чтобы предыдущие строчки в Memo сохранялись
Ответить с цитированием
  #4  
Старый 22.05.2013, 21:38
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Тогда надо проверять сколько строчек в мемо и при превышении лимита запрещать их туда добавлять

Код:
if form2.Memo1.Lines.Count < 5 then form2.Memo1.Lines.Add(inttostr(ch)+')'+spec);
Ответить с цитированием
  #5  
Старый 22.05.2013, 22:00
Myrik Myrik вне форума
Прохожий
 
Регистрация: 22.05.2013
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

тоже не то =D
уже поняла, что предыдущий итеминдекс остается выбранным и поэтому увеличивается отчёт в мемо. теперь вопрос стоит конкретнее: как обнулять итеминдекс? ну то есть делать так, чтобы он не был выбран
Ответить с цитированием
  #6  
Старый 22.05.2013, 22:12
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Тогда наверное нужно после добавления в мемо очищать строку комбобокса
Код:
form2.ComboBox.Text:= '';

Оффтоп:
Всё равно логики отследить так и не удаётся, ускользает мысль
Ответить с цитированием
  #7  
Старый 22.05.2013, 22:18
Myrik Myrik вне форума
Прохожий
 
Регистрация: 22.05.2013
Сообщения: 9
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

спасибо, что откликаешься на мои сообщения)))
я так и не придумала нормальную формулировку своего вопроса =D
завтра препода буду доставать
Ответить с цитированием
  #8  
Старый 23.05.2013, 00:40
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Чисто методом тыка, всё же просёк алгоритм c ляляля :-0 даже ошибку смоделировал похожую на оригинал - просто в клике кнопки два раза выполнялось условие, вот переработка, проверьте
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 inc(ch);
 if ComboBox6.ItemIndex = 0 then
   Memo1.Lines.Add(IntToStr(ch) + ')' + ComboBox6.Text)
    else
       if ComboBox7.ItemIndex = 0 then
         Memo1.Lines.Add(IntToStr(ch) + ')' + ComboBox7.Text);
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter