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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2011, 10:00   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Список колонок в StringGrid

Добрый день! Собсно вопрос. Как получить список (названия) колонок в первой строке StringGrid-a и занести их в ListBox? Мне это нужно для того, чтобы потом вносить некое значение в соответствующую колонку, имя которой как раз и будет выбрано из ListBox-a, но вносить так, чтобы оно вносилось в последнюю добавленную строку строго в ту колонку, название которой выбрано в ListBox.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.01.2011, 10:28   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Код:
procedure TForm2.FormCreate(Sender: TObject);
  var i: integer;
begin
  for i:=0 to StringGrid1.ColCount-1 do  // StringGrid1.ColCount - количество столбцов
    Begin
      StringGrid1.Cells[i,0]:=IntToStr(i);
      ListBox1.Items.Append(StringGrid1.Cells[i,0]);// заполняем ListBox1.ItemIndex
    End;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  if ListBox1.ItemIndex<>-1 then // ListBox1.ItemIndex - номер выбранной строки в ListBox1
    StringGrid1.Cells[ListBox1.ItemIndex,StringGrid1.RowCount-1]:=Edit1.Text;
end;
pr.rar
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"

Последний раз редактировалось AlDelta; 03.01.2011 в 10:31.
AlDelta вне форума Ответить с цитированием
Старый 03.01.2011, 14:47   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

listbox.items:=stringgrid1.rows[0];
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.01.2011, 17:49   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Да, это практически то, что нужно, AlDelta. Только маленький вопрос. У меня по нажатию на кнопку добавляется колонка новая в таблицу, а в качесте имени ей присваивается имя из Edit. Ну, а дальше то, что ты предложил. Можно ли сделать проверку, что если имя какой-то колонки есть уже в ListBox-e, то новая колонка бы не добавлялась?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 17.01.2011, 17:56   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Код:
if ListBox1.Items.IndexOf(<имя колонки>) > - 1 then //колонка существует
_SERGEYX_ вне форума Ответить с цитированием
Старый 18.01.2011, 03:00   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот, написал так:
Код:
  for i_:=0 to Form3.RzStringGrid2.ColCount - 1 do  // StringGrid1.ColCount - êîëè÷åñòâî ñòîëáöîâ
    begin
      Form3.sListBox1.Items.Append(Trim(Form3.RzStringGrid2.Cells[i_,0]));// çàïîëíÿåì ListBox1.ItemIndex
    end;
  if Form3.sListBox1.Items.IndexOf(i_) > -1 then
  begin
    MessageBox(Handle,'Êîëîíêà ñ òàêèì èìåíåì óæå ñóùåñòâóåò!','Âíèìàíèå',MB_ICONINFORMATION);
  end;
но компилятор говорит, что "[Error] Unit3.pas(1779): Incompatible types: 'String' and 'Integer' ". Собсно, а как правильно-то будет?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.01.2011, 03:21   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
  if Form3.sListBox1.Items.IndexOf(i_) > -1 then
тут строка нужна то что ищем, если номер это имя то ессно inttostr(i_)

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

Неа, номер не имя. Имя - обычные слова...
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.01.2011, 07:55   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

IndexOf возвращает индекс первого вхождения в массив списка заданного элемента, для TStringList и TStrings это строка и поэтому
Код:
if Form3.sListBox1.Items.IndexOf('тут должна быть строка которую надо найти') > -1 then
я про это и говорил, и ошибка тут.

_SERGEYX_ это и предложил как проверку. Раз имя берём из эдита то должно быть так
Код:
 if Form3.sListBox1.Items.IndexOf(edit1.text) > -1 then
а для того цикла выше



Код:
for i_:=0 to Form3.RzStringGrid2.ColCount - 1 do 
  if Form3.sListBox1.Items.IndexOf(Trim(Form3.RzStringGrid2.Cells[i_,0]) > -1 then 
      Form3.sListBox1.Items.Append(Trim(Form3.RzStringGrid2.Cells[i_,0])) 
else showmessage('повтор названия     ' +Trim(Form3.RzStringGrid2.Cells[i_,0]);
vovk вне форума Ответить с цитированием
Старый 18.01.2011, 10:26   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Черт, че-то не хочет работать. Написал из поста выше так:
Код:
  for i_:=0 to Form3.RzStringGrid2.ColCount - 1 do
   if Form3.sListBox1.Items.IndexOf(Trim(Form3.RzStringGrid2.Cells[i_,0])) > -1 then
   begin
    Form3.sListBox1.Items.Append(Trim(Form3.RzStringGrid2.Cells[i_,0]));
//       else
//        MessageBox(Handle,'Êîëîíêà óæå ñóùåñòâóåò!','Âíèìàíèå',MB_ICONINFORMATION);
   end;
Колонка добавляется, ей присваивается имя из Edit-a, но в sListBox2 не заносится список колонок.
Если убираю эту строчку
Код:
   if Form3.sListBox1.Items.IndexOf(Trim(Form3.RzStringGrid2.Cells[i_,0])) > -1 then
то работает не так как мне надо.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
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