-
Вы невнимательно прочитали [2], особенно в конце. Что происходит в методе TWizzardPage.SetWizard ???
-
procedure TCustomWizzardPage.SetWizzard(const Value: TCustomWizzard);
begin
if FWizzard <> nil then
begin
FWizzard.DeletePage(Self);
end;
FWizzard := Value;
FWizzard.AddPage(Self);
end;
-
Ок, по аналогии так же ???
procedure TTabSheet.ReadState(Reader: TReader);
begin
inherited ReadState(Reader);
if Reader.Parent is TPageControl then
PageControl := TPageControl(Reader.Parent);
end;
-
> Ок, по аналогии так же ???
Черт, нихрена не понял. Объяснишь справку читаю
-
Метод ReadState вызывается в момент чтения компонента из ресурса, его нужно переопределить и произвести присвоение (заодно и добавление в список) FWizzard. procedure TCustomWizzardPage.ReadState(Reader: TReader);
begin
inherited ReadState(Reader);
if Reader.Parent is TCustomWizzard then
Wizard := TCustomWizzard(Reader.Parent);
end;
-
То же самое, главное непонятно как все это отлаживать :(
-
Переключитесь на Текст, поставьте брейк в ReadState и запускайте. Надеюсь вы в описании сделали так
TCustomWizzardPage = class() protected procedure ReadState(Reader: TReader);override; end;
-
Надеюсь вы в описании сделали так strict protected
procedure ReadState(Reader: TReader); Вроде да. > Переключитесь на Текст, поставьте брейк в ReadState и запускайте.
На точке не остановилось. Причем не важно текст или не текст.
-
Ой, стоп
-
Так это получилось. Еще: Где тот момент когда все уже загружено. При создании 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-ую. Хотя в принципе работает
-
procedure TCustomWizzard.Loaded;override;
begin
CurrentPageIndex := 0;
end;
-
procedure TCustomWizzard.Loaded;override;
begin
inherited Loaded;
CurrentPageIndex := 0;
end;
-
Угу. Вот еще что: Почемуте, по всей видимосте в FPages страницы не в том порядке в коком они отображены в окне «структура». Те Вторя по счету в FPages 0. И сдледовательно ноказывается не то что нужно
-
> DimaBr © (16.04.07 16:52)
Смысл я понял
-
Потому что они сохраняются в ресур в порядке расположения на форме, для изменения порядка сделай так 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Пока, до завтра !!!
-
Пока, до завтра !!!
Ок :)
Теперь выходит 0 это последняя. Пошет downto?
-
> Пошет
Может.
-
Да нет, всё должно быть нормально. Переключитесь на текст, отредактируйте DFM-ку (выставите страницы в нужном порядке), переключитесь на форму.
-
Удалено модератором
-
Удалено модератором
|