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

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

Проблема с событием OnPaint :( [D7, Win95/98, Win2k, WinXP]


Sun bittern ©   (2004-06-15 08:04:00) 

Доброго дня уважаемые!
У возникла следующая проблемка. Имеем наследника от TCustomTabControl т.е. почти стандартный TPageControl только его TTabShet являются TScrollBox. Так вот в методе Paint класса нашего так сказать TTabShet имеем следующее:

procedure TETSDesignerTabSheet.Paint;
 var
   I, J: Integer;
begin
 with Canvas do
 begin
   Lock;
   try
     FillRect(ClipRect);
     for I := 0 to Width div 4 do
       for J := 0 to Height div 4 do
         Pixels[I * 4, J * 4] := clBlue;
   finally
     Unlock;
   end;
 end;
 if Assigned(FOnPaint) then FOnPaint(Self);
end;

Как вроде ни чего сложного, но, создаем данную страничку в приложении динамически (в Run Time):

 var
   A: TETSDesignerTabSheet;
   B: TRichEdit;
begin
 A := TETSDesignerTabSheet.Create(ETSDesignerPageControl1);
 B := TRichEdit.Create(ETSDesignerPageControl1);
 B.Parent := A;
 B.Name := 'sdssd';
 B.Left := 10;
 B.Top := 10;
 with a do
 begin
   PageControl := TETSDesignerPageControl(ETSDesignerPageControl1);
   Name := 'A';
   Caption := 'AAA';
   ETSDesignerPageControl1.ActivePage := a;
 end;
end;

На данной вновь созданной страничке все нормально перерисовывается, но если даную страничку создать в Design Time, то на вновь созданной страничке сетка не перерисовывается. В чем может быть проблема? Заранее благодарствуем за помошь и намеки.
Кстати вот код для создания странички в Design Time

procedure TETSDesignerPageControlEditor.ExecuteVerb(Index: Integer);
 var
   ts : TETSDesignerTabSheet;
begin
 case Index of
   0:
     begin
       ts := TETSDesignerTabSheet.Create(Designer.Root);
       ts.PageControl := TETSDesignerPageControl(Component);
       ts.Name := Designer.UniqueName('ETSTabSheet');
       ts.Caption := ts.Name;
       TETSDesignerPageControl(Component).ActivePage := ts;
       Designer.SelectComponent(ts);
     end;
   1:
     with TETSDesignerPageControl(Component) do
     begin
     if PageCount > 0 then
       if ActivePageIndex < PageCount - 1 then
         ActivePageIndex := ActivePageIndex + 1;
     end;
   2:
     with TETSDesignerPageControl(Component) do
     begin
     if PageCount > 0 then
       if ActivePageIndex > 0 then
         ActivePageIndex := ActivePageIndex - 1;
     end;
   3: TETSDesignerPageControl(Component).ActivePage.Free;
 end;
end;


Sun bittern   (2004-06-16 13:37:00) [1]

Сам разобрался :)


Наверх

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