-
> inherited Create(AOwner);
> ControlStyle := ControlStyle + [csAcceptsControls]
Да помогло. Но не все еще в порядке.
Вот код PreviousPage:
function TCustomWizzard.PreviousPage: TCustomWizzardPage;
begin
FCurrentPageIndex := FCurrentPageIndex — 1;
if FCurrentPageIndex < 0 then
FCurrentPageIndex := FPages.Count — 1;
ShowPage(FCurrentPageIndex);
Result := FPages[FCurrentPageIndex];
end;procedure TCustomWizzard.ShowPage(Index: Integer);
var
I: Integer;
begin
for I := 0 to FPages.Count — 1 do
if I = Index then
FPages[I].Visible := True
else
FPages[I].Visible := False;
end;
Но оно не работает так как я хочу. Те допустим есть 3 страницы.На второй кнопка. В окне «структура» она действительно на второй странице.
Но когда я начинаю щелкать NextPage, то кнопка идна всегда. Те FPages[I].Visible несрабатывает что-ли
Или наоборот выбрана вкладка с кнопками, а их невидно
И все равно они какие-то прозрачные странно.
Скриншот:
http://ksoftware.narod.ru/Struct.JPG -
DimaBr © (16.04.07 13:24) [21]FPages[I].Visible прекрасно работает (но не в дизайнере) сделайте активной панели BringToFront
-
Сделал, но не помогло.
И если просто правой кнопкой нажать, то пункты BringToFront(стандартные) «звдизэйблены». -
DimaBr © (16.04.07 13:36) [23]Не, вы не поняли.
У главного компонента должно быть свойтсво - ActivePage, при установке которого становится активной выбранная панель.
procedure TCustomWizzard.SetActivePage(APage: TCustomWizzardPages);
begin
if APage <> nil then
if APage.Wizzard <> self then Exit;
fActivePage := APage;
if fActivaPage <> nil then fActivaPage.BringToFront;
end;
-
Я сделал так. Смысл ессно разный, но работать имхо должно было и такprocedure TCustomWizzard.ShowPage(Index: Integer);
var
I: Integer;
begin
for I := 0 to FPages.Count — 1 do
if I = Index then
begin
if csDesigning in ComponentState then
BringToFront
else
FPages[I].Visible := True
end
else
FPages[I].Visible := False;
end;
У главного компонента должно быть свойтсво ActivePage
шас попробую -
DimaBr © (16.04.07 13:49) [25]
if csDesigning in ComponentState then
FPages[I].BringToFront
else
FPages[I].Visible := True -
Ура работает
-
DimaBr © (16.04.07 14:16) [27]Поздравляю !!!
-
Блин криво получилось, ппц :). Ну хоть что-то первый раз такое делаю :)
-
Так, продалжаем разговор.
В дизайнере еще рак-то рабоатет. А вот при запуске приложения получается что в FPage 0 станиц. Хотя в дизайнере они есть(NexPage работает нормально) В чем может быть дело? Может их нао как-то сохранять -
DimaBr © (16.04.07 14:29) [30]
> В чем может быть дело?
Мне нравятся ваши вопросы. Дело может быть в чём угодно, я ж не провидец или телепат.
Прежде всего вы должны добится чтобы при двойном Alt+F12 у вас небыло никаких ошибок, и всё было на своих местах.
Скорее всего вы не разобрались с GetChildren. -
> Скорее всего вы не разобрались с GetChildren.
Я даже незнаю что это :(
> Alt+F12
Это что за функция? -
> GetChildren
Так его надо перекрыть? А как? Те что писать? -
DimaBr © (16.04.07 14:50) [33]Alt+F12 - это комбинация клавиш на клавиатуре (Кнопочка ALT находится с боков от пробела - такая длинная клавиша, а F12 в конце верхнего ряда)
Нажмите два раза это сочетание при выделенной форме. В первый раз форма перейдёт в режим текста, во второй раз обратно. Если всё останется на своих местах - вы Гений (обычно куча ошибок).
В режиме такста ваш котнрол должен имет приблизительно такой вид
object Wizard1: TCustomWizzard
Left = 80
Top = 24
Width = 289
Height = 193
ActivePage = Page1
object Page1: TCustomWizzardPage
........
end
end
то есть страница находится внутри компонента -
> Alt+F12 это комбинация клавиш на клавиатуре
Что то нажимаю я эти «кнопочки» вообще нихрена :) Мож в BDS другое сочетание? -
{RASkov} (16.04.07 15:00) [35]> [34] Kolan © (16.04.07 14:57)
Попробуй по форме правой кнопкой мыши>View as Text, затем в редакторе правой> View as Form.... -
Угу, по виду тоже самое осталось, но стал ругаться так же как и ран тайме (List out of bounds 0). Те скорее всего в FPages ниче нет сейчас. Наверно как-то сохранять/загружать надо , как?
-
DimaBr © (16.04.07 15:24) [37]Наверно так [2]
-
> Наверно так [2]
Так я делаю:procedure TWizzardEditor.ExecuteVerb(Index: Integer);
var
TempPage: TCustomWizzardPage;
begin
inherited;
case Index of
0:
begin
if Component is TWizzard then
begin
TempPage := Designer.CreateComponent(TWizzardPage, Component, 0,0,0,0) as TWizzardPage;
TWizzardPage(TempPage).Wizzard := (Component as TWizzard);
Designer.Modified;
end;
end; -
Но если я переключюсь текст/форма, то в дизайнере страницы есть, а вот FPages их нет