Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.63/41: Рейтинг темы: голосов - 41, средняя оценка - 4.63
 Аватар для Кемаль
0 / 0 / 1
Регистрация: 02.11.2010
Сообщений: 38

Перенос строк в компоненте StringGrid

28.05.2011, 19:09. Показов 8045. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Собственно сабж господа, помогите образовать перенос строк в компоненте StringGrid. На форуме искал- не нашел, гуглил- нашел какую то муть, т.е. нуждаюсь в вашей помощи.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.05.2011, 19:09
Ответы с готовыми решениями:

Перенос строк между StringGrid
имею 2 таблицы Стринггрид1 StringGrid2 в 1 ввожу числа. хочу с 1 таблицы 1 строку перенести в 2 таблицу 1 строку. и сделать сумму чисел...

Перенос строк в StringGrid когда строка длинная
Простейшая вещь которую, казалось бы, и так понятно потребуется пользователям Borland не предусмотрел даже в 2009 Builder. Вобще я в ужасе...

Выделение и перенос выделенных строк из DBGrid в memo или StringGrid c дальнейшем построением отчёта
Добрый день всем! Имеется DBGrid c записями,необходимо: 1) Выделять записи в гриде, с помощью ctr+мышка и как то подсвечивать...

33
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.05.2011, 19:37
Студворк — интернет-сервис помощи студентам
Nouko, нужен перенос строк в пределах одной ячейки

Не по теме:

тапок я тебе завтра накидаю, когда у меня возможности появятся :)

0
 Аватар для Кемаль
0 / 0 / 1
Регистрация: 02.11.2010
Сообщений: 38
29.05.2011, 19:38  [ТС]
Цитата Сообщение от Nouko Посмотреть сообщение
1)Узнаешь позицию Ячейки которую хотят переместить (MouseDown)
2)Тащим эту ячейку (Можно какой-то Rect рисовать) (MouseMove)
3)Узнаем позицию ячейки над которой отпустили (MouseUp)
Копируем данные из 1 в 3, а из 3 в 1.
Да ну нет же, товарищ! Есть одна ячейка, одна ячейка, в неё когда вводим много букаффок они не все помещаются, и надо организовать перенос строк в пределах одной ячейки. Есть мнение программера по этому поводу, но я не могу разобраться.
все просто нужно строку разбить на слова вместе с прицепленными к ним знаками препинания. затем пока влазеет по ширине к строке прибавлять очередное слово, как только не влезло выводим текущую строку и начинаем формировать следующую
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.05.2011, 19:52
недавно такое обсуждалось в отношеннии комбобокса/листбокса - в поиск , Кемаль

Добавлено через 1 минуту
ListBox выравнивание текста

Добавлено через 10 минут
Функция DrawText
Функция DrawTextEx
Многострочный DBGrid
2
 Аватар для Кемаль
0 / 0 / 1
Регистрация: 02.11.2010
Сообщений: 38
29.05.2011, 19:54  [ТС]
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 TForm1::ComboBox1DrawItem(TWinControl *Control, int Index, TRect &Rect,
          TOwnerDrawState State)
{
  TRect rc;
  UnicodeString strTmp;
  UnicodeString strVal = WrapText(ComboBox1->Items->operator [](Index), 20);
  int intPos, i = 0;
  ComboBox1->Canvas->FillRect(Rect);
  while((intPos = strVal.Pos("\r\n")) > 0)
  {
    strTmp = (intPos > 0) ? strVal.SubString(1, intPos - 1) : strVal;
    rc = Rect;
    rc.Top = Rect.Top + i * ComboBox1->ItemHeight;
    ComboBox1->Canvas->TextRect(rc, Rect.Left, Rect.Top + i * ComboBox1->ItemHeight, strTmp);
    strVal = strVal.SubString(intPos + 2, strVal.Length());
    i += 1;
  }
  rc = Rect;
  rc.Top = Rect.Top + i * ComboBox1->ItemHeight;
  ComboBox1->Canvas->TextRect(rc, Rect.Left, Rect.Top + i * ComboBox1->ItemHeight, strVal);
  ComboBox1->Canvas->Brush->Style = bsClear;
  ComboBox1->Canvas->Rectangle(Rect);
}
Тут некоторые переменные, которых для StringGrid'a нет. Ну попробую разобраться, в любом случае отпишусь ещё про состояние дел. Спс за сёчлинк)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.05.2011, 20:01
так их и в StringGrid нет, они "есть" в канве, а WrapText и SubString - в строке
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
29.05.2011, 20:02
Я вот попробовал для себя...
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Memo1Change(TObject *Sender)
{
  if(Memo1->Lines->Count == 1)
  {
        StringGrid1->Cells[0][0] = Memo1->Lines->operator [](0);
  }
  if(Memo1->Lines->Capacity == 2)
  {
        StringGrid1->Cells[1][0] = Memo1->Lines->operator [](1);
  }
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.05.2011, 20:21
и что показал анализ проб ?
0
 Аватар для Кемаль
0 / 0 / 1
Регистрация: 02.11.2010
Сообщений: 38
29.05.2011, 21:09  [ТС]
Организовал (нагло спи*дил) загрузку и сохранение таблицы в файл. Но вот ещё вопрос, у меня сохраняет в указанную директорию, а мне надо бы чтоб в директорию программы. Не подскажете как?
Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TShedule::btnUploadClick(TObject *Sender)
{
    TStringList *tsl= new TStringList;
    tsl->LoadFromFile("D:\\Saved.txt");
    StrGrid1->RowCount=StrToInt(tsl->Strings[0]);
    StrGrid1->ColCount=StrToInt(tsl->Strings[1]);
    int k=2;
    for(int i=0;i<StrGrid1->RowCount;i++)
    {
        for(int j=0;j<StrGrid1->ColCount;j++)
        {
            StrGrid1->Cells[j][i]=tsl->Strings[k];
            k++;
        }
     }
    delete tsl;
    Application->MessageBoxW(L"Файл был успешно загружен.",L"Загрузка", MB_OK| MB_ICONWARNING);
}
То есть, хочу чтоб сохраняло в директорию программы, независимо от того, где она будет лежать.
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
29.05.2011, 21:12
Вроде есть функция GetDirectory()
Я всегда пользуюсь этим:
C++
1
2
// Путь к программе
ExtractFilePath(Application->ExeName)+"my file.txt";
1
 Аватар для Кемаль
0 / 0 / 1
Регистрация: 02.11.2010
Сообщений: 38
29.05.2011, 22:38  [ТС]
Пытался сделать по аналогии с кодом, который зацитировал- не получается. Просто объясните мне на человеческом ( в моём случае- на русском ) языке, как это вообще будет происходить, ведь в ячейке нету никаких строк, разделить слова у меня, думаю, получится, а как их писать построчно- вот это даже представления не имею.
0
 Аватар для Кемаль
0 / 0 / 1
Регистрация: 02.11.2010
Сообщений: 38
31.05.2011, 19:59  [ТС]
разобрался)
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
31.05.2011, 20:01
Поделишься?
0
 Аватар для Кемаль
0 / 0 / 1
Регистрация: 02.11.2010
Сообщений: 38
31.05.2011, 21:25  [ТС]
Поделюсь). Помогите мне ещё с 1 штукой, я код переноса строк сейчас реализую ибо были ошибки ( выход за границу ячейки), у меня вторая проблема возникла.
в заголовочном файле первой формы задана структура как вы говорили, далее создан массив :
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
struct SheduleItem
    {
        AnsiString UpperWeekSubject;
        AnsiString LowerWeekSubject;
        AnsiString UpperWeekTeacher;
        AnsiString LowerWeekTeacher;
        int UpperWeekRoom;
        int LowerWeekRoom;
    };
    SheduleItem Value[6][9];
 
во второй форме, где считываются данные, я пытаюсь к ним обращаться, но чет ошибка
    if (Redact->W_type->Items->Strings[ind2]== "Верхняя")
    {
        Value[Shedule->StrGrid1->Col][Shedule->StrGrid1->Row].UpperWeekSubject=Redact->Subj->Text;
        Value[Shedule->StrGrid1->Col][Shedule->StrGrid1->Row].UpperWeekTeacher=Redact->Teacher->Text;
        Value[Shedule->StrGrid1->Col][Shedule->StrGrid1->Row].UpperWeekRoom=StrToInt(Redact->Audit->Text);
    }
    if (Redact->W_type->Items->Strings[ind2]== "Нижняя")
    {
        Value[Shedule->StrGrid1->Col][Shedule->StrGrid1->Row].LowerWeekSubject=Redact->Subj->Text;
        Value[Shedule->StrGrid1->Col][Shedule->StrGrid1->Row].LowerWeekTeacher=Redact->Teacher->Text;
        Value[Shedule->StrGrid1->Col][Shedule->StrGrid1->Row].LowerWeekRoom=StrToInt(Redact->Audit->Text);
    }

[BCC32 Error] Redact_T.cpp(31): E2451 Undefined symbol 'Value'
Full parser context
Redact_T.cpp(20): parsing: void _fastcall TRedact::AcceptClick(TObject *)
0
6 / 5 / 3
Регистрация: 04.06.2015
Сообщений: 250
Записей в блоге: 1
21.06.2017, 13:54
Если еще актуально. Выполнял перенос строк, длиннее ширины ячейки таким образом. В обработчик события OnDrawCell грида вставляем код:
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
   String Text;
   Text = StringGrid1->Cells[ACol][ARow];
   StringGrid1->Canvas->FillRect(Rect);
   DrawText(StringGrid1->Canvas->Handle, Text.c_str(), Text.Length(), &Rect, DT_WORDBREAK);
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2017, 13:54

Как осуществить авто-перенос строк в StringGrid в FireMonkey
Я знаю как это делать под Win32 а вот в FireMonkey всё так сложно, нет привычных методов. Всё обрыл нигде ничего не нашёл. Там и события ...

Поиск в компоненте StringGrid
Доброго времени суток! Дан код для поиска в компоненте memo: begin if pos (FindDialog1.FindText, memo1.Text)&lt;&gt;0 then begin...

Перенос столбца(информации) из StringGrid в другой StringGrid
Не могу разобраться с тем, как перенести значения(нажатием кнопки &quot;записать&quot;) выданные программой в 1 таблице,из крайнего столбца, во 2...

Перенос данных из одного StringGrid в другой StringGrid
Здравствуйте . Есть очередной вопрос с матрицами. Есть два StringGrid. В одном столбце первой матрицы есть цифровые значения. Есть Edit....

Поиск записей в компоненте StringGrid
ошибка в строчке 20... подскажите пожалуйста что не так? необходимо осуществить поиск записей в гриде по первому столбцу procedure...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru