Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Список фреймов / панелей [D7]


UserControl ©   (2006-11-24 06:01:00) 

Есть ли решения? Нужен быстрый список / грид контролов (фреймов, к примеру, или панелей, с различным интерактивным контентом). Визуализация максимум 150-200 контролов в списке.

Пробовал делать в виде TScrollBox + TPanel (с кучей лейблов / пиктограмм на них + Align = alTop). Получается довольно тормознуто, так как создавать приходится кучу контролов (которые в добавок с БД связаны) в run-time.

Идеальный вариант был бы именно список фреймов...

На торри ничего интересного не обнаружил.

Подвести функционал того же VirtualTreeView под задачу - не удобно. Писать с нуля по времени практически нереально.

Видел отличное решение в VS2005 (Syncfusion components, вроде бы), там ячейки в гриде были UserControls + DataBinding и прочие фишки - все было мега-удобно. Но решать задачу надо в дельфях, портирование кода невозможно из-за подвязки на дотнете.

Прошу вас, помогите!


Чапаев   (2006-11-25 09:51:00) [1]

Знакомый похожим образом делал, у него были какие-то странные трудноотлавливаемые глюки при обработке событий контролов, у которых Parent=StringGrid.


UserControl   (2006-11-24 18:26:00) [2]

Elen ©   (24.11.06 08:49) [1]
Спасибо!


Elen   (2006-11-24 08:49:00) [3]


> UserControl

Могу предложить следующее : Создай Frame накидай на него контролы, а потом на форме размести грид и пропиши вот это :


procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);

begin
if   StringGrid1.Objects [acol,arow]=nil then begin
  StringGrid1.Objects [acol,arow]:=Tframe2.Create(stringgrid1);
  TFrame2(StringGrid1.Objects [acol,arow]).Name:='frm'+inttostr(acol)+inttostr(arow);
  TFrame2(StringGrid1.Objects [acol,arow]).Parent :=StringGrid1;
  TFrame2(StringGrid1.Objects [acol,arow]).Top:=rect.Top;
  TFrame2(StringGrid1.Objects [acol,arow]).Left:=rect.Left;
  StringGrid1.ColWidths[acol] :=TFrame2(StringGrid1.Objects [acol,arow]).Width+10;
  StringGrid1.RowHeights[arow]:=TFrame2(StringGrid1.Objects [acol,arow]).Height+10;

  TFrame2(StringGrid1.Objects [acol,arow]).Visible:=true;
end;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо