Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.17;
Скачать: CL | DM;

Вниз

Новый class и его property   Найти похожие ветки 

 
BillyJeans ©   (2003-03-05 13:29) [0]

Создаю класс, который runtime создает форму с DBGrid, и никак не могу объявить свойство Columns, чтобы в палитре свойств можно было описывать столбцы создаваемого DBGrid....


 
Darlock   (2003-03-05 13:45) [1]

А в чем собственно проблема?


 
Dmitry Filippov ©   (2003-03-05 13:48) [2]


type
TMyGridColumnsProperty = class(TClassProperty)
public
procedure Edit; override;
function GetAttributes: TPropertyAttributes; override;
end;

TMyGridColumnsPropertyEditor = class(TComponentEditor)
public
procedure ExecuteVerb(Index: Integer); override;
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override;
end;

procedure TMyGridColumnsPropertyEditor.ExecuteVerb(Index: Integer);
begin
if Index < inherited GetVerbCount then
inherited ExecuteVerb(Index) else
begin
Dec(Index, inherited GetVerbCount);
case Index of
0 :ShowCollectionEditor(Designer, Component,
TMyGrid(Component).Columns, "Columns");
end;
end;
end;

function TMyGridColumnsPropertyEditor.GetVerb(Index: Integer): string;
begin
if Index < inherited GetVerbCount then
Result := inherited GetVerb(Index) else
begin
Dec(Index, inherited GetVerbCount);
case Index of
0: Result := "?aaaeoi? eieiiie...";
1 : Result := "Reid & K";
end;
end;
end;

function TMyGridColumnsPropertyEditor.GetVerbCount: Integer;
begin
Result := inherited GetVerbCount + 2;
end;

procedure TMyGridColumnsProperty.Edit;
begin
ShowCollectionEditorClass(Designer, TDBGridColumnsEditor,
GetComponent(0) as TComponent, TMyGridColumns(GetOrdValue), GetName);
end;

function TMyGridColumnsProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog, paReadOnly];
end;


procedure Register;
begin
RegisterPropertyEditor(TypeInfo(TMyGridColumns), TMyCustomDBGrid, "", TMyGridColumnsProperty);
RegisterComponentEditor(TMyCustomDBGrid, TMyGridColumnsPropertyEditor);
end;


 
Mike_Goblin ©   (2003-03-05 13:49) [3]

F1 TDBGridColumns
есть еще исходные тексты VCL и компонента TDBGrid, намек улавливаешь? :))))


 
BillyJeans ©   (2003-03-05 13:53) [4]

а вот не получается сделать так, чтобы в свойстве объявленных Columns можно было выбирать поле таблицы...


 
Dmitry Filippov ©   (2003-03-05 13:55) [5]

А таблица то есть


 
BillyJeans ©   (2003-03-05 14:12) [6]

в новом классе есть table, datasource и dbgrid...


 
BillyJeans ©   (2003-03-05 14:19) [7]

происходит следующая беда:
если в create класса пишу
FColumns := TDBGridColumns.Create(nil, TColumn);
то ругает на отсутствие owner;
если
FColumns := TDBGridColumns.Create(FDBGrid, TColumn);
то, при обращении к столбцу с индексом 1 вылетает Grid index out of range


 
Dmitry Filippov ©   (2003-03-05 14:28) [8]

попробуй FColumns:=TMyGrid.Columns;


 
BillyJeans ©   (2003-03-05 15:01) [9]

гы, а все и получилось!!!


 
BillyJeans ©   (2003-03-05 15:50) [10]

а если у у нового класса есть свойство FieldName, как сделать, чтобы в палитре выпадал список полей Table?



Страницы: 1 вся ветка

Текущий архив: 2003.03.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
9-53826
Николай Быков
2002-10-14 19:40
2003.03.17
Чего здесь не хватает?


14-54237
Antik
2003-02-28 09:45
2003.03.17
На тебе, боже, что нам не гоже или просто недержание?


1-54004
X3coder
2003-03-06 14:56
2003.03.17
Как событию присвоить действия?


7-54335
saff
2003-01-21 18:49
2003.03.17
Управление модемом


1-54100
REA
2003-03-05 17:30
2003.03.17
Разрешение TBitmap