![]() |
|
|
![]()
|
|
| Гость_Инна |
|
|||
|
Unregistered |
Подскажите как правильно удалить строку с известным номером из StringGrid?
Спасибо. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
поднимаем все строки под этой на одну вверх и уменьшаем RowCount на 1
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Гость_Инна |
|
|||
|
Unregistered |
Пытаюсь убрать все строки у который во второй колонке пусто. Как правильно поднимать строки?
int u = Form1->StringGrid1->RowCount; for (int i = 0; i<u ; i++) { if(Form1->StringGrid1->Cells[1][i] == "") //поднять как? Form1->StringGrid1->RowCount = Form1->StringGrid1->RowCount-1; } |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
поднять -- это перенести значения всех ячеек строки
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Гость_Инна |
|
|||
|
Unregistered |
int yborka = Form1->StringGrid1->RowCount;
for (int i = 0; i<yborka ; i++) { if(Form1->StringGrid1->Cells[1][i] == "") { for (int i = 0; i<yborka ; i++) { Form1->StringGrid1->Cells[0][i]=Form1->StringGrid1->Cells[0][i+1]; Form1->StringGrid1->Cells[1][i]=Form1->StringGrid1->Cells[1][i+1]; } Form1->StringGrid1->RowCount = Form1->StringGrid1->RowCount-1; } } Не работает. Где ошибка? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
на вопрос
я могу ответить только "там". что значит "Не работает"? Добавлено @ 16:36 P.S. не стесняемся на кнопку "Код" тыкать... P.P.S. два цикла с одной переменной -- не есть гут... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Гость_Инна |
|
|||
|
Unregistered |
СтрингГрид состоит из двух колонок. Во второй колонке есть пустые ячейки. Строки в которых присутствуют пустые значения во второй колонке надо убрать из СтрингГрид. Код выше с этим не справляется. Остаются пустые строки во второй колонке.
Еще подскажите: при старте приложения всегда выделена первая ячейка в первой колонке СтрингГрида, как сделать, чтобы этого выделения не было. И как менять размеры колонок, установила goColSizing в true, но поменять размер колонок не удается курсором мыши. У меня СтрингГрид без фиксированных колонок и строк. Спасибо. |
|||
|
||||
| Vyacheslav |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Надо нежнее, еще нежнее
Добавлено @ 16:51
-------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
| Гость_Инна |
|
|||
|
Unregistered |
Спасибо, работает
Теоретически это как реализовано? Идет переопределение защищенной переменной из класса TStringGrid? За что отвечает эта переменная в базовом классе TStringGrid? Почему классический TStringGrid не дает так просто удалять? Еще вопросы: Подскажите, как программно установить ширину двух колонок в StringGrid в зависимости от самого длинного текста в каждой из них и как снять выделение с первой ячейки StringGrid в момент его появления на форме? Спасибо. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
это называется взлом класса ( и нет там никакой переменой )
а почему удалять не дает -- у разработчиков спрашивать надобно... ширину установить -- ColWidths длину текста определить -- stringGrid->Canvas->TextWidth() выделение убрать -- Col в -1 поставить попробуй ( ну или HideSelection в Design Time' е в true а потом вернуть в false ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Здесь прсото создается некий прокси-класс, у которого всего лишь чисто декоративное отличие:
метод DeleteRow, объявленный как protected, объявляется в новом классе открытым.
Я бы не назвал, это взломом. Вполне стандартный прием. Просто разработчики решили, что этот не стоит этот метод делать открытым для данного класса. А Вам он понадобился -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Гость_Инна |
|
|||
|
Unregistered |
Cпасибо за обяснения.
Кто знает, подскажите где ошибка. Пробую установить ширину двух своих колонок в СтрингГрид:
Как-то странно работает |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
странный код...
зачем постоянно вычислять длины ( if (Form1->StringGrid1->Canvas->TextWidth(Form1->StringGrid1->Cells[1][stolb2])< Form1->StringGrid1->Canvas->TextWidth(Form1->StringGrid1->Cells[1][stolb2+1])) )? создай перед циклом переменную int maxWidth = 0; и проверяй больше ли длина столбца этой переменной. если больше -- обновляй значение. после цикла ставь длину в maxWidth и все... + ты, похоже путаеш столбцы и строки ( Cells[int ACol][int ARow] ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Здравствуйте!
1) Как в StringGrid удалить выделенную строку? Причем не просто очистить ее ячейки, а удалить полностью. 2) Как сделать выделенную строку доступной для редактирования? Т.е. выбераем строку, жмем на клавишу и можем изменять текст в любой ячейки строки прямо в таблице! Модератор: зачем подымать старый топик. Я дал ссылку на него, что бы Вы смогли решить проблему с ошибкой. Ответы на это топик и тот, который Вы открыли полностью дают ответ на Ваши вопросы http://forum.vingrad.ru/index.php?showtopic=113677 |
|||
|
||||
| docwar |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Извините, но я не могу выделить строку. Это вообще возможно?
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |