-
Скажите, пожалуйста, с помощью какой компоненты можно работать в ячейке StringGrid с разлиными объектами. Пример: нужно в ячейки расположить три строки, которые будут по выбору изменяться, но проблема в том, что в ячейки запись идет строкой в 255 символов.
-
> Скажите, пожалуйста, с помощью какой компоненты можно работать
> в ячейке StringGrid с разлиными объектами.
Обрабатывать события захода в ячейку и выводить в эту область свой элемент управления. TControlGrid вроде в D6 ещё не появилась.
-
поставил Delphi 7. TControlGrid не нахожу. есть только DBCtrlGrid, но работаю не с БД. Может чего не понимаю, но всё таки....в какой закладке у Вас она находится, для начала...
P.S. Событие захода в ячейку - это какое? :) Спасибо.
-
> есть только DBCtrlGrid, но работаю не с БД
А БД для этого и не нужна.
-
> поставил Delphi 7.
В TurboDelphi/D2006 точно есть.
> P.S. Событие захода в ячейку - это какое? :)
OnClock OnKeyDown. Помню ComboBox у меня однозначно хорошо влезал.
-
> брабатывать события захода в ячейку и выводить в эту область
> свой элемент управления.
а как добавлять свой элемент по ходу выполнения программы? допустим:
procedure TSostoyaniya.StringGrid3SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
label1.Caption:=inttostr(ARow);
label2.Caption:=inttostr(ACol);
end;
что нужно добавить в код, чтобы в выбранной ячеки появилось сверху вних три Label?
-
Определить координаты ячейки StringGrid и поместить их туда. Можно также фрэйм попробовать. А не проще в JVCL пошарить, там что-то такое было, я не помню уже что в D7 из контролов хорошего.
-
> Определить координаты ячейки StringGrid и поместить их
> туда
они оказываются на "втором" плане и другие компоненты (в данном случае ListBox просто не видно).
-
> они оказываются на "втором" плане и другие компоненты (в
> данном случае ListBox просто не видно).
parent выставляй. Работает точно, просто делалось лет 5 назад, щас уже не помню как и что в деталях.
-
> Leon161 (02.04.08 15:48) [5]
> что нужно добавить в код, чтобы в выбранной ячеки появилось
> сверху вних три Label?
Если надо просто отобразить - то, на мой взгляд, будет правильнее либо в текст вводить #13 для обозначения новой с строки, тогда оно при выводе разобъется, либо ручками отрисовать эти 3 строки в OnDrawCell как хочется, что тоже просто.
А вот при редактировании - это другое дело. Тут Edit радо подставлять в нужное место, вероятно срязу 3 будет легче в реализации, пока не начнем озабачиваться проблемой корректной навигации кравишами. Вот тут уже наверное станет проще один дополнительный Edit использовать.
-
всем спасибо, проблема решена.
-
> всем спасибо, проблема решена.
как?
-
>как?
Верятно, забитием на таком способе построения интерфейса
-
Зачем же в ячейку пихать лэйблы? Если нужен многострочный текст, есть чудестная ф-ция DRawText. Она может рисовать многострочный текст, если выставить флаг DT_WORDBREAK. Форматирует, как нужно и т. д. Зачем же с метками извращаться? Ведь при этом ячейки могут быть изменяетмых размеров. Тогда DRawText нормально отрисует текст под новый размер, а метка что сделает?