![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TStringGrid.Objects [D5, Win95/98]
roman001 © (2002-04-18 18:32:00)Прочитал в Helpe про св-во Objects для каждой ячейки StringGrid.
По моему разумению значит, что в лубую ячейку можно вставить любой объект????? Да бог с ним с любым, не пожалейте кусок кода, которым можно вставить туда например CheckBox, а то я замаялся
Wasp (2002-04-18 20:02:00) [1]Я надеюсь, вы понимаете, что этот checkbox (т.е. Objects[1,1]) должен быть создан где-нибудь, скажем в конструкторе формы
procedure TForm1.FormCreate(Sender: TObject);
begin
with SG1 do
begin
Objects[1,1] = TCheckBox1.Create(NIL);
end;
end;
roman001 (2002-04-18 19:42:00) [2]Вообщето именно checkboxа в ячейке я и ожидал, а иначе какой смысл?
SG1.(Objects as TWinControl).PaintTo SG1.Canvas.Handle,Rect.Left,Rect.Top); - не компилиться,
(SG1.Objects[1,1] as TCheckBox).PaintTo(SG1.Canvas.Handle,Rect.Left,Rect.Top); - компилиться, но в run time дает AccessViolation.
Wasp (2002-04-18 19:29:00) [3]Основная задача StringGrid"а отображать текстовые данные, а уж от степени мастерства программиста зависит дополнительная функциональность. Кстати, в хелпе ни слова ни сказано о том, что Objects как-то отображаются, они просто привязаны к ячейке, причем не косвенно (черезы индексы в массивах) и эти объекты можно использовать, но делать это должен сам программист.
roman001 (2002-04-18 19:17:00) [4]Вообщето именно checkboxа в ячейке я и ожидал, а иначе какой смысл?
Wasp (2002-04-18 19:01:00) [5]Здесь речь идет не о том, что привязав любой объект к ячейке, вы тут же увидите этот объект внутри ячейки. Массив Objects - это просто указатели и все. Для прорисовки, скажем CheckBox, привязанного к ячейке[m,n], вам надо повесить обработчик на OnDrawCell и в нем вызвать
if ACol=m and ARow=n then
SG1.(Objects as TWinControl).PaintTo(SG1.Canvas.Handle,Rect.Left,Rect.Top);
Reindeer Moss Eater (2002-04-18 18:53:00) [6]
StringGrid1.Objects[0,0]:=CheckBox1;
PS надеюсь ты не ожидаешь увидеть после этого checkbox в ячейке (0.0)?