Много панели

4 отговора 138 прегледа
#1

Много панели

Здравейте,
Някой може ли да помогне ако имам 20 (или 200) компонента от тип Panel във формата, как мога с цикъл да променям свойството Caption на тях.

Или не с цикъл ами примерно Panel3, само че 3-ката да я задам чрез променлива. Ако имам някоя променлива i и нейната стойност е 5, тогава да се промени Caption на Panel5. Нещо такова. Не ме бива в обясненията. Дано да сте разбрали

Отговор
в отговор на abc.new #2

Re: Много панели

Виж масива Controls и свойството ControlCount в хелпа.

Ето и пример:
for Counter:=0 to Parent.ControlCount-1 do

if (Parent.Controls[Counter] is TPanel) then
(Parent.Controls[Counter] as TPanel).Caption:='NewCaption'+inttostr(Counter);



Mixy
Отговор
в отговор на abc.new #3

Re: Много панели

Ето пример за отделен панел (Само трябва да знаеш че търси по Name на компонентата).
TPanel(FindComponent('Panel'+IntToStr(SpinEdit1.Value))).Caption:=
IntToStr(SpinEdit1.Value*100);

Отговор
в отговор на TRN #4

Re: Много панели

Мерси

Отговор
в отговор на abc.new #5

Предупреждение за Win9x

Предупреждение за Win9x :)

20 или 200 панела не са толкова много, но ако формата ти може да се създава повече от веднъж (2,3,.... инстанции) под 9х може да имаш проблеми с ресурсите.
Всеки наследник на WinControl е доста ресурсоемък, а за 9х това е проблем.

В повечето случеи вместо tPanel може да се ползва tLabel, а разликата в ресурсите им е доста голяма.

Отговор