C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос по TStringGrid  (Прочитано 1406 раз)
Ree4
Участник


Сказали спасибо: +12/-5
Offline

Сообщений: 353


вопрос по TStringGrid
« : 11 Сентябрь 2012, 15:08:34 »

Всем привет. На форме имеется компонент StrungGrid. На нём имеется 4 столбца.
Как заполнить столбцы из txt файла с содержанием
Цитировать
1
2
3
4
5
6
7
ну и так далее цифр, чтобы получилось примерно так:
Цитировать
1   2    3    4
5   6    7    8
9   10  11   12
при учёте того, что 0 строчка должна быть фиксированной и на ней не должно ничего отображаться
Записан
S0mbre
Глобальный модератор


Сказали спасибо: +1113/-22
Offline

Сообщений: 2132

S0mbre


Re: вопрос по TStringGrid
« Ответ #1 : 11 Сентябрь 2012, 17:08:17 »

А что здесь сложного?
Код
#include 
#include
 
void __fastcall TForm1::LoadFromTxt(TStringGrid* Grid, int Cols, AnsiString fname)
{
if(!FileExists(fname)) return;
 
std::auto_ptrTStringList> sList(new TStringList());
sList->LoadFromFile(fname);
if(sList->Count 1) return;
 
Grid->ColCount = Cols;
Grid->RowCount = 1 + Ceil((double)(sList->Count) / (double)Cols);
 
for(int i=1; iGrid->RowCount; i++) Grid->Rows[i]->Clear();
 
int row(0), col(0);
 
for(int i=0; isList->Count; i++) {
row = Ceil((double)(i+1)/(double)Cols);
col = (((i+1)%Cols) > 0)? ((i+1)%Cols) : Cols;
Grid->Cells[col-1][row] = sList->Strings[i];
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LoadFromTxt(StringGrid1, 4, "1.txt"); // в 4 столбца
}
 
Записан
Ree4
Участник


Сказали спасибо: +12/-5
Offline

Сообщений: 353


Re: вопрос по TStringGrid
« Ответ #2 : 11 Сентябрь 2012, 23:58:38 »

спасибо, вроде ничего
просто впервые сегодня пригодилось)
Записан
golov67309v
Участник


Сказали спасибо: +5/-0
Offline

Сообщений: 8


Re: вопрос по TStringGrid
« Ответ #3 : 12 Сентябрь 2012, 12:50:06 »

Я может не прав, и меня поправят. Но зачем так усложнять? 
Код
      if(!FileExists(fname)) return;
 
std::auto_ptrTStringList> sList(new TStringList());
sList->LoadFromFile(fname);
if(sList->Count 1) return;
 
Grid->ColCount = Cols;
Grid->RowCount = 1+(sList->Count+Cols-1)/Cols;
 
for(int i=1; iGrid->RowCount; i++) Grid->Rows[i]->Clear();
 
for(int i=0; isList->Count; i++)
Grid->Cells[i%Cols][1+i/Cols] = sList->Strings[i];
 
Да и Cols бы не мешало от дураков защитить (я в смысле Cols>0)
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.123 секунд. Запросов: 23.