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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2010, 13:38   #11
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Grag, спасибо... Теперь передо мною стоит другая задача... При смене курсора в ListBox прога должна сохранять содержимое RichEdit с именем предыдущего выбраного элемента ListBox

Код:
procedure TDiary.lbRecordClick(Sender: TObject);
begin
  for i:=0 to lbRecord.Items.Count-1 do
    if lbRecord.Selected[i]=False then begin
      if DirectoryExists('SaveFile') then
        RichEdit.Lines.SaveToFile(extractfilepath(paramstr(0))+'SaveFile/'+lbRecord.Items[i])
          else begin
            CreateDir('SaveFile');
            RichEdit.Lines.SaveToFile(extractfilepath(paramstr(0))+'SaveFile/'+lbRecord.Items[i]);
          end;
      break;
    end;
end;
В этом случаи происходит сохранения выбранного элемента, а не который был выбран до этого... Как исправить код?!

lbRecord это ListBox
TaYgA вне форума Ответить с цитированием
Старый 08.06.2010, 14:05   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Запоминай выделенный элемент в некую переменку, а по следующему клику у тебя будет и выделенный и предидущий
Код:
procedure TForm1.ListBox1Click(Sender: TObject);
begin
 caption:='Предидущий '+IntToStr(ListBox1.Tag);
 ListBox1.Tag:=ListBox1.ItemIndex;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.06.2010, 15:36   #13
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Stilet, спасибо
TaYgA вне форума Ответить с цитированием
Старый 08.06.2010, 20:06   #14
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Цитата:
Сообщение от SERG1980 Посмотреть сообщение
во первых ваш листбокс не должен быть пустым изначально хоть одна строка должна присутствовать
во вторых у вас будет добавлятся повторная дата хоть и ваша прога скажет что такая запись есть
Оказалось мой вариант работает неверно... Неужели не возможно сделать так чтоб не добавлялась повторная дата?!!?
TaYgA вне форума Ответить с цитированием
Старый 09.06.2010, 15:37   #15
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

Немогу никак правельно организовать программу
Код:
for i:=0 to lbRecord.Items.Count-1 do
    if lbRecord.Items.IndexOf(DateToStr(Date))<0 then begin
      lbRecord.Items.Add(DateToStr(Date));
      break;
    end
      else 
        ShowMessage('Запись с таким именем уже существет!!!');
В таком случаи программа работает, но сообщение об ошибки вылетает столько раз, сколько уменя итомов в ListBox т.е не выходит из цикла... С помощью флага, как я пытался сделать изначально (код в начале темы) прога вообще не риагирует на условие...
TaYgA вне форума Ответить с цитированием
Старый 09.06.2010, 16:49   #16
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Ну а какже ещё, срабатывает при каждом прохождением цикла когда условие lbRecord.Items.IndexOf(DateToStr(Da te))<0 Ложь


Код:
 ShowMessage('Запись с таким именем уже существет!!!');
надо разместить уже после проверки всех записей

Последний раз редактировалось vovk; 09.06.2010 в 16:54.
vovk вне форума Ответить с цитированием
Старый 09.06.2010, 17:04   #17
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

vovk, это дело не меняет... Вот код, как вы и предлагали, после цикла:
Код:
procedure TDiary.btAddDataClick(Sender: TObject);
var
   i:integer;
   fl:boolean;
begin
  fl:=true;
  for i:=0 to lbRecord.Items.Count-1 do
    if bRecord.Items.IndexOf(DateToStr(Date))<0 then begin
      fl:=false;
      break
    end;
  if fl then
    lbRecord.Items.Add(DateTimeToStr(Date))
      else
        ShowMessage('Такой уже есть!');
end;
Он не работает....
TaYgA вне форума Ответить с цитированием
Старый 09.06.2010, 17:19   #18
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

посмотрел внимательно код.. в общем вот

бррр стоп сек сейчас исправлю верну

зря паниковал всё правильно
Код:
    if lbRecord.Items.IndexOf(DateTimeToStr(Date))<0 then 
        lbRecord.Items.Add(DateTimeToStr(Date))
      else
        ShowMessage('Такой уже есть!');

Последний раз редактировалось vovk; 09.06.2010 в 17:27.
vovk вне форума Ответить с цитированием
Старый 10.06.2010, 13:04   #19
TaYgA
Форумчанин
 
Аватар для TaYgA
 
Регистрация: 24.09.2009
Сообщений: 264
По умолчанию

vovk, спасибо!!!!
У меня созрело ещё вопросик:
Обычно при добавлении нового итема, он появляется в конце списка, возможно ли сделать, чтоб он появлялся в начале?!
TaYgA вне форума Ответить с цитированием
Старый 10.06.2010, 13:59   #20
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Вообщето это все методы в справке есть
Код:
 lbRecord.Items.Insert(0,DateTimeToStr(Date))
Только не применяйте к сортированым спискам.

Последний раз редактировалось vovk; 10.06.2010 в 14:02.
vovk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание учётной записи CraftR14 Общие вопросы Delphi 12 13.04.2010 13:38
Создание записи (C++) @Tank@ Помощь студентам 0 22.11.2009 16:49
Создание записи в реестре типа REG_DWORD aesoem Общие вопросы Delphi 5 19.06.2009 15:27
Создание новой записи Gerox БД в Delphi 3 30.12.2007 14:22