1 (edited by sibprogsistem 2020-02-13 19:31:52)

Topic: [решено] Размер Label

на форме есть разные Label
но мне нужны Label.Parent:=TScrollBox;
   
можно-ли обработать Tlabel только в TScrollBox ? у меня получается только по всей форме..
 

procedure Form1_Button3_OnClick (Sender: TObject; var Cancel: boolean);
var
i:integer;
begin
  for i:=0 to Form1.ComponentCount -1 do
      IF Form1.Components[i] is TLabel Then TLabel(Form1.Components[i]).Font.Size:=TLabel(Form1.Components[i]).Font.Size +1;
end;

procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
var
i:integer;
begin
  for i:=0 to Form1.ComponentCount -1 do
      IF Form1.Components[i] is TLabel Then TLabel(Form1.Components[i]).Font.Size:=TLabel(Form1.Components[i]).Font.Size -1;
end;

Re: [решено] Размер Label

..Label.Parent:=TScrollBox;..

Осталось добавить if.

3 (edited by sibprogsistem 2020-02-11 18:28:24)

Re: [решено] Размер Label

vovka3003 wrote:

..Label.Parent:=TScrollBox;..

Осталось добавить if.

Спасибо, как всегда все оказалось просто

procedure Form1_Button3_OnClick (Sender: TObject; var Cancel: boolean);
var
i:integer;
begin
  for i:=0 to Form1.ComponentCount -1 do
      if (Form1.Components[i] is TLabel) AND (TLabel(Form1.Components[i]).Parent=sPanel) then TLabel(Form1.Components[i]).Font.Size:=TLabel(Form1.Components[i]).Font.Size +1;
end;

Re: [решено] Размер Label

"And" = "then if"

5 (edited by sibprogsistem 2020-02-11 21:21:08)

Re: [решено] Размер Label

vovka3003 wrote:

"And" = "then if"

в смысле заменить на then  if,  с начало получаем label а потом проверяем на parent?

Re: [решено] Размер Label

Сначала проверяем label и если label - проверяем parent

Re: [решено] Размер Label

sibprogsistem wrote:
vovka3003 wrote:

"And" = "then if"

в смысле заменить на then  if,  с начало получаем label а потом проверяем на parent?

Обычно по умолчанию включена оптимизация выполнения условий IF <выражение> AND <выражение>  - если первое выражение в условии равно FALSE, то второе не будет проверяться. Поэтому можно оставить так как есть.

Визуальное программирование: блог и телеграм-канал.

Re: [решено] Размер Label

в общем Рано обрадовался..

в таком варианте

procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
var
i:integer;
begin
  for i:=0 to Form1.ComponentCount -1 do
      IF Form1.Components[i] is TLabel Then TLabel(Form1.Components[i]).Font.Size:=TLabel(Form1.Components[i]).Font.Size -1;
end;

обрабатываются все Label

но тут

procedure Form1_Button3_OnClick (Sender: TObject; var Cancel: boolean);
var
i:integer;
begin
  for i:=0 to Form1.ComponentCount -1 do
      if (Form1.Components[i] is TLabel) AND (TLabel(Form1.Components[i]).Parent=sPanel) then TLabel(Form1.Components[i]).Font.Size:=TLabel(Form1.Components[i]).Font.Size +1;
end;

обрабатывается только последний созданный Label

9 (edited by sibprogsistem 2020-02-13 19:14:40)

Re: [решено] Размер Label

Я ПОНЯЛ МОЮ ОШИБКУ

Form1-
           |-TScrollBox-
                               |-TPanel--Tlabel
                               |-TPanel--Tlabel
                               |-TPanel--Tlabel

нужно было проверять TPanel

procedure Form1_Button2_OnClick (Sender: TObject; var Cancel: boolean);
var
i:integer;
s:string;
begin
  for i:=0 to Form1.ComponentCount -1  do
  if (Form1.Components[i] is TPanel) AND (TPanel(Form1.Components[i]).Parent=Scroll) then begin
      s:=TPanel(Form1.Components[i]).name;
      for i:=0 to Form1.ComponentCount -1 do
      if (Form1.Components[i] is TLabel) AND (TLabel(Form1.Components[i]).Parent.Name=s) then TLabel(Form1.Components[i]).Font.Size:=TLabel(Form1.Components[i]).Font.Size -1;
      end;
end;

Re: [решено] Размер Label

k245 wrote:

Обычно по умолчанию включена оптимизация выполнения условий IF <выражение> AND <выражение>  - если первое выражение в условии равно FALSE, то второе не будет проверяться. Поэтому можно оставить так как есть.

Можно и так, но визуально лучше воспринимается цепочка (имхо).

Так еще можно:

 case TdbButton(Sender).Name of
     'Button1' : Inc(TLabel(Form1.Components[ i ]).Font.Size);
     'Button2' : Dec(TLabel(Form1.Components[ i ]).Font.Size);
     end;

Re: [решено] Размер Label

vovka3003 wrote:

Можно и так, но визуально лучше воспринимается цепочка (имхо).

Пожалуй, соглашусь: две отдельные проверки - это надежней, так как не стоит полностью полагаться на неявные соглашения - в какой-то момент их могут поменять, и код перестанет работать.

Визуальное программирование: блог и телеграм-канал.

Re: [решено] Размер Label

Добрый день.
А как сделать тоже самое, но с таблицей? Вот так не работает:

for i:=0 to Form1.ComponentCount -1 do IF Form1.Components[i] is TdbStringGridEx Then
 TdbStringGridEx(Form1.Components[i]).Font.Size:=12;

Таблицы находит, но шрифт не меняет.

Re: [решено] Размер Label

newusr wrote:

Добрый день.
А как сделать тоже самое, но с таблицей? Вот так не работает:

for i:=0 to Form1.ComponentCount -1 do IF Form1.Components[i] is TdbStringGridEx Then
 TdbStringGridEx(Form1.Components[i]).Font.Size:=12;

Таблицы находит, но шрифт не меняет.

Form1.TableGrid1.Font.Size:=8;

Re: [решено] Размер Label

for i:=0 to Form1.ComponentCount -1 do IF Form1.Components[i] is TdbStringGridEx Then
 TdbStringGridEx(Form1.Components[i]).Font.Size:=12;

Работает...
Косяк был в другом.

Re: [решено] Размер Label

newusr wrote:
for i:=0 to Form1.ComponentCount -1 do IF Form1.Components[i] is TdbStringGridEx Then
 TdbStringGridEx(Form1.Components[i]).Font.Size:=12;

Работает...
Косяк был в другом.

Не жадничайте, поделитесь косячком )))

Визуальное программирование: блог и телеграм-канал.

Re: [решено] Размер Label

k245 wrote:

Не жадничайте, поделитесь косячком )))

Поковырялся в файле forms.xml и "повредились" стили форм, поэтому размер шрифта не менялся, восстановил файл и всё сработало.