Текущий архив: 2007.10.14;
Скачать: CL | DM;
Вниз
Вопрос про Button.Free Найти похожие ветки
← →
vegarulez © (2007-09-15 09:06) [0]Привет Мастерам! У меня такой вопрос. Етсь TPanel, в котором есть Button`ы, я их очишаю с помощью такого кода, но тут у меня пролблемка одна, когда он убивает допустим батон, то контролкаунт уменьшается и i уже нету там - вылазиет ошибка... подскажите как быть?
for i:=0 to P_Panel.ControlCount-1 do
if P_Panel.Controls[i] is TButton then
begin
with (P_Panel.Controls[i] as TButton) do
Begin
//s:=Name;
If pos(FormMain.a+"_",Name)<>0 then
BEGIN
Free;
END;
End;
end;
← →
{RASkov} © (2007-09-15 10:38) [1]
{$<выключить полное вычисление логических выражений>}
for i:=0 to P_Panel.ControlCount-1 do
if (P_Panel.Controls[i] is TButton) and (pos(FormMain.a+"_", (P_Panel.Controls[i] as TButton).Name)<>0) then
TButton(P_Panel.Controls[i]).Free;
{$<венуть как было - полное вычисление логических выражений>}
Вот это вот
pos(FormMain.a+"_",Name)<>0
я не совсем понял что это такое, но думаю тут сам разберешься.
Что такое - FormMain.a ??
Наверное тебе нужно такpos("pnButt_", (P_Panel.Controls[i] as TButton).Name)=1
и соответственно все бутоны на панели должны иметь имена типа такие pnButt_1, pnButt_2, pnButt_3....
← →
{RASkov} © (2007-09-15 10:42) [2]> {$<выключить полное вычисление логических выражений>}
> for i:=0 to P_Panel.ControlCount-1 do
> if (P_Panel.Controls[i] is TButton) and (pos(FormMain.a+"_",
> (P_Panel.Controls[i] as TButton).Name)<>0) then
> TButton(P_Panel.Controls[i]).Free;
> {$<венуть как было - полное вычисление логических выражений>}
Впрочем можно и так.... без дериктив компиляторуfor i:=0 to P_Panel.ControlCount-1 do
try
if (P_Panel.Controls[i] is TButton) and ({pos(FormMain.a+"_", (P_Panel.Controls[i] as TControl).Name)<>0}) then
P_Panel.Controls[i].Free;
except
Continue;
end;
← →
Anatoly Podgoretsky © (2007-09-15 10:59) [3]Освой downto
← →
{RASkov} © (2007-09-15 11:04) [4]> Освой downto
Ну конечно же.... ведь хотел еще переделать, причем еще во [2] посте :) так и оставил не верно... :(
downto 0 и работает вроде как быстрее, так как с нулем сравнивать проще чем ... не с нулем :)
← →
{RASkov} © (2007-09-15 11:28) [5]> downto 0 и работает вроде как быстрее, так как с нулем сравнивать
> проще чем ... не с нулем :)
"Фишка" тут конечно же не в быстроте, а в постоянстве последнего значения цикла, поэтому переменная цикла все время жизни цикла будет идти по "правильным" индексам массива Controls. И следовательно ошибка из-за этого исключена.
P.S:(последнее предложение нужно понять правильно)
← →
vegarulez © (2007-09-15 15:31) [6]>> {RASkov} © (15.09.07 10:38) [1]
>> Что такое - FormMain.a ??
Да тут стринг просто. переменная с другой формы.
ту ол:
Ок. Всё понял. Большой Пасип. ;)
Страницы: 1 вся ветка
Текущий архив: 2007.10.14;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.048 c