Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление выделенной строки в StringGrid 
:(
    Опции темы
kox
Дата 15.6.2004, 18:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Нужно удалить выделенную строку
код:
StringGrid1->Rows->Delete(StringGrid1->Row);

[C++ Error] Too few parameters in call to '_fastcall TStringGrid::GetRows(int)'

что я делаю неправильно?
  Вверх
bel_nikita
Дата 15.6.2004, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



to kox
Я не знаю че это, но кажется у тебя ошибка в другом месте.
Как вызывается GetRows() ?


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
Дрон
Дата 15.6.2004, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



По моему, нельзя удалять строки из StringGrid.

Вообще Rows это array property (не знаю как по-русски будет), т.е. там нужно в квадратных скобках указывать номер нужной строки: StringGrid1->Rows[n]

Если я пробую написать:
Код
StringGrid1->Rows[n]->Delete(0);
о при запуске проги возникает ошибка: Cannon insert or delete rows from grid.

Добавлено @ 19:21
bel_nikita
GetRows(), вроде как, вызывается неявно при обращении к Rows.



--------------------
Да. Именно так.
PM   Вверх
Ignat
Дата 15.6.2004, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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



А просто очистить не хочешь?
StringGrid1->Rows[n]->Clear();


--------------------
Теперь при чем :P
PM   Вверх
kox
Дата 15.6.2004, 20:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Хорошо бы было бы конечно удалять, иначе придется потом все следующие строки сдвиать на одну вверх((
  Вверх
Конструктор
Дата 17.6.2004, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я всегда вручную удалял. Сдвигал строчки вверх, а потом Grid->RowCount--;
Вот только если есть фиксированные строки, начинаются пляски с бубнами, ибо тогда не удастся удалить последнюю строку, и она всегда будет висеть пустой.

PM MAIL WWW ICQ   Вверх
kox
Дата 17.6.2004, 18:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А как мне узнать номер выделенной строки (у меня построчное выделение)?????
  Вверх
zss
Дата 17.6.2004, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(kox @ 17.6.2004, 18:25)
А как мне узнать номер выделенной строки

Код

OnSelectCell (TObject *Sender, int ACol, int ARow, bool &CanSelect);


ARow - номер выделенной строки

а далее как писали выше
Код

StringGrid1->Rows[ARow]->Clear();
...


Это сообщение отредактировал(а) zss - 17.6.2004, 20:32
PM MAIL ICQ   Вверх
kox
Дата 17.6.2004, 20:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я кажется нашел болле легкий способ узнать номер выделенной строки
StringGrid1->Row
У меня вроде работает, может я неправ?
А удаление строки уже реализовал, путем сдвига всего что ниже на одну строку вверх, а потом colcount--;
  Вверх
Vyacheslav
Дата 18.6.2004, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Эх, ну что же так неуклюже то (с)

Код

void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
   class TProxyGrid : public TStringGrid
   {
       public:
        using TStringGrid::DeleteRow;
   };
   ((TProxyGrid*)StringGrid1)->DeleteRow(StringGrid1->Row);

}

Вот и все


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Конструктор
Дата 18.6.2004, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Vyacheslav

э-э-э прошу пардона, а можно немножечко поподробнее? А то я TStringGrid::DeleteRow не видел в справке.

И что вообще за такая конструкция навороченая, ибо по недостатку знаниев ведать не ведаю? smile.gif

PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 21.6.2004, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



DeleteRow - виртуальный protected метод, который удаляет строку с заданным индексом. Почему разработчики сделали его protected - вопрос не ко мне. Объявлен впервые можно в TCustomGrid.
Выражение
Код

class TProxyGrid : public TStringGrid
  {
      public:
       using TStringGrid::DeleteRow;
  };
((TProxyGrid*)StringGrid1)->DeleteRow(StringGrid1->Row)

- стандартный С++ способ, позволяющий добрастться до protected методов, если не хочется
специально городить класc.
PS Не хелпом единым жив человек


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Конструктор
Дата 21.6.2004, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



It works!!! It works!!! biggrin.gif
Вот спасибо. Такого я еще не видывал.
Как наберу 100 постов, +репутация smile.gif

PS
В хелпе нашел. На кой они действительно protected сделали?

Это сообщение отредактировал(а) Конструктор - 21.6.2004, 10:26
PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 21.6.2004, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



То, что сделали protected, я большой беды не вижу. Если интересны мои соображения по этому вопросу, а так же моих оппонентов, советую ознакомится с этим
http://borland.xportal.ru/forum/viewtopic....7045&highlight=


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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