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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2011, 12:00   #11
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

ой извеняюсь условие конечно неправильно
Код:
  if Form3.sListBox1.Items.IndexOf(Trim(Form3.RzStringGrid2.Cells[i_,0]) < 0 then  //если в Form3.sListBox1.Items не найдено строки Trim(Form3.RzStringGrid2.Cells[i_,0]
 Form3.sListBox1.Items.Append(Trim(Form3.RzStringGrid2.Cells[i_,0])) // тогда добавляем строку в Form3.sListBox1.Items
vovk вне форума Ответить с цитированием
Старый 18.01.2011, 12:29   #12
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Вот:
Код:
  for i_:=0 to Form3.RzStringGrid2.ColCount - 1 do
  if Form3.sListBox1.Items.IndexOf(Trim(Form3.RzStringGrid2.Cells[i_,0])) < 0 then
   begin
    Form3.sListBox1.Items.Append(Trim(Form3.RzStringGrid2.Cells[i_,0]));
   end;
вроде работает, если уже такая колонка есть, то не добавляется, вроде правильно). А как быть с той новой колонкой, что добавляется в процедуре где имеется код выше? Я конечно могу написать так:
Код:
  for i_:=0 to Form3.RzStringGrid2.ColCount - 1 do
  if Form3.sListBox1.Items.IndexOf(Trim(Form3.RzStringGrid2.Cells[i_,0])) < 0 then
   begin
    Form3.sListBox1.Items.Append(Trim(Form3.RzStringGrid2.Cells[i_,0]));
    Form3.RzStringGrid2.ColCount:=Form3.RzStringGrid2.ColCount - 1;
   end;
но, будет ли это правильно? Будет удаляться последняя добавленная колонка.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.01.2011, 13:55   #13
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

надо просто проверять наличие одноименной колонки при добавлении в грид, а потом не заморачиватся, перед добавлением проверяем
Код:
if StringGrid1.Rows[0].IndexOf('новое имя') < 0 then добавляем
если это невозможно, и нужно работать с уже заполнеными заголовками(что сложно представить), то придётся сначала сдвигать все записи справа от найденного дубля, а потом удалять колонку.

Последний раз редактировалось vovk; 18.01.2011 в 16:04.
vovk вне форума Ответить с цитированием
Старый 26.01.2011, 04:30   #14
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Возник небольшой косячок. Нужна ваша помощь. Вроде и код-то правильный, но, кто знает. Вообщем ситуация такова. В sListBox1 - список колонок куда должны заноситься данные, которые имеются в sListBox3. Дело в том, что если например в RzStringGrid2 были добавлены, например, две колонки: ДАТА и НОМЕР, то когда я заношу, например, первое значение (24121999) и выбираю колонку в которую заношу в sListBox1-е, то значение заносится. Но, когда я выбираю сразу же второе значение (123456) и хочу его занести в колонку НОМЕР, то оно заносится в колонку ДАТА. Что неправильно. Вот код:
Код:
procedure TForm3.ToolButton16Click(Sender: TObject);
begin
  if Form3.sListBox1.ItemIndex <> - 1 then // ListBox1.ItemIndex - íîìåð âûáðàííîé ñòðîêè â ListBox1
     Form3.RzStringGrid2.Cells[Form3.sListBox1.ItemIndex,
                               Form3.RzStringGrid2.RowCount - 1]:=Form3.sEdit5.Text;
  Form3.sEdit5.Text:='';
  Form3.sListBox3.DeleteSelected;
  Form3.sListBox1.DeleteSelected;
  if Form3.sListBox3.Count = 0 then
  begin
    MessageBox(Handle,'Âñå çíà÷åíèÿ áûëè âíåñåíû â ðååñòð. Ïîæàëóéñòà, ïåðåä ' + #13#10 +
                      'âíåñåíèåì íîâûõ çíà÷åíèé äîáàâüòå íîâóþ ñòðîêó â ðååñòð.', 'Âíèìàíèå',MB_ICONINFORMATION);
    Form3.sListBox1.Clear;
  end;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 26.01.2011, 12:14   #15
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

мне кажется тут удаляется запись
Код:
 Form3.sListBox1.DeleteSelected;
а тут получается что добавляется по индексу
Код:
   Form3.RzStringGrid2.Cells[Form3.sListBox1.ItemIndex,

                               Form3.RzStringGrid2.RowCount - 1]:=Form3.sEdit5.Text;
а индекс то смещается, может лучше добавлять так
Код:
Form3.RzStringGrid2.Cells[(Form3.RzStringGrid2.rows[0].IndexOf(Form3.sListBox1.Items.Strings[Form3.sListBox1.ItemIndex])),
Form3.RzStringGrid2.RowCount-1]:=Form3.sEdit5.Text;
или так
Код:
Form3.RzStringGrid2.rows[Form3.RzStringGrid2.RowCount-1].Strings[(Form3.RzStringGrid2.rows[0].IndexOf(Form3.sListBox1.Items.Strings[Form3.sListBox1.ItemIndex])]:=Form3.sEdit5.Text;

Последний раз редактировалось vovk; 26.01.2011 в 12:20.
vovk вне форума Ответить с цитированием
Старый 26.01.2011, 13:12   #16
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

vovk! Спасибо тебе огромное! . Попробовал твой первый совет и помогло. Сейчас вроде все работает и вопросов пока нет. Разве только что маленький вопросик: куда все таки лучше поставить
Код:
Form3.sListBox1.DeleteSelected;
Form3.sListBox3.DeleteSelected;
?? По идее я хочу, чтобы после того как значение добавлено в соответствующую колонку, то списки очищались бы, а список колонок составлялся бы после добавления новой колонки (это работает). Вот полный код внесения значений в выбранную колонку:
Код:
procedure TForm3.ToolButton16Click(Sender: TObject);
begin
  if Form3.sListBox1.ItemIndex <> - 1 then // ListBox1.ItemIndex - íîìåð âûáðàííîé ñòðîêè â ListBox1
     Form3.RzStringGrid2.Cells[(Form3.RzStringGrid2.Rows[0].IndexOf(
                                Form3.sListBox1.Items.Strings[
                                Form3.sListBox1.ItemIndex])),
                                Form3.RzStringGrid2.RowCount - 1]:=Form3.sEdit5.Text;
  Form3.sEdit5.Text:='';
  if Form3.sListBox3.Count = 0 then
  begin
    MessageBox(Handle,'Âñå çíà÷åíèÿ áûëè âíåñåíû â ðååñòð. Ïîæàëóéñòà, ïåðåä ' + #13#10 +
                      'âíåñåíèåì íîâûõ çíà÷åíèé äîáàâüòå íîâóþ ñòðîêó â ðååñòð.', 'Âíèìàíèå',MB_ICONINFORMATION);
    Form3.sListBox1.Clear;
  end;
end;
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление Колонок HospodySave Microsoft Office Excel 4 30.06.2010 18:24
Создание колонок Golovastik Microsoft Office Word 1 01.06.2010 09:18
Список процессов в StringGrid artemavd Общие вопросы Delphi 2 02.04.2010 08:19
Фиксация колонок в ListView -Flasher- Общие вопросы Delphi 1 15.01.2010 12:13
Синхронизация колонок eImage Microsoft Office Excel 4 13.03.2009 20:42