link3124 link3125 link3126 link3127 link3128 link3129 link3130 link3131 link3132 link3133 link3134 link3135 link3136 link3137 link3138 link3139 link3140 link3141 link3142 link3143 link3144 link3145 link3146 link3147 link3148 link3149 link3150 link3151 link3152 link3153 link3154 link3155 link3156 link3157 link3158 link3159 link3160 link3161 link3162 link3163 link3164 link3165 link3166 link3167 link3168 link3169 link3170 link3171 link3172 link3173 link3174 link3175 link3176 link3177 link3178 link3179 link3180 link3181 link3182 link3183 link3184 link3185 link3186 link3187 link3188 link3189 link3190 link3191 link3192 link3193 link3194 link3195 link3196 link3197 link3198 link3199 link3200 link3201 link3202 link3203 link3204 link3205 link3206 link3207 link3208 link3209 link3210 link3211 link3212 link3213 link3214 link3215 link3216 link3217 link3218 link3219 link3220 link3221 link3222 link3223 link3224 link3225 link3226 link3227 link3228 link3229 link3230 link3231 link3232 link3233 link3234 link3235 link3236 link3237 link3238 link3239 link3240 link3241 link3242 link3243 link3244 link3245 link3246 link3247 link3248 link3249 link3250 link3251 link3252 link3253 link3254 link3255 link3256 link3257 link3258 link3259 link3260 link3261 link3262 link3263 link3264 link3265
C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Удаление строки из StringGrid
Serg
Отправлено: 02.07.2003, 15:15


Не зарегистрирован







Суть вопроса:

есть объект TStringGrid, необходимо удалить из него строку с номером ARow.

Подскажите пожалуйста, как правильно применить DeleteRow(long ARow)). sad.gif
Guest
Отправлено: 02.07.2003, 22:39


Не зарегистрирован







Тебе надо сделать так: сдвинуть все строки вверх на 1, а поледнюю удалить. Ето в теории.

Пример:

for (int i=ARow; iRowCount; i++)
SG1->Cells[0][i]=SG1->Cells[1][i+1];
SG1->RowCount-=1;

P.S.
SG1 ето StringGrid1.
Serg
Отправлено: 03.07.2003, 07:17


Не зарегистрирован







Уж очень хочеца DeleteRow применить...
Пряма наваждение какое-то...

??? smile.gif
Георгий
Отправлено: 03.07.2003, 12:53


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



DeleteRow — это protected метод — и простым смертным он не доступен.
Хотя причиты скрытия его не совсем ясны:
CODE
class MyStringGrid:public TStringGrid
     {
public:
      __fastcall virtual MyStringGrid(Classes::TComponent* AOwner):TStringGrid(AOwner){};
      void __fastcall DeleteRow(int a){return TStringGrid::DeleteRow(a);};
     };
static MyStringGrid*sg;
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
sg=new MyStringGrid(this);
sg->Parent=this;
int i,j;
for (i=0;i<sg->ColCount;i++)
   for (j=0;j<sg->RowCount;j++)
       sg->Cells[i][j]=AnsiString(i)+AnsiString(j);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
sg->DeleteRow(2);
}

и этот код прекрасно работает

Вернуться в Вопросы программирования в C++Builder