Давайте начнем с основ и продолжим наш путь.
Вот пример определения структуры:
struct point
{
int x, y;
};
Здесь имя point
является необязательным.
Структура может быть объявлена во время ее определения или после.
Объявление во время определения
struct point
{
int x, y;
} first_point, second_point;
Объявление после определения
struct point
{
int x, y;
};
struct point first_point, second_point;
Теперь внимательно обратите внимание на последний случай выше; вам нужно написать struct point
для объявления структур этого типа, если вы решите создать этот тип на более позднем этапе вашего кода.
Введите typedef
. Если вы намереваетесь создать новую структуру (структура - это пользовательский тип данных) позднее в вашей программе, используя ту же схему, использование typedef
во время ее определения может быть хорошей идеей, поскольку вы можете сохранить некоторую типизацию в дальнейшем.
typedef struct point
{
int x, y;
} Points;
Points first_point, second_point;
Ничто не мешает вам использовать суффикс _t в конце имени вашего пользовательского типа, но стандарт POSIX оставляет за собой использование суффикса _t для обозначения стандартного типа библиотеки. имена.
Это чтение-запись или только чтение? Если он доступен только для чтения, вероятно, будет не так уж сложно написать это самостоятельно. (Plug: у меня есть элемент управления, который я могу куда-нибудь загрузить, если нужно :)
Вы можете использовать событие OnPaint
и использовать разные кисти и перья с прямоугольниками и текстом.
Это для сетки или это 300 полей в форме с одной записью? Потому что если это для формы, я бы предположил, что есть проблема с вашим дизайном.
Если вам это нужно в сетке, рассмотрите вариант подкачки . Решение с разбивкой на страницы позволит вашим пользователям прокручивать записи, и вы все равно можете использовать расширенное текстовое поле, потому что количество форматированных текстовых полей будет ограничено количеством записей, отображаемых на текущей странице.