Форум: "Компоненты";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
ВнизКогда вызывается TCustomControl.Paint если компонент из *.dfm Найти похожие ветки
← →
auz (2005-10-14 00:05) [0]Суть в следующем написал я компонент внук TCustomControl - TCoolStringGrid, в свою очередь он включает в себя наследников от того же TCustomControl - TSimpleStringGrid и 2 TCollScrollBar"a.
В отладке все было нормально. (Т.е. когда исходники просто добавляются в обычный проект и создаваемый компонент динамически создается на форме).
Проблемы начались после того как зарегистрировал компонент:
Кладем созданный компонент на форму.
В design time все до сих пор нормально.
А вот после того как запускаем наш проект 2 TCollScrollBar"a не отображаются. Более того их метод Paint даже никогда не вызывается.
Когда вызывается Paint если компонент из dfm?
Никто ни с чем подобным не сталкивался?
P.S. Буду благодарен за любые идеи или ссылки.
← →
Юрий Зотов © (2005-10-14 01:55) [1]> Когда вызывается Paint если компонент из dfm?
Независимо от того, где находится потомок TCustomControl, его метод Paint вызывается всякий раз, когда компоненту требуется перерисовка.
Проблема, похоже, не в этом, а в том, что дочерние компоненты (TSimpleStringGrid и 2 TCollScrollBar"a) просто не сохраняются в DFM. Чтобы проверить это, положите на форму Ваш компонент и просмотрите ее, как текст - есть ли в DFM эти компоненты?
Результат сообщите, попытаемся разобраться. Само собой, потребуется код (для начала - полные объявления Ваших классов, а дальше будет видно).
← →
auz (2005-10-14 18:04) [2]:-). Как ни старался не смог полностью описать суть проблемы :-(.
2ЮрийЗотов: Действительно в dfm - хранятся только те свойства, которые я вывел на поверхность компонента-контейнера.
Но! Вообще, в принципе, мне остальные свойства, как бы хранить и не надо -если при прорисовке TCoolStringGrid становится понятно что необходимы скроллы, TCoolStringGrid посылает сообщения об этом. Он же выставляет значения параметров для скроллов.
Я проверял скроллбары стали Visible, но их Paint не вызывался!
Заголовки классов:
TRoundCustomGrid = class(TRoundCustomControl)
private
{ Private declarations }
FHorzScroll:TCollScrollBar;
FVertScroll:TCollScrollBar;
procedure SetRegions;
procedure TurnHorzScrollBar(isOn:boolean);
procedure TurnVertScrollBar(isOn:boolean);
procedure SGGetScrollPos(var Message: TMessage); message SG_GetScrollPos;
procedure SGSetScrollPos(var Message: TMessage); message SG_SetScrollPos;
procedure SGGetScrollRange(var Message: TMessage); message SG_GetScrollRange;
procedure SGSetScrollRange(var Message: TMessage); message SG_SetScrollRange;
procedure WMVScroll(var Message:TMessage); message WM_VScroll;
procedure WMHScroll(var Message:TMessage); message WM_HScroll;
function GetRowCount: integer;
procedure SetRowCount(const Value: integer);
function GetColCount: integer;
procedure SetColCount(const Value: integer);
protected
FCustomGrid:TExCustomGrid;
procedure CreateWnd; override;
procedure Resize; override;
procedure Paint; override;
property RowCount:integer read GetRowCount write SetRowCount;
property ColCount:integer read GetColCount write SetColCount;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ Public declarations }
end;
TRoundDrawGrid = class(TRoundCustomGrid)
private
function GetDrawGrid: TExDrawGrid;
function GetDefaultColWidth: integer;
function GetDefaultRowHeight: integer;
function GetFixedCols: integer;
function GetFixedRows: integer;
function GetGridLineWidth: integer;
procedure SetDefaultColWidth(const Value: integer);
procedure SetDefaultRowHeight(const Value: integer);
procedure SetFixedCols(const Value: integer);
procedure SetFixedRows(const Value: integer);
procedure SetGridLineWidth(const Value: integer);
property FExDrawGrid:TExDrawGrid read GetDrawGrid;
function GetDefaultDrawing: Boolean;
function GetOnClick: TNotifyEvent;
function GetOnDblClick: TNotifyEvent;
function GetOnDrawCell: TDrawCellEvent;
function GetOnSelectCell: TSelectCellEvent;
function GetOnTopLeftChanged: TNotifyEvent;
function GetOptions: TGridOptions;
function GetScrollBars: TScrollStyle;
procedure SetDefaultDrawing(const Value: Boolean);
procedure SetOnClick(const Value: TNotifyEvent);
procedure SetOnDblClick(const Value: TNotifyEvent);
procedure SetOnDrawCell(const Value: TDrawCellEvent);
procedure SetOnSelectCell(const Value: TSelectCellEvent);
procedure SetOnTopLeftChanged(const Value: TNotifyEvent);
procedure SetOptions(const Value: TGridOptions);
procedure SetScrollBars(const Value: TScrollStyle);
published
property DefaultColWidth:integer read GetDefaultColWidth
write SetDefaultColWidth;
property DefaultRowHeight:integer read GetDefaultRowHeight
write SetDefaultRowHeight;
property FixedCols:integer read GetFixedCols write SetFixedCols;
property FixedRows:integer read GetFixedRows write SetFixedRows;
property GridLineWidth:integer read GetGridLineWidth write SetGridLineWidth;
property ColCount;
property RowCount;
property Visible;
property DefaultDrawing: Boolean read GetDefaultDrawing
write SetDefaultDrawing default True;
property Options: TGridOptions read GetOptions write SetOptions
default [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine,
goRangeSelect];
property ScrollBars: TScrollStyle read GetScrollBars
write SetScrollBars
default ssBoth;
property OnClick: TNotifyEvent read GetOnClick write SetOnClick;
property OnDblClick: TNotifyEvent read GetOnDblClick write SetOnDblClick;
property OnDrawCell: TDrawCellEvent read GetOnDrawCell write SetOnDrawCell;
property OnSelectCell: TSelectCellEvent read GetOnSelectCell
write SetOnSelectCell;
property OnTopLeftChanged: TNotifyEvent read GetOnTopLeftChanged
write SetOnTopLeftChanged;
end;
TRoundStringGrid = class(TRoundDrawGrid)
private
FStringGrid:TExStringGrid;
function GetCols(Index: Integer): TStrings;
function GetObjects(ACol, ARow: Integer): TObject;
function GetRows(Index: Integer): TStrings;
procedure SetCols(Index: Integer; const Value: TStrings);
procedure SetObjects(ACol, ARow: Integer; const Value: TObject);
procedure SetRows(Index: Integer; const Value: TStrings);
protected
function GetCells(ACol, ARow: Integer): string;
procedure SetCells(ACol, ARow: Integer; const Value: string);
public
procedure CreateObject; override;
property Cells[ACol, ARow: Integer]: string read GetCells write SetCells;
property Cols[Index: Integer]: TStrings read GetCols write SetCols;
property Objects[ACol, ARow: Integer]: TObject read GetObjects write SetObjects;
property Rows[Index: Integer]: TStrings read GetRows write SetRows;
published
property RowCount;
property ColCount;
end;
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c