Anchors и динамические объекты

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Anchors и динамические объекты

Сообщение GAMER » 12.12.2013 21:46:31

Есть такой код:
Код: Выделить всё
   PanelDyn:=TPanel.Create(FrmAnketa);
   PanelDyn.Name:='Panel_'+IntToStr(i);
   PanelDyn.Parent:=ScrollBox1;
   PanelDyn.Color:=clScrollBar;
   PanelDyn.Top:=100;
   PanelDyn.Height:=25;
   PanelDyn.AnchorSideLeft.Control:=ScrollBox1;
   PanelDyn.AnchorSideRight.Control:=ScrollBox1;
   PanelDyn.AnchorSideRight.Side:=asrBottom;
   PanelDyn.Anchors:=[akTop,akLeft,akRight];
   PanelDyn.AnchorSideLeft.Control := ScrollBox1;
   PanelDyn.AnchorSideRight.Control := ScrollBox1;
   PanelDyn.AnchorSideRight.Side := asrBottom;
   PanelDyn.Font.CharSet := RUSSIAN_CHARSET;
   PanelDyn.Font.Color := clBlack ;
   PanelDyn.Font.Height := -19 ;
   PanelDyn.Font.Name := 'Times New Roman';
   PanelDyn.Font.Pitch := fpVariable;
   PanelDyn.Font.Quality := fqDraft;
   PanelDyn.Font.Style := [fsBold];
   PanelDyn.ParentColor := False;
   PanelDyn.ParentFont := False;
   PanelDyn.Visible:=True;

   StringGridDyn:=TStringGrid.Create(FrmAnketa);
   with StringGridDyn do
   begin
   Name:='StringGrid_'+IntToStr(i);
   Parent:=ScrollBox1;
   AnchorSideLeft.Control := ScrollBox1;
   AnchorSideTop.Control := (FindComponent('Panel_'+IntToStr(i)) as TPanel);
   AnchorSideTop.Side := asrBottom;
   AnchorSideRight.Control := ScrollBox1;
   AnchorSideRight.Side := asrBottom;
   Anchors := [akTop, akLeft, akRight];
   AutoFillColumns := True;
      Left := 0;
      Height := 86;
//      Top := 239;
      Width := 850;
   Columns.Add;
   Columns.Add;
   with Columns[0] do
          begin

          Alignment := taCenter;
          Font.CharSet := RUSSIAN_CHARSET;
          Font.Color := clBlack;
          Font.Height := -16;
          Font.Name := 'Times New Roman';
          Font.Pitch := fpVariable;
          Font.Quality := fqDraft;
          Font.Style := [fsBold];
          SizePriority := 0;
          Title.Caption := ' ';
          Title.Color := 16777034;
          Width := 25;
        end;
     with Columns[1] do
          begin
          Font.CharSet := RUSSIAN_CHARSET;
          Font.Color := clBlack;
          Font.Height := -15;
          Font.Name := 'Times New Roman';
          Font.Pitch := fpVariable;
          Font.Quality := fqDraft;
          Font.Style := [fsBold, fsItalic];
          Title.Caption := ' ';
          Title.Color := 16777034;
          Width := 821;
        end;
      FixedCols := 0;
      FixedRows := 0;
      RowCount := 2;
      ScrollBars := ssNone;
      TitleFont.CharSet := RUSSIAN_CHARSET;
      TitleFont.Color := clBlack;
      TitleFont.Height := -13;
      TitleFont.Name := 'Times New Roman';
      TitleFont.Pitch := fpVariable ;
      {ColWidths := (
        25,
        821
      );}
   end; //stringgrid   


Не привязывается стринггрид к панел.
Код: Выделить всё
   AnchorSideTop.Control := (FindComponent('Panel_'+IntToStr(i)) as TPanel);

Если же писать так
Код: Выделить всё
AnchorSideTop.Control := Panel0
,
где Panel0 - брошеный на форму панел, то привязки работают. Это баг или я не правильно делаю?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Anchors и динамические объекты

Сообщение alexs » 13.12.2013 09:46:03

панель не находит?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Anchors и динамические объекты

Сообщение GAMER » 13.12.2013 11:11:04

Да.
И как задать размер зазора с соседом?

Добавлено спустя 2 часа 43 минуты 33 секунды:
Наблюдение. Вынес код для привязок в подпрограму при нажатии на кнопку. Тогда привязки срабатывают.
Такое ощущение, что в момент создания объекта я что-то упускаю и в том коде он еще не создается.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Anchors и динамические объекты

Сообщение MiniQ » 13.12.2013 15:40:15

Перенеси этот код из конструкстора в OnCreate,
и действия будут происходить, после того, как объект уже создан.
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55

Re: Anchors и динамические объекты

Сообщение GAMER » 13.12.2013 15:59:18

А размер зазора как задать?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Anchors и динамические объекты

Сообщение MiniQ » 13.12.2013 20:41:01

aObject.BorderSpacing.Around
[top, Bottom, Left, Right, Top]
посмотри исходники, там все есть )
MiniQ
новенький
 
Сообщения: 81
Зарегистрирован: 28.01.2013 16:31:55


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 228

Рейтинг@Mail.ru