C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TStringGrid
Michail
  Отправлено: 04.06.2004, 13:34


Не зарегистрирован







Реально сделать выпадающий список из ячейки TStringGrid ?
AVC
Отправлено: 04.06.2004, 13:40


Ветеран

Группа: Модератор
Сообщений: 1583



Да
Michail
  Отправлено: 04.06.2004, 13:44


Не зарегистрирован







.... , а как ?
olegenty
Отправлено: 04.06.2004, 13:50


Ветеран

Группа: Модератор
Сообщений: 2412



1. создавать комбу, рисовать её поверх ячейки, а после выбора передавать значение комбы в ячейку. в качестве постижения основ работы VCL — невредное занятие, очень развивает
2. воспользоваться TAdvStringGrid, где всё это вшито в самую середину smile.gif
Michail
  Отправлено: 04.06.2004, 14:15


Не зарегистрирован







...........
case VK_SPACE:
{
if(Shift.Contains(ssCtrl)&&grFields->Col==2)
{
TRect rect;
rect=grFields->CellRect(grFields->Col,grFields->Row);
lbxTypes->Top=(rect.top)+grFields->Top;
lbxTypes->Left=(rect.left)+grFields->Left;

lbxTypes->Visible=true;
lbxTypes->SetFocus();
}
}break;
.......

о как !
MDM
Отправлено: 08.06.2004, 09:32


Не зарегистрирован







QUOTE (olegenty @ 04/06/2004, 14:52)
1. создавать комбу, рисовать её поверх ячейки, а после выбора передавать значение комбы в ячейку. в качестве постижения основ работы VCL — невредное занятие, очень развивает
2. воспользоваться TAdvStringGrid, где всё это вшито в самую середину  smile.gif

1. Так делать не надо т. к.:
- ComboBox будет смотреться в ячейке довольно по "уродски" из-за своего бордюда (или надо переустановить стиль бордюра);
- при нахождении ComboBox-а в нижних ячейках выпадающий список будет "съеден" гридом (или нужно устанавливать стиль WS_POPUP).
- выбор значения возможен только из выпадающего списка.
Нужно сделать следующее:
- создать форму со стилем WS_POPUP, без кнопок макс/мин и т. п. Это будет основа для выпадающего списка на которую можно будет поместить не только ListBox, но и TreeView, ListView и вообще несколько елементов;
- кнопку выпадающего списка нужно просто нарисовать (все состояния нет/нажата/отжата);
- отображать форму при MouseDown на кнопке выпадающего списка
и т. д.
2. пользоваться TAdvStringGrid не нужно слишком "жирный". Если есть исходный код, то можно посмотреть как у них сделано и повторить у себя.
Gedeon
Отправлено: 08.06.2004, 10:22


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (MDM @ 08/06/2004, 10:34)
QUOTE (olegenty @ 04/06/2004, 14:52)
1. создавать комбу, рисовать её поверх ячейки, а после выбора передавать значение комбы в ячейку. в качестве постижения основ работы VCL — невредное занятие, очень развивает
2. воспользоваться TAdvStringGrid, где всё это вшито в самую середину smile.gif

1. Так делать не надо т. к.:
- ComboBox будет смотреться в ячейке довольно по "уродски" из-за своего бордюда (или надо переустановить стиль бордюра);
- при нахождении ComboBox-а в нижних ячейках выпадающий список будет "съеден" гридом (или нужно устанавливать стиль WS_POPUP).
- выбор значения возможен только из выпадающего списка.
Нужно сделать следующее:
- создать форму со стилем WS_POPUP, без кнопок макс/мин и т. п. Это будет основа для выпадающего списка на которую можно будет поместить не только ListBox, но и TreeView, ListView и вообще несколько елементов;
- кнопку выпадающего списка нужно просто нарисовать (все состояния нет/нажата/отжата);
- отображать форму при MouseDown на кнопке выпадающего списка
и т. д.
2. пользоваться TAdvStringGrid не нужно слишком "жирный". Если есть исходный код, то можно посмотреть как у них сделано и повторить у себя.

По поводу 1 — как юзать стандартные элементы — выбор конкретно самого разработчика.
По поводу 2 — жирность не всегда помеха, тут надо на ТЗ смотерть biggrin.gif .
И вообще вопрос был задан без конкретного уточнения на какие-либо ограничения, поэтому я не вижу смысла в столь категоричных заявлениях, как у Вас.
MDM
Отправлено: 08.06.2004, 10:52


Не зарегистрирован







QUOTE (Gedeon @ 08/06/2004, 11:24)
По поводу 1 — как юзать стандартные элементы — выбор конкретно самого разработчика.
По поводу 2 — жирность не всегда помеха, тут надо на ТЗ смотерть biggrin.gif .
И вообще вопрос был задан без конкретного уточнения на какие-либо ограничения, поэтому я не вижу смысла в столь категоричных заявлениях, как у Вас.

1. Ответ на вопрос:
- Можно-ли создать в ячейке TStringGrid выпадающий список?
- Да.
Скажем так — не полный. Тем более если нет ограничений, если есть отвечай по существу.
2. Обещаю больше не трогать TAdvStringGrid.

Вернуться в Вопросы программирования в C++Builder