Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с StringGrid 
:(
    Опции темы
Ярослав
Дата 5.7.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1




M
dumb
Ярослав, для оформления кода используй кнопку "Код", располагающуюся над полем ввода сообщения. и форматируй код нормально, а не абы как - читать невозможно с твоими хаотичными отступами.


Помогите пожалуйста,уже целый день долбусь с программой и не как не могу добить её до конца.Если посмотреть на рисунок всё понятно.Короче суть такова Необходим код для поиска в StringGrid.Сохранение произвожу вот так:
Код

if(StringGrid1->RowCount==2 &&  StringGrid1->Cells[1][1].IsEmpty()&&
   StringGrid1->Cells[2][1].IsEmpty() &&  StringGrid1->Cells[3][1].IsEmpty()&&
   StringGrid1->Cells[4][1].IsEmpty())
   ShowMessage("Нечего сохранять");

    else
     {
 if (SaveDialog1->Execute())
  {


  TStringList *Files=new    TStringList;
Files->Add(IntToStr(StringGrid1->ColCount)) ;
Files->Add(IntToStr(StringGrid1->RowCount)) ;

for( int cRow=1;  cRow<StringGrid1->RowCount; cRow++)
for( int cCol=1;  cCol<StringGrid1->ColCount; cCol++)
Files->Add(StringGrid1->Cells[cCol][cRow]);

Files->SaveToFile(SaveDialog1->FileName);
delete Files;
    }
 }

А чтение вот так:
Код

if (OpenDialog1->Execute())
 {
  TStringList *Files = new TStringList;
  Files->LoadFromFile (OpenDialog1->FileName);
  AnsiString buff;
  buff=Files->Strings[0];
  Files->Delete(0);
  StringGrid1->ColCount=StrToInt(buff);

  buff=Files->Strings[0];
  Files->Delete(0);
  StringGrid1->RowCount=StrToInt(buff);
  int Stroka=0;

  for( int cRow=1;  cRow<StringGrid1->RowCount; cRow++)
  for( int cCol=1;  cCol<StringGrid1->ColCount; cCol++)
    {
     StringGrid1->Cells[cCol][cRow]=Files->Strings[Stroka];
     Stroka++;
    }
   for( int cRow=1;  cRow<StringGrid1->RowCount; cRow++)
   StringGrid1->Cells[0][0];

   delete Files;
 }


А вот с поиском немогу разобраться.Только важно сделать как на рисунке чтоб результат поиска выводило в Edit-ы


Это сообщение отредактировал(а) dumb - 5.7.2009, 22:22

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  _____.jpg 32,73 Kb
PM MAIL   Вверх
ИванМ
Дата 5.7.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Так же и делай как ты читал из файла:

Value- Искомое значение.

Код

 for( int cRow=1;  cRow<StringGrid1->RowCount; cRow++)
  for( int cCol=1;  cCol<StringGrid1->ColCount; cCol++)
    {
      if(StringGrid1->Cells[cCol][cRow]==Value)
      {
         Edit1->Text=Value;
         return;
      }
    }


Не понимаю какие тут сложности. Ты же сам все реализовал.
PM MAIL   Вверх
Ярослав
Дата 5.7.2009, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Да я ещё слаб в программировании.А можно по конкретнее с кодом.Типа нажал кнопку и т.д.
PM MAIL   Вверх
ИванМ
Дата 6.7.2009, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



А ты каким Билдером пользуешься (версия)?
PM MAIL   Вверх
Ярослав
Дата 6.7.2009, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



C++Builder 6
PM MAIL   Вверх
mrbrooks
Дата 6.7.2009, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Ярослав @  5.7.2009,  23:42 Найти цитируемый пост)
А можно по конкретнее с кодом

дык ИванМ тебе пример и привел.

зы. Судя по всему ты делаешь что то на подобии БД, может лучше ее и использовать?
PM MAIL   Вверх
Aline
Дата 6.7.2009, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 470
Регистрация: 22.7.2005
Где: Таруса

Репутация: нет
Всего: нет



Может быть и стоит воспользоваться БД. В примере от ИванаМ найдется только одна запись и цикл прервется. А судя по рисунку, надо в массив запомнить номера строк, где встречается искомое значение, нажав на кнопку "Поиск". Затем по кнопке "Результат поиска" вывести первую запись на экран, а нажимая на кнопки Предыдущая-Следующая перебирать остальные, если они конечно есть. Ну и по кнопке "Поиск" посчитать конечно вообще найденное количество записей.
PM MAIL   Вверх
ИванМ
Дата 6.7.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Вот, посмотри вложение.

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  StrGrid.rar 3,90 Kb
PM MAIL   Вверх
mrbrooks
Дата 6.7.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Aline @  6.7.2009,  14:03 Найти цитируемый пост)
В примере от ИванаМ найдется только одна запись и цикл прервется. А судя по рисунку, надо в массив запомнить номера строк, где встречается искомое значение, нажав на кнопку "Поиск". Затем по кнопке "Результат поиска" вывести первую запись на экран, а нажимая на кнопки Предыдущая-Следующая перебирать остальные, если они конечно есть. Ну и по кнопке "Поиск" посчитать конечно вообще найденное количество записей. 

Никто не запрещает автору самому углубиться и расширить ответ - если он не является абсолютным решением. Готовое здесь никто выкладывать не обязан. 
PM MAIL   Вверх
Ярослав
Дата 6.7.2009, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Спосибо большое сейчас пришол с работы буду разбираться
PM MAIL   Вверх
Ярослав
Дата 6.7.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Чет  проект не хочет компилироваться выскакивает  окно
PM MAIL   Вверх
ИванМ
Дата 6.7.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Попробуй такой вариант

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  StrGrid.rar 8,62 Kb
PM MAIL   Вверх
Ярослав
Дата 6.7.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Опять тоже самое вот фото

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  a.jpg 13,57 Kb
PM MAIL   Вверх
ИванМ
Дата 6.7.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Открой проект. Зайди в меню Project->Edit option source 
и удали там упоминания про dac60.bpi dacvcl60.bpi CRControls60.bpi odac60.bpi odacvcl60.bpi oraprov60.bpi
Или из блокнота открой файл проекта и тоже самое сделай

Это сообщение отредактировал(а) ИванМ - 6.7.2009, 22:05
PM MAIL   Вверх
Ярослав
Дата 6.7.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Чёт ничего не получается.Я взял ваш код оброботчики вставил в свою программу но выдаёт ошибку current=0; красная линия
PM MAIL   Вверх
ИванМ
Дата 6.7.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Почитай файл *.h из моего примера. Скопируй от туда то, что у тебя не хватает.
А конкретно:
#include <vector> - в начале заголовка

в private-секции:
std::vector<int> frows;
size_t current;
void __fastcall Fill(); 

и из .cpp скопируй функцию void __fastcall Fill(); 
PM MAIL   Вверх
Ярослав
Дата 6.7.2009, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Я извиняюсь наверно уже надоел.Ну если Вы говорите что это поможет то возьму  код  на работу завтра разберусь.Ещё раз спасибо.Если Вы не против завтра отпишу Вам. 
PM MAIL   Вверх
ИванМ
Дата 6.7.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



Еще нужно что бы контролы были как у меня.
У меня Edit1- куда вводится строка поиска
Edit2,3,4- куда выводятся результаты
Button1 - начало поиска
Button2,3- вперед/назад (именно в таком порядке)

Отпишись. Не против. Раз уж начал помогать.

Это сообщение отредактировал(а) ИванМ - 6.7.2009, 22:52
PM MAIL   Вверх
Ярослав
Дата 6.7.2009, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Не выдержал.Проверил всё супер так как я и хотел.С меня пиво.Огромное спасибо.А что на счёт если ввести неполные данные то как делать
PM MAIL   Вверх
ИванМ
Дата 7.7.2009, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1260
Регистрация: 19.6.2006
Где: СПб

Репутация: 5
Всего: 23



типа такого:
Код

if(AnsiLowerCase(StringGrid1->Cells[cCol][cRow]).Pos(AnsiLowerCase(Edit1->Text)))
      {
        frows.push_back(cRow);
        break;
      }

Заменить аналогичные строки в Button1Click 
PM MAIL   Вверх
Ярослав
Дата 9.7.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: нет
Всего: -1



Да есть вопрос и как это организовать
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.