![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странная ошибка (а может быть и нет) [D7, WinXP]
tazik © (2005-01-26 23:39:00)Здравствуйте!
Это опять я. У меня есть такая штука. Перелистываю Tabsheet'ы нахожу в них ScrollBox'ы, там ToolBox'ы, а на них ToolButton'ы с дописанными некоторыми свойствами (param типа string). Но на строчке кода (*) выдает ошибку 'Ivalid class typecast'.
Помогите найти её:
var Name,Caption,Param1,Param2: string;
begin
for i := 0 to PageControl.PageCount - 1 do
begin
PageControl.ActivePageIndex := i;
for A := 0 to (PageControl.Pages[I].Controls[0] as TScrollBox).ControlCount - 1 do
begin
for C := 0 to ((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).ControlCount - 1 do
begin
(*) name := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TToolButton).Name;
Caption := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TToolButton).Caption;
Param1 := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TToolButton).Param1;
Param2 := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TToolButton).Param2;
end;
end;
end;
Kerk (2005-01-27 00:32:00) [21]Ну почему вы не используете with ???
KilkennyCat (2005-01-27 00:31:00) [22]причем ничего с ними не делать?
KilkennyCat (2005-01-27 00:29:00) [23]требуется возвращать параметры последней BTN_N последнего тулбара TOOL_BAR2?
tazik (2005-01-27 00:24:00) [24]
type TMyBtn = class(TToolButton)
public
Param1,
Param2: string;
end;
procedure ReedInfo();
var Name, Caption,
Param1, Param2: string;
I, C, a: Integer;
begin
for i := 0 to PageControl.PageCount - 1 do
begin
PageControl.ActivePageIndex := i;
for A := 0 to (PageControl.Pages[I].Controls[0] as TScrollBox).ControlCount - 1 do
begin
for C := 0 to ((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).ControlCount - 1 do
begin
(*) name := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TMyBtn).Name;
Caption := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TMyBtn).Caption;
Param1 := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TMyBtn).Param1;
Param2 := (((PageControl.Pages[i].Controls[0] as TScrollBox).Controls[A] as TToolBar).Controls[C] as TMyBtn).Param2;
end;
end;
end;
Вот структура расположения компонентов
<TAB_SHEET1>
+
|
+<SCROLL_BOX>+
|
+<TOOL_BAR1>+
+<BTN0>
+<BTN1>
+...
+<BTN_N>
+
|
+<TOOL_BAR2>+
+<BTN0>
+<BTN1>
+...
+<BTN_N>
<TAB_SHEET2>
+
|
+<SCROLL_BOX>+
|
+<TOOL_BAR1>+
+<BTN0>
+<BTN1>
+...
+<BTN_N>
+
|
+<TOOL_BAR2>+
+<BTN0>
+<BTN1>
+...
+<BTN_N>
KilkennyCat (2005-01-27 00:14:00) [25]
> Я вам передставил полную фу-ю. Со всеми алгоритмами.
неправда.
в том виде, в каком представили, если добавить А В С и понять, что такое TToolButton.Param1(2), то ошибки не будет, хоть выглядит и ужасно.
tazik (2005-01-27 00:07:00) [26]Я вам передставил полную фу-ю. Со всеми алгоритмами. Меня мучает вопрос почему же возникает 'Invalid class typecast'!!!! Ведь я смотрю на стринговые значения с одной и другой стороны опредатора присваявания!
p.s. вы извините, если я буду ошибаться при написании слов. Пиво... пиво... :)
KilkennyCat (2005-01-27 00:00:00) [27]Это понятно. значит, код неполный, впринципе, это и так ясно, учитывая, что в данной полноте параметры получают только последнее значение...
Но, может быть, все-таки стоит пересмотреть алгоритм?
tazik (2005-01-26 23:58:00) [28]Дело в том, что я собираю инфу о кнопках, которых находятся на ToolBaraх, которые, в свою очередь назодятся в ScrollBoxах, а те находятся на активных TabSheetах.
KilkennyCat (2005-01-26 23:55:00) [29]
> tazik © (26.01.05 23:52) [4]
это я понял. То есть, надо смотреть именно на активном? ну тогда это либо не весь код, либо я не понимаю, почему можно смотреть только на активном.
tazik (2005-01-26 23:52:00) [30]> to KilkennyCat [2]
А это я устанавливаю активную страницу в PageControl. Ведь я смотрю ScrollBox на активном TabSheet.
KilkennyCat (2005-01-26 23:49:00) [31]не... пока TTabSheet вместо всей бодяги не применят, думать не смогу...
KilkennyCat (2005-01-26 23:47:00) [32]
> for i := 0 to PageControl.PageCount - 1 do
> begin
> PageControl.ActivePageIndex := i;
>
а это зачем так?
KilkennyCat (2005-01-26 23:44:00) [33]что-то тут не то... сейчас попробую понять. если не отвечу - не поминайте лихом, спекся, значит...