Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
ВнизTPanel не такой как TEdit... Найти похожие ветки
← →
AndreySoft (2003-12-16 01:12) [0]кусочек кода:
for i:=0 to x do
begin
TPanel(ScrollBox1.Controls[i]).Visible:=True;
TEdit(ScrollBox1.Controls[i]).Visible:=True;
end;
Почему это: TEdit(ScrollBox1.Controls[i]).Visible:=True; работает нормально, а это: TPanel(ScrollBox1.Controls[i]).Visible:=True; нет?
Компилятор не ругается, всё нормально, только Эдиты появляются, а Панели нет...
Как сделать чтобы они тоже появлялись...
← →
ЮЮ (2003-12-16 03:03) [1]Потому что Visible устанавливаеься у первых х+1 Control-ов (for i:=0 to x), а TPanel() или TEdit() указал - это без разницы( т.е. две строки здесьь ни к чему, т.к. обе изменяют один и тот же ScrollBox1.Controls[i])
← →
Нурик (2003-12-16 03:54) [2]Может так попробуете
for i:=0 to x do
begin
if (ScrollBox1.Controls[i] is TPanel) then (ScrollBox1.Controls[i] as TPanel).Visible:=True;
if (ScrollBox1.Controls[i] is TEdit) then (ScrollBox1.Controls[i] as TEdit).Visible:=True;
end;
← →
AndreySoft (2003-12-16 16:17) [3]
> Нурик © (16.12.03 03:54) [2]
> Может так попробуете
>
> for i:=0 to x do
> begin
> if (ScrollBox1.Controls[i] is TPanel) then (ScrollBox1.Controls[i]
> as TPanel).Visible:=True;
> if (ScrollBox1.Controls[i] is TEdit) then (ScrollBox1.Controls[i]
> as TEdit).Visible:=True;
> end;
Тот же результат...
← →
AndreySoft (2003-12-16 16:22) [4]
> ЮЮ © (16.12.03 03:03) [1]
> Потому что Visible устанавливаеься у первых х+1 Control-ов
> (for i:=0 to x), а TPanel() или TEdit() указал - это без
> разницы( т.е. две строки здесьь ни к чему, т.к. обе изменяют
> один и тот же ScrollBox1.Controls[i])
Ну пишу я одну строку:
TEdit(ScrollBox1.Controls[i]).Visible:=True;
Всё равно Edit"ы появляются а Panel"и нет.
и наоборот пробовал: оставлял только
TPanel(ScrollBox1.Controls[i]).Visible:=True;
Всё равно никак...
Помогите пожалуйста!
← →
KSergey (2003-12-16 16:28) [5]Епрст...
А x чему равно?
Может вместо него поставить таки ScrollBox1.ControlCount-1 ?
← →
AndreySoft (2003-12-16 16:48) [6]Нет, нельзя!
В этом и заключается тонкость...
Мне не все нужно компоненты появлять, а только определённые...
А x вводит пользователь.
← →
KSergey (2003-12-16 16:51) [7];)
А может заставить вводить его нужное число? ;)
Хорошо, для эксперимента - попробуйте сделать ScrollBox1.ControlCount-1
Если все объявится - тогда объясните это пользователю.
Или нам задачу.
← →
Семен Сорокин (2003-12-16 16:51) [8]Нет, нельзя!
В этом и заключается тонкость...
Мне не все нужно компоненты появлять, а только определённые...
А x вводит пользователь.
круто :))
но что-то мне подсказывает, что перебирать ты должен все компоненты, а уже в цикле проверять условия отбора.
← →
Amoeba (2003-12-16 16:53) [9]Задай каждому компоненту свое значение св-ва Tag и потом используй его для идентификации компонентов, какие нужно делать видимыми.
← →
REA (2003-12-16 16:53) [10]А что он вводит? ScrollBox1.Controls например от 0 до 20. Из них первые 5 это панели, следующие три это TEdit, потом опять панели. Так не пойдет.
← →
REA (2003-12-16 16:54) [11]Во во. См. [9]. Преобразовывать достаточно к TControl.
← →
Silver Alex (2003-12-16 16:55) [12]а если все ради чистоты эксперимента по предложению KSergey поставить "таки ScrollBox1.ControlCount-1 " что будет?
← →
AndreySoft (2003-12-16 17:22) [13]Да ScrollBox1.ControlCount-1 работает...он все их показывает.
Всё я разобрался:
Дело в том что у меня
Edit1=TEdit(ScrollBox1.Controls[0]), а
Panel1=TPanel(ScrollBox1.Controls[101]) тотому он Panel"и и не показывал.
Ввёл новую переменную и всё заработало!
Всем спасибо!
← →
REA (2003-12-16 17:50) [14]Скромно... 101 Control. Что то не то в Датском королевстве.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.12.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c