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

Вниз

Когда вызывается 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
2-1143980731
Khim
2006-04-02 16:25
2006.04.16
Нажатие кнопок меню на TAppBuilder


15-1143447194
Boogier
2006-03-27 12:13
2006.04.16
Не могу скачать Update для Delphi 7.


2-1144240656
Студентик
2006-04-05 16:37
2006.04.16
Топологическая сортировка


2-1143649954
tort
2006-03-29 20:32
2006.04.16
Как установить коррдинаты курсора в МЕМО?


15-1143184320
Sergey13
2006-03-24 10:12
2006.04.16
"Устами младенца" или "Говорят дети"