Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
-1 / 5 / 2
Регистрация: 13.03.2013
Сообщений: 203

StringGrid, выровнять текст и ячейки

18.03.2020, 20:44. Показов 3304. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выровнять текст в StringGrid по центру, и так что бы весь текст вмешался в ячейку. А то обрезает значение и непонятно что там дальше.
Гружу так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{ 
fileName = OpenDialog1->FileName;
 
 
TStringList *Lst = new TStringList; // Где числа через пробел
Lst->LoadFromFile(fileName);
    Lst->LoadFromFile(fileName);
 
    for (int i = 0; i < Lst->Count; ++i)
    {
        TStringDynArray arr = SplitString(Lst->Strings[i], " ");
        for (int j = 0; j < arr.Length; j++)
        {
            StringGrid1->Cells[j][i+1]=arr[j];
        }
    }
 
    delete Lst;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2020, 20:44
Ответы с готовыми решениями:

Как выровнять текст в Edit, StringGrid, StaticText, и вообще в обєктах на форме?
Как выровнять текст в Edit, StringGrid, StaticText, и вообще в обєктах на форме? Спасибо!

StringGrid: текст не виден при раскрашивании ячейки
Здравствуйте. Подскажите , пожалуйста, при закрашивании отдельных столбцов или ячеек, новый цвет перекрывает текст который там есть.Мне...

Как выровнять текст внутри одной взятой ячейки таблицы?
Народ подскажите как выровнять текст (а также и числа) внутри одной взятой ячейки таблицы?

7
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
18.03.2020, 20:59
Лучший ответ Сообщение было отмечено neva как решение

Решение

А так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <memory>
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
   std::auto_ptr<TStringList> L (new TStringList);
   L->LoadFromFile("c:\\tmp\\1.txt", TEncoding::GetEncoding(866));
   for(int i = 0; i < L->Count; i++)
     {
       StringGrid1->Rows[i + StringGrid1->FixedRows]->Delimiter = ' ';
       StringGrid1->Rows[i + StringGrid1->FixedRows]->DelimitedText = L->Strings[i];
     }
}
Добавлено через 3 минуты
О как! А где уже момент, что файл в DOS-кодировке?
1
-1 / 5 / 2
Регистрация: 13.03.2013
Сообщений: 203
18.03.2020, 21:01  [ТС]
D1973, да так тоже работает, с кодировкой вроде разобрался, спасибо. Выровнять теперь не могу))) Зачем вообще я решил использовать StringGrid. Ужасный какой-то он, ну и я кривой)

Добавлено через 39 секунд
D1973, а я решил как раз проблему, как Вы написали) мы одновременно это сделали) И думаю, людей лишним не грузить, быстренько убрал вопрос про кодировку, но Ваш метод однозначно лучше моего топорного) И не надо использовать SplitString, отлично!
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
18.03.2020, 21:03
Цитата Сообщение от neva Посмотреть сообщение
Выровнять теперь не могу
А пример файла можно?
0
-1 / 5 / 2
Регистрация: 13.03.2013
Сообщений: 203
18.03.2020, 21:11  [ТС]
D1973, Конечно, прикрепляю пример, только кодировку cp866 не сделал, но это не суть важно. Гружу данные в StringGrid лишь для того, что потом буду с ними работать и мне так удобнее и нагляднее.
Ну а раз уже загрузил, хотелось бы что-бы отображалось нормально. Не получиться - тогда уйду от идеи отображения данных. Не принципиально, но для себя хотелось бы понять как работать с этим StringGrid.
Вложения
Тип файла: txt Пример.txt (137 байт, 10 просмотров)
0
-1 / 5 / 2
Регистрация: 13.03.2013
Сообщений: 203
18.03.2020, 21:15  [ТС]
А вот как у меня это отображается(

C++
1
2
3
4
     //Растягиваем таблицу по форме
for (ptrdiff_t i=0; i< ptrdiff_t(StringGrid1->ColCount); i++)
        StringGrid1->ColWidths[i]=
            StringGrid1->Width/StringGrid1->ColCount;
Миниатюры
StringGrid, выровнять текст и ячейки  
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
18.03.2020, 21:44
Лучший ответ Сообщение было отмечено neva как решение

Решение

Я вот так сделал: количество столбцов определяется исходя из максимального количества разделителей + 1 (несколько подряд идущих пробелов считаются за один), ширина каждого столбца выставляется исходя из величины самого длинного слова в столбце + 10 пикселей:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void __fastcall TForm2::Button1Click(TObject *Sender)
{
   #define G StringGrid1
   std::auto_ptr<TStringList> L (new TStringList);
   L->LoadFromFile("c:\\tmp\\3.txt");
   G->RowCount = L->Count + 1;
   for(int i = 0; i < L->Count; i++)
     {
        G->ColCount = L->Strings[i].Length() - (StringReplace(L->Strings[i], " ", "", TReplaceFlags() << rfReplaceAll).Length()) + 1;
        G->Rows[i + G->FixedRows]->Delimiter = ' ';
        G->Rows[i + G->FixedRows]->DelimitedText = L->Strings[i];
     }
   for(int i = 0; i < G->ColCount; i++)
     {
        int wMax = 0;
        for(int j = 0; j < G->RowCount; j++)
          {
             int w = G->Canvas->TextWidth(G->Cells[i][j]);
             wMax = w > wMax ? w : wMax;
          }
        G->ColWidths[i] = wMax + 10;
     }
}
Миниатюры
StringGrid, выровнять текст и ячейки  
1
-1 / 5 / 2
Регистрация: 13.03.2013
Сообщений: 203
18.03.2020, 21:53  [ТС]
D1973, Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.03.2020, 21:53
Помогаю со студенческими работами здесь

Задизейблить текст отдельной ячейки StringGrid
как текст конкретной ячейки таблицы сделать Enable-False

StringGrid - текст в середине ячейки, разные шрифты и т.п.
Можноли сделать в СтрингГриде так что -бы текст распологался в середине ячейки, задавать разный размер шлифта для отдельных ячеек,...

Переместить текст в stringgrid из одной ячейки в другую и сделать проверку
Как переместить текст в stringgrid из одной ячейки в другую (т.е. расставить их в нужном порядке) и при этом при нажатии кнопки проверить в...

StringGrid, при изменении фона ячейки текст съехал влево
Изменила фон у ячейки. Но текст очень сильно &quot;Съехал&quot; влево. Подозреваю, что вина тому предпоследняя строка. Пытаюсь установить другой...

Необходимо сложить ячейки в столбце Stringgrid и вывести в другой Stringgrid
Необходимо сложить ячейки в столбце Stringgrid и вывести в другой Stringgrid Количество столбцов и строк задается пользователем


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru