![]() |
|
![]() ![]() ![]() |
|
LenaKi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 22.6.2005 Репутация: 1 Всего: 1 |
Нашла на форуме код позволяющий убрать не нужное изStringGrid.
Где ошибка у меня? Подскажите, как правильно удалить в цикле названия из первой колонки StringGrid? Чтобы было понятнее, вылаживаю рисунок. Пытаюсь оставить в StringGrid только то, что мне нужно. Если разкомментировать код получаю ерунду.
Присоединённый файл ( Кол-во скачиваний: 15 ) ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
что-то мне кажется, что ты перепутала колонки и столбцы ( или структуру таблицы ): как в одной ячейке ( и в одном столбце ) может быть и улица и дом и тип?
+ убери из тестового случая все лишнее: ты удаляеш строки? зачем тогда в коде руссификация? -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
111111 |
|
|||
Unregistered |
Изв.Компилятора под рукой нет.
Попробуй на оборот for (int i=0; i<StringGrid1->RowCount-1; i++) |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
наоборот как раз строки удалять нельзя -- вся индексация гахнется...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
LenaKi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 22.6.2005 Репутация: 1 Всего: 1 |
Не совсем поняла, где у меня не правильно hunter?. Вот, например, прилагаю рисунок. В данном StringGrid я, например, хочу убрать все значения из второй колонки, где есть 0 и оставить то, что выделено розовым цветом предварительно руссофицировав. Как точно организовать код?
Нули убираются без проблем: if(Form1->StringGrid1->Cells[1][i] == "0") ((TPublicGrid*)Form1->StringGrid1)->DeleteRow(i); Потом начинаю убирать лишние строки по одной и на каком-то этапе вдруг получаю ерунду. Присоединённый файл ( Кол-во скачиваний: 14 ) ![]() |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
тогда ( если нули убираются ) я не понял в чем проблема...
и на каком этапе ( и в чем это выражается )? -- отладчиком по коду пройди... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
Gala |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 15.9.2005 Репутация: 2 Всего: 2 |
вот моя процедура удаления строки
|
|||
|
||||
LenaKi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 22.6.2005 Репутация: 1 Всего: 1 |
//Код разкоментирован результат на рисунке ниже с номером 1
Опишу как я получаю StringGrid. Может в этом проблема. StringGrid формируется при щелчках мыши динамически. Каждый раз в нем разное кол-во строк с английскими именами в первой колонке. Я хочу создать универсальный код убирающий эти названия и оставляющий только три нужных мне. Я пишу общий код убирающий все ненужные мне названия, благо я знаю все их имена. Убираю простым перечислением в if. Проблема такая: я разкоментировала код выше, на рисунке получила результат с номером 1. Далее в коде сформировался новый StringGrid. У него есть в первой колонке те же имена что и у предыдущего (имена те же, но их меньше). Воздействую тем же кодом, получаю ерунду рисунок 2. Если весь код закомментировать, то вижу что оба StringGrid-а сформировались нормально (рисунок 3), вот только мой универсальный код не убирает строки так, как я это себе представляю в обоих случаях. Еще раз подробнее. Допустим, есть StringGrid c 20 строками. Я хочу оставить только три строки с нужными мне названиями. Все получилось. Далее сформировался новый StringGrid в нем, к примеру, 10 строк с названиями, которые все есть и в первом 20-ти строковом. Среди них в обязательном порядке есть и мои нужные три строки (такие же имена как и в 20-строковом) и остальные не нужные (тоже с именами как в 20-и строковом). В конечном итоге я хочу в обеих StringGrid-ах отставить нужные мне три строки. Присоединённый файл ( Кол-во скачиваний: 8 ) ![]() |
|||
|
||||
LenaKi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 22.6.2005 Репутация: 1 Всего: 1 |
Вроде заработало. Надо цикл разбить на два. Сначала удалить строки с нулями во второй колонке, а затем во вновь получившемся StringGrida-е удалять не нужные строки из первой. Почему нельзя объединить удаление нулей из втрой колонки и строк с не нужными именами из первой колонки в одном цикле я пока не поняла.
Это сообщение отредактировал(а) LenaKi - 5.12.2005, 15:25 |
|||
|
||||
_hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
тут проблема в том, что _теряются_ проверки: после удаления строки дальше проверять не нужно ( continue поставить )
а, вообще, эту проверку ( по крайней мере на имена ( STR_STD2, NAM_STR2, ... ) ) лучше вынести в отдельную функцию, в которую передавать строку и список строк для удаления -- и читатся код будет легче и понятнее будет... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
LenaKi |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 22.6.2005 Репутация: 1 Всего: 1 |
Cпасибо, _hunter !
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |