Конференция "Компоненты" » Если Owner не форма, то экземпляр не видно в окне «structure»
 
  • DimaBr © (16.04.07 15:50) [40]
    Вы невнимательно прочитали [2], особенно в конце. Что происходит в методе TWizzardPage.SetWizard ???
  • Kolan © (16.04.07 15:51) [41]
    procedure TCustomWizzardPage.SetWizzard(const Value: TCustomWizzard);
    begin
     if FWizzard <> nil then
     begin
       FWizzard.DeletePage(Self);
     end;
     FWizzard := Value;
     FWizzard.AddPage(Self);
    end;

  • DimaBr © (16.04.07 15:59) [42]
    Ок, по аналогии так же ???

    procedure TTabSheet.ReadState(Reader: TReader);
    begin
     inherited ReadState(Reader);
     if Reader.Parent is TPageControl then
       PageControl := TPageControl(Reader.Parent);
    end;

  • Kolan © (16.04.07 16:06) [43]
    > Ок, по аналогии так же ???

    Черт, нихрена не понял. Объяснишь — справку читаю…
  • DimaBr © (16.04.07 16:11) [44]
    Метод ReadState вызывается в момент чтения компонента из ресурса, его нужно переопределить и произвести присвоение (заодно и добавление в список)  FWizzard.

    procedure TCustomWizzardPage.ReadState(Reader: TReader);
    begin
    inherited ReadState(Reader);
    if Reader.Parent is TCustomWizzard then
      Wizard := TCustomWizzard(Reader.Parent);
    end;

  • Kolan © (16.04.07 16:19) [45]
    То же самое, главное непонятно как все это отлаживать :(
  • DimaBr © (16.04.07 16:24) [46]
    Переключитесь на Текст, поставьте брейк в ReadState и запускайте.
    Надеюсь вы в описании сделали так

    TCustomWizzardPage = class()
     protected
       procedure ReadState(Reader: TReader);override;
    end;
  • Kolan © (16.04.07 16:29) [47]
    Надеюсь вы в описании сделали так


     strict protected
       procedure ReadState(Reader: TReader);  


    Вроде да.


    > Переключитесь на Текст, поставьте брейк в ReadState и запускайте.

    На точке не остановилось. Причем не важно текст или не текст.
  • Kolan © (16.04.07 16:30) [48]
    Ой, стоп
  • Kolan © (16.04.07 16:37) [49]
    Так это получилось.
    Еще:
    Где тот момент когда все уже загружено. При создании Wizzarda я написал такой код:

    constructor TCustomWizzard.Create(AOwner: TComponent);
    begin
     inherited Create(AOwner);
     FPages := TWizzardPageList.Create;
     FCurrentPageIndex := 0;
     if (not (csDesigning in ComponentState)) and (FPages.Count > 0) then
       FPages[0].Show(nil);
    end;



    Но страницы еще не загрузились, и FPages.Count = 0. А мне нужно показать 0-ую.

    Хотя в принципе работает…
  • DimaBr © (16.04.07 16:40) [50]
    procedure TCustomWizzard.Loaded;override;
    begin
     CurrentPageIndex := 0;
    end;

  • DimaBr © (16.04.07 16:52) [51]
    procedure TCustomWizzard.Loaded;override;
    begin
     inherited Loaded;
    CurrentPageIndex := 0;
    end;

  • Kolan © (16.04.07 16:58) [52]
    Угу. Вот еще что: Почемуте, по всей видимосте в FPages страницы не в том порядке в коком они отображены в окне «структура». Те Вторя по счету в FPages — 0. И сдледовательно ноказывается не то что нужно…
  • Kolan © (16.04.07 16:59) [53]
    > DimaBr ©   (16.04.07 16:52)

    Смысл я понял…
  • DimaBr © (16.04.07 17:02) [54]
    Потому что они сохраняются в ресур в порядке расположения на форме, для изменения порядка сделай так

    procedure TPageControl.GetChildren(Proc: TGetChildProc; Root: TComponent);
    var  I: Integer;
    begin
     for I := 0 to FPages.Count - 1 do Proc(TComponent(FPages[I]));
    end;


    Ни в коем случае не нужен Inherited

    Пока, до завтра !!!
  • Kolan © (16.04.07 17:18) [55]
    Пока, до завтра !!!

    Ок :)

    Теперь выходит 0 — это последняя. Пошет downto?
  • Kolan © (16.04.07 17:24) [56]
    > Пошет

    Может.
  • DimaBr © (17.04.07 08:49) [57]
    Да нет, всё должно быть нормально. Переключитесь на текст, отредактируйте DFM-ку (выставите страницы в нужном порядке), переключитесь на форму.
  • имя (27.03.09 01:15) [58]
    Удалено модератором
  • имя (27.03.09 01:15) [59]
    Удалено модератором
 
Конференция "Компоненты" » Если Owner не форма, то экземпляр не видно в окне «structure»
Есть новые Нет новых   [134466   +3][b:0][p:0.002]