Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/30: Рейтинг темы: голосов - 30, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 05.06.2012
Сообщений: 28

Заполнение stringgrid

21.06.2012, 12:00. Показов 6095. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не знаю как точно выразиться , но попробую. мне нужно чтобы при нажатии на кнопку заполнялась одна строка таблицы, потом при нажатии на эту же кнопку заполнялась другая строка с другим значением и так далее
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.06.2012, 12:00
Ответы с готовыми решениями:

Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки
Здравствуйте! Помогите, пожалуйста. Мне необходимо сделать следующее: реализовать возможность вручную писать данные в ячейки StringGrid...

Заполнение StringGrid
Приветствую, ребята, что-то обессилил совсем :). Требуется заполнить строку таблицы определенным образом. Смысл какой. Есть строка, ее...

Заполнение StringGrid
Здравствуйте. Вот такой вопрос. На форме расположен StringGrid . Есть готовая таблица в Excel . Ну соответственно есть кнопка аля...

14
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
21.06.2012, 12:13
Sacredd, А данные для заполнения откуда берутся?
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
21.06.2012, 12:20
так первую строку
C++
1
2
3
4
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->Rows[0]->DelimitedText = ("Заполняем текстом первую строку");
}
меняя значение Rows[] заполняем другие строки.

Добавлено через 2 минуты
так при нажатии заполняется следующая строка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int iRows = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->Rows[iRows]->DelimitedText = ("Çàïîëíÿåì òåêñòîì ïåðâóþ ñòðîêó");
iRows++;
}
А лучше задание опиши более полно
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
21.06.2012, 12:22
Drygba, только нужно уточнить формат ввода...

C++
1
2
3
4
5
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->Rows[0]->DelimitedText = ("Заполняем, текстом, первую, строку");
//так заполнятся 4 столбца первой строки
}
Если же хотим иметь в таблице значение (вдруг приспичило нам запятую иметь):
Запол,няем
, то формат ввода будет таким:
"Запол,няем", текстом, первую, строку

Ну а если хотим видеть запись в СрингГриде в таком виде (с кавычками и запятой):
"Запол,няем"
То формат ввода будет следующим:
"""Запол,няем""", текстом, первую, строку
Ну это я так... На всякий случай
1
1 / 1 / 0
Регистрация: 05.06.2012
Сообщений: 28
21.06.2012, 12:28  [ТС]
The_Immortal, данные вводятся из Edit
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
21.06.2012, 12:31
Sacredd, формат ввода данных отобразил выше. Должно быть понятно.
Просто возьмите последний код, предложенный Drygba, и Edit заполняйте указанным форматом.
0
1 / 1 / 0
Регистрация: 05.06.2012
Сообщений: 28
21.06.2012, 12:38  [ТС]
Вот типо этого должно быть, заполняешь все поля нажимаешь добавить, и заполняется первая сттрока таблицы, потом новое вводишь др строка заполняется.


1
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
21.06.2012, 12:43
так (вроде), Edit'ов сколько надо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
int iRows = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
StringGrid1->Rows[iRows]->DelimitedText = (Edit1->Text + " " + Edit2->Text + " " +Edit3->Text);//добавлять Edit + " " до получения удовлетворения
iRows++;
}
0
1 / 1 / 0
Регистрация: 05.06.2012
Сообщений: 28
21.06.2012, 12:47  [ТС]
вот это то что нужно, а незнаешь как сделать чтобы когда добавил текст можно было бы его поменять ?
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
21.06.2012, 12:52
можно еще так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int iRows = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (StringGrid1->RowCount == iRows)
        StringGrid1->RowCount++;
StringGrid1->Rows[iRows]->DelimitedText = (Edit1->Text +" "+ Edit2->Text);
iRows++;
}
Цитата Сообщение от Sacredd Посмотреть сообщение
вот это то что нужно, а незнаешь как сделать чтобы когда добавил текст можно было бы его поменять ?
в инспекторе объекта StringGrid: Options -> goEditing = true

Добавлено через 2 минуты
предполагая следующий вопрос, сохранение StringGrid в файл
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
21.06.2012, 12:56
А я бы такой способ предложил:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vector>
...
std::vector<TEdit*> v;
int row=1;
 
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
v.push_back(Edit3);
v.push_back(Edit4);
v.push_back(Edit5);
v.push_back(Edit6);
v.push_back(Edit7);
}
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    for (int col = 0; col < 5; col++) {
     StringGrid1->Cells[col][row]=v[col]->Text;
    }
    row++;
}
Drygba,
Цитата Сообщение от Drygba Посмотреть сообщение
C++
1
StringGrid1->Rows[iRows]->DelimitedText = (Edit1->Text +" "+ Edit2->Text);
Понимаете, при таком подходе нужно дополнительно обрабатывать случай, если Edit1 или Edit2 содержит запятую (или кавычки - которые просто будут потеряны в СтрингГриде)... Попробуйте, введите в Edit2 скажем такое: "Ed,it2" - получите заполнение 3 столбцов вместо двух.
0
1 / 1 / 0
Регистрация: 05.06.2012
Сообщений: 28
21.06.2012, 13:37  [ТС]
спасибо огромное. а еще вопрос а как можно из таблица выбрать отдельное, ну типо поиска по критериям ?
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
21.06.2012, 14:09
по нормальному по моему в StringGrid'е нельзя, для фильтра по моему лучше подходят таблица BDGrid.
если просто найти данные и вывести их в отдельный Edit (допустим), то можно с такого начать.
C++
1
2
3
4
5
6
AnsiString Sear = Edit1->Text; // ищем по данным введенным в Edit1
for (int i = 0; i<StringGrid1->RowCount; i++)
{
        if (StringGrid1->Cells[0][i] == Sear) // ищем по первому столбцу, по желанию можно переделать по какому угодно
        Edit3->Text = StringReplace(StringGrid1->Rows[i]->DelimitedText, ',', " ", TReplaceFlags()<<rfReplaceAll); // если нашли искомое, то всю строку отображаем в Edit3
}
это только набросок, но рабочий, дорабатывать тут много чего.

Не по теме:

и скорей всего можно более элегантно, ждем ответа гуру

0
1 / 1 / 0
Регистрация: 05.06.2012
Сообщений: 28
21.06.2012, 14:37  [ТС]
а вот можно просто чтобы из таблицы убирались не нужные а нужные оставались ?
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
21.06.2012, 15:09
в общем виде так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
TStringList *list = new TStringList;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)//íà÷àòü ïîèñê
{
int k = 0;
AnsiString Sear = Edit1->Text; // èùåì ïî äàííûì ââåäåííûì â Edit1
 
for(int i = 1; i<StringGrid1->RowCount; i++)
       list->Add(StringGrid1->Rows[i]->DelimitedText);  //ïîìåùàåì StringGrid â list
 
for(int i = 1; i<StringGrid1->RowCount; i++)
       StringGrid1->Rows[i]->Clear();   //î÷èùàåì StringGrid
 
for (int i = 0; i<list->Count; i++)
       if(list->Strings[i].Pos(Sear)) // âûâîäèì â StringGrid íàéäåííîå
       {
                StringGrid1->Rows[k]->DelimitedText = list->Strings[i];
                k++;
       }
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)// очищаем  поиск
{
for(int i = 0; i<list->Count; i++)
{
        StringGrid1->RowCount=i+1;
        StringGrid1->Rows[i]->DelimitedText = list->Strings[i];
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete list;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.06.2012, 15:09
Помогаю со студенческими работами здесь

Заполнение столбца в StringGrid
Здравствуйте. Сделал таблицу с помощью StringGrid. Первый столбец-номера от 1 до 32. Второй столбец все &quot;+&quot;. Третий столбец...

Заполнение StringGrid из массива
Доброго времени суток нуждающиеся и их спасители. Есть таблица StringGrid 5 столбцов и 17 строк, 1я стока и 1й столбец фиксированные,...

Заполнение StringGrid из массива
void __fastcall TForm1::Button3Click(TObject *Sender) { int n=2,i,j; float a; for(i=0;i&lt;n;i++) for(j=0;j&lt;n;j++) ...

Сохранение и заполнение StringGrid
Помогите сделать заполнение StringGrid1 с помощью файла, матрица матрица формируется в ручную(её размеры) вот код сохранение StringGrid1 ...

Заполнение масива из StringGrid
в общем, вот код: float x,a,b,c; for (short int i=1;i&lt;4;i++) { for (short int j=1;j&lt;4;i++) { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru