Инна |
Отправлено: 17.11.2005, 14:30 |
|
Не зарегистрирован
|
Подскажите как правильно удалить строку с известным ее номером из StringGrid и как можно удалить в цикле все строки StringGrid?
Спасибо. |
|
Guest |
Отправлено: 17.11.2005, 15:10 |
|
Не зарегистрирован
|
2) StringGrid->RowCount = 0; // 1 ...;
1) ??? поднять "хвост" на 1 строку и RowCount-- |
|
Инна |
Отправлено: 17.11.2005, 15:50 |
|
Не зарегистрирован
|
Пытаюсь убрать все записи, в которых во второй колонке пусто. Как правильно поднять записи?
int u = Form1->StringGrid1->RowCount;
for (int i = 0; i
{
if(Form1->StringGrid1->Cells[1][i] == "")
Form1->StringGrid1->RowCount = Form1->StringGrid1->RowCount-1;
} |
|
Инна |
Отправлено: 17.11.2005, 15:51 |
|
Не зарегистрирован
|
Пытаюсь убрать все записи, в которых во второй колонке пусто. Как правильно поднять записи?
int u = Form1->StringGrid1->RowCount;
for (int i = 0; i
{
if(Form1->StringGrid1->Cells[1][i] == "")
Form1->StringGrid1->RowCount = Form1->StringGrid1->RowCount-1;
} |
|
Инна |
Отправлено: 17.11.2005, 16:56 |
|
Не зарегистрирован
|
СтрингГрид состоит из двух колонок. Во второй колонке есть пустые ячейки. Строки в которых присутствуют пустые значения во второй колонке надо убрать из СтрингГрид. Код выше с этим не справляется. Остаются пустые строки во второй колонке.
Еще подскажите: при старте приложения всегда выделена первая ячейка в первой колонке СтрингГрида, как сделать, чтобы этого выделения не было. И как менять размеры колонок, установила goColSizing в true, но поменять размер колонок не удается курсором мыши.
У меня СтрингГрид без фиксированных колонок и строк.
CODE |
int yborka = Form1->StringGrid1->RowCount;
int yborka2 = Form1->StringGrid1->RowCount;
for (int i = 0; i<yborka; i++)
{
if(Form1->StringGrid1->Cells[1][i] == "")
{
for (int i = 0; i<yborka2; 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;
}
}
| |
|
gvg |
Отправлено: 17.11.2005, 17:25 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
CODE |
for( int i = 0; i < SG->RowCount — 1; i++ )
{
if( SG->Cells[1][i] == "" )
{
for( int j = i; j < SG->RowCount — 1; j++ )
{
SG->Cells[1][j] = SG->Cells[1][j+1];
SG->Cells[2][j] = SG->Cells[2][j+1];
}
SG->RowCount = SG->RowCount — 1;
}
//SG->Update();
}
|
А вот во вложенных циклах (у Вас) одноименное i использовать не рекомендую — запутаетесь |
|
Инна |
Отправлено: 17.11.2005, 17:48 |
|
Не зарегистрирован
|
Почему-то не работает. Пустышки во второй колонке остаются, а в первой все смещается неправильно. |
|
gvg |
Отправлено: 17.11.2005, 17:54 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
CODE |
for( int i = 0; i < SG->RowCount; i++ )
{
if( SG->Cells[1][i] == "" )
{
for( int j = i; j < SG->RowCount — 1; j++ )
{
SG->Cells[1][j] = SG->Cells[1][j+1];
SG->Cells[0][j] = SG->Cells[0][j+1];
}
SG->RowCount = SG->RowCount — 1;
}
}
|
Индекс перепутал (надо было 0 вместо 2). И в первом цикле условие поправить. Вообще, сами поправили бы :-) |
|
Инна |
Отправлено: 17.11.2005, 18:02 |
|
Не зарегистрирован
|
Я пробывала исправить, но сейчас тоже не работает. |
|
GIZMO |
Отправлено: 17.11.2005, 19:56 |
|
Машинист паровоза
Группа: Участник
Сообщений: 174
|
QUOTE (Инна @ 17/11/2005, 14:30) | Подскажите как правильно удалить строку с известным ее номером из StringGrid и как можно удалить в цикле все строки StringGrid?
Спасибо. |
Сюда:
https://rxlib.ru/forums/index.php?s=...&act=Search&f=3
результат:
https://rxlib.ru/forums/index.php?ac...76b4fe294f26c0d
|
|
seg_r |
Отправлено: 17.11.2005, 20:27 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 74
|
вырезка из моей проги :
CODE |
void SortSGF1(void)
{
for (int i=0;i<=Form1->StringGrid1->RowCount;i++)
{
if (Form1->StringGrid1->Cells[0][i]==".")
if (Form1->StringGrid1->Cells[1][i]==".")
if (Form1->StringGrid1->Cells[2][i]==".")
if (Form1->StringGrid1->Cells[3][i]==".")
if (Form1->StringGrid1->Cells[4][i]==".")
if (Form1->StringGrid1->Cells[5][i]==".")
if (Form1->StringGrid1->Cells[6][i]==".")
if (Form1->StringGrid1->Cells[7][i]==".")
if (Form1->StringGrid1->Cells[8][i]==".")
if (Form1->StringGrid1->Cells[9][i]==".")
if (Form1->StringGrid1->Cells[10][i]==".")
if (Form1->StringGrid1->Cells[11][i]==".")
if (Form1->StringGrid1->Cells[12][i]==".")
{
for (int j=0;j<=12;j++)
Form1->StringGrid1->Cells[j][i]=Form1->StringGrid1->Cells[j][i+1];
for (int j=0;j<=12;j++)
Form1->StringGrid1->Cells[j][i+1]=".";
}
}
}
|
CODE |
// DELETE
if (MessageDlg("Óäàëèòü ñâèäåòåëüñòâî ¹ " + Form1->StringGrid1->Cells[1][RowNow] + " ?", mtConfirmation,
TMsgDlgButtons() << mbYes << mbNo, NULL)==mrYes)
{
// DELETE DATA FILE //
DeleteFile(A_PATH()+"BASE\\"+Form1->StringGrid1->Cells[12][Form1->StringGrid1->Row]);
for (int i=0;i<=12;i++)
Form1->StringGrid1->Cells[i][Form1->StringGrid1->Row]=".";
SortSGF1();
Form1->StringGrid1->RowCount--;
}
|
|
|
gvg |
Отправлено: 18.11.2005, 09:11 |
|
Машинист паровоза
Группа: Участник
Сообщений: 222
|
QUOTE |
Я пробывала исправить, smile.gif но сейчас тоже не работает. sad.gif
|
Ну, не знаю... Я не просто так писал, все опробовал. В дополнение — не забудьте, что нельзя удалять последнюю нефиксированную строку.
QUOTE |
И как менять размеры колонок, установила goColSizing в true, но поменять размер колонок не удается курсором мыши.
У меня СтрингГрид без фиксированных колонок и строк.
|
Надо фиксированную строку... На ней производится изменение размера. Это самое простое решение. |
|
Инга |
Отправлено: 18.11.2005, 10:33 |
|
Не зарегистрирован
|
В результате остановилась на этом, подсказанном варианте. При щелчке на кнопку:
CODE |
class TPublicGrid: public TStringGrid
{
public:
using TStringGrid::DeleteRow;
};
for (int i = Form1->StringGrid1->RowCount; i--;)
{
if(Form1->StringGrid1->Cells[1][i] == "")
((TPublicGrid*)Form1->StringGrid1)->DeleteRow(i);
}
|
Спасибо всем!
|
|