| 
| 
 | Вопрос # 1 877/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!
 Скажите пжлста почему не раскрывается ComboBox, который я создаю на StringGride? Он вроде пытается раскрыться, показывает мелкую полоску снизу и все.
 А если создаю на форме, то все ок.
 Код в приложении
 Приложение:Переключить в обычный режим procedure TForm1.Button1Click(Sender: TObject);var cmb: TComboBox;begin StringGrid1.ColWidths[0] := 160; StringGrid1.RowHeights[0] := 80;  cmb:=TComboBox.Create(Form1);// cmb:=TComboBox.Create(StringGrid1); cmb.Name := 'MyCmb1';  cmb.Parent := StringGrid1;// cmb.Parent := Form1; cmb.DropDownCount := 8; cmb.Style := csDropDown; cmb.Height := 30; cmb.Width := 100; cmb.Left := StringGrid1.CellRect(0,0).Left+20; cmb.Top := StringGrid1.CellRect(0,0).Top+20; cmb.Items.Add('item 1'); cmb.Items.Add('item 2'); end; 
|  |   Вопрос задал: Muratov Radik (статус: Посетитель)Вопрос отправлен: 5 сентября 2008, 16:04
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 12; последнее сообщение — 7 сентября 2008, 15:43; участников в обсуждении: 4. 
|   | Вадим К (статус: Академик), 5 сентября 2008, 16:10 [#1]:Вообще то он должен раскрыться. Но попробуйте ещё убрать строку
 cmb.Height := 30;
 В случае с combobox она малось бессмысленная. Попробуйте на отдельном приложении и поймёте почему. Если нет, раскажу отдельно.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Feniks (статус: Бакалавр), 5 сентября 2008, 16:40 [#2]:На сколько я помню, у него есть свойства: DropDownCount - отвечающее за количество раскрываемых строк в списке;
 ItemHeight - и их высоту. Может из-за них глюки...
 |  
|   | Muratov Radik (статус: Посетитель), 5 сентября 2008, 16:52 [#3]:Пробовал убрать cmb.Height := 30; не помогло. Помогло задание cmb.Height заведомо больше, напрмер 100.
 Изменение DropDownCount также никагого эффекта не дает
 |  
|   | Мережников Андрей (статус: Абитуриент), 5 сентября 2008, 17:32 [#4]:у меня подобная проблема возникала при использовании DBLookUpComboBox. При попытке раскрыть список - показывалась одна строчка из всего списка. Проблема была решена последовательным присваиванием ItemIndex сначала последнего значения в списке, затем первого. |  
|   | Muratov Radik (статус: Посетитель), 6 сентября 2008, 13:58 [#5]:Люди добрые! А может подскажете еще как избавляться от следов, которые остаются при перемещении по таблице от этих ComboBoxов. А то складывается ощущение, что они везде, и что самое интересное, если в эти "следы" тыкнуть, то они раскрываются как настоящие и значение дает выбрать
 |  
|   | Вадим К (статус: Академик), 6 сентября 2008, 14:30 [#6]:Ну логично, посмотрите на свой код. Вы же на каждый клик создаёте комбобокс. Надо либо удалять за собой, либо банально не создавать каждый раз новый - просто пересовываем и всех делов. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 6 сентября 2008, 14:32 [#7]:Но я же создаю n-ое кол-во боксов по нажатию на кнопку, а при перемещении по таблице ничего же не создаю |  
|   | Вадим К (статус: Академик), 6 сентября 2008, 16:33 [#8]:Стоп. а таблицу вы прокручиваете? у неё есть полосы прокрутки? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 7 сентября 2008, 13:05 [#9]:Да, прокрутка есть. |  
|   | Вадим К (статус: Академик), 7 сентября 2008, 14:07 [#10]:Ну вот, а комбобоксы то о прокрутке ничего не знают.... Они остаются на своих местах 
 Вообще то эта задача решается немного другим способом. В нужных клетках рисуется только кнопка с треугольником. А вот комбобокс создаётся только в момент нажатия оной.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Muratov Radik (статус: Посетитель), 7 сентября 2008, 14:37 [#11]:Это получается то же самое только вид сбоку. А эти кнопки тоже нужно ведь перерисовывать при прокрутке. А можно как-то решить эту проблему? |  
|   | Вадим К (статус: Академик), 7 сентября 2008, 15:43 [#12]:Это не тоже,  во первых ресурсов потребляется меншь. Во вторых есть события, которые вызываются при прокрутке. Но отрисовывать лучше в OnDrawCell. 
 Но вообще, рекомендую не мучиться, ни изобретать велосипеды, а воспользоваться компонентовм TJvStringGrid с бесплатной библиотеки JVCL (гугл быстро подкажет, где качать).
 Что бы заработало, надо выставить в Options goEditing плюс пару других по вкусу.
 Теперь осталось дописать главное - событие OnGetEditStyle(Sender: TJvStringGrid; AColumn,
 ARow: Integer; PickListStrings: TStrings; var EditStyle: TEditStyle);
 Свойства просты.
 AColumn, ARow: координаты ячейки, для которой было вызвано собитие - то есть, для этой ячейки можно показать редактор.
 PickListStrings: - список строк, которые будут показаны, если раскроется. заполнять просто PickListStrings.add('строка'); Только если EditStyle = esPickList
 EditStyle - какая именно кнопка появиться. Есть такие варианты.
 esSimple - ничего не поменяется (на самом деле - просто обычный редактор)
 esEllipsis - кнопка с троеточием. В случае нажатия срабатывает событие OnEditButtonClick.
 esPickList - появиться кпопка с треугольником. При нажатии появиться список, содержимое которого можно наполнить в PickListStrings.
 Интересным в этой ситуации будет событие OnListBoxCloseUp - оно вызывается тогда, когда список закрывается.
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |