Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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.04 c
9-1127832954
Chuvak
2005-09-27 18:55
2006.04.16
Эффекты и синхронизация в OpenGL


2-1143691956
vegarulez
2006-03-30 08:12
2006.04.16
Подскажите плиз.... как загружать рисунок на форму?


15-1142841744
Layner
2006-03-20 11:02
2006.04.16
Прослушал тут курсы C#...


4-1138015760
Kremen
2006-01-23 14:29
2006.04.16
SendInput


2-1143801734
alex_pv2
2006-03-31 14:42
2006.04.16
Подсчет символов в текстовом файле





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский