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

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

Использование тэгов компонентов [D6, Win2k]


Сатир ©   (2002-06-10 15:29:00) 

У меня такая ситуация: на форме есть несколько компонентов разного типа, такие как: комбобокс, едит, солорбох, спин-едит(едит с со стандартным Ап-Даун счётчиком) и все эти компоненты я вляются настройками для обного вызуального компонента - таблицы.
То есть у тяблицы есть куча свойств разных типов. И при изменении каждой настройки нужно с каждим компонентом-свойством связывать обработчик, там онселект или ончендж. Этих свойств очень много и при ходится тупо связывать все эти свойства с компонентами. И в связи с этим у меня родилась идея написать общий обработчик для всех компонент и сделать это через теги, то есть чтоб тег указывал на соответсвующий тип в массиве и название свойства... Но как конкретно это сделать, у меня пока нет никаких идей, поэтому хочу спросить совета, что, где и в каких местах можно применить?
Предлагайте любые идеи.
с уважением.


Сатир   (2002-06-13 17:38:00) [1]

Короче, покопался я тут в исходниках одного платного пакетика и подсмотрел у них одну интересную идейку...
Выношу на общее расмотрение

procedure TRVTableItemInfo.AssignCellAttributes(ItemNo,Row, Col: Integer;
SourceCell: TRVTableCellData;IncludeSize: Boolean;
DivColSpan, DivRowSpan: Integer);
var ui: TRVUndoModifyCellIntProperties;
Cell: TRVTableCellData;
PropList: TStringList;
begin
Cell := Cells[Row,Col];
if FInserted and FEditMode then
try
if ItemNo=-1 then
ItemNo := GetMyItemNo;
Cell.VisibleBorders.Assign(SourceCell.VisibleBorders); // should be undone in future
PropList := TStringList.Create;
try
PropList.AddObject("Color", TObject(SourceCell.Color));
PropList.AddObject("BorderColor", TObject(SourceCell.BorderColor));
PropList.AddObject("BorderLightColor", TObject(SourceCell.BorderLightColor));
PropList.AddObject("VAlign", TObject(SourceCell.VAlign));
if IncludeSize then begin
PropList.AddObject("BestWidth", TObject(SourceCell.BestWidth div DivColSpan));
PropList.AddObject("BestHeight", TObject(SourceCell.BestHeight div DivRowSpan));
end;
TRVEditRVData(FRows.FMainRVData).BeginUndoSequence(rvutModifyItem);
ui := TRVEditRVData(FRows.FMainRVData).Do_ModifyItemIntProperties(
ItemNo, Cell, PropList,
IncludeSize, IncludeSize, TRVUndoModifyCellIntProperties) as TRVUndoModifyCellIntProperties;
if ui<>nil then begin
ui.Row := Row;
ui.Col := Col;
end;
finally
PropList.Free;
end;
finally
FInserted := True;
end
else begin
Cells[Row,Col].AssignAttributesFrom(SourceCell, IncludeSize, DivColSpan, DivRowSpan);
end;
FModified := True;
end;


Наверх

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