Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2013, 17:42   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Уменьшать размер букв Label6 в зависимости от width

Здравствуйте, суть данного обработчика в том, что если ширина метки превысит ширину групбокса, то уменьшить шрифт метки, код не работает почему-то

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label6.Caption:='';
if RadioButton3.Checked or RadioButton4.Checked then
label6.caption:='Курсор поля 1:  '+IntToStr(Edit1.selstart)+'; '+'Курсор поля 2: '+IntToStr(Edit2.selstart)
else
label6.caption:='Курсор поля 1: '+IntToStr(Edit1.selstart);
repeat
if Label1.width>311 then label6.Font.size:=Label6.Font.size-1;
until Label1.width<groupbox1.Width
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 24.03.2013, 17:44   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А попробуйте ваш цикл для себя на бумажке расписать...
ReportCube вне форума Ответить с цитированием
Старый 24.03.2013, 17:53   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

ой, опять невнимательность, не label1, а label6, теперь все заработало, но цикл другой сделал.

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if RadioButton3.Checked or RadioButton4.Checked then
label6.caption:='Êóðñîð ïîëÿ 1: '+IntToStr(Edit1.selstart)+'; '+'Êóðñîð ïîëÿ 2: '+IntToStr(Edit2.selstart)
else
label6.caption:='Êóðñîð ïîëÿ 1: '+IntToStr(Edit1.selstart);
while Label6.width>groupbox1.Width  do
label6.Font.size:=Label6.font.size-1;
end;
А как отцентровать метку по середине groupbox1?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 24.03.2013, 17:58   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

если растянуть label по всей ширине groupbox1, в свойствах метки поставить:
1) autosize:=false;
2) aligment:=tacenter;
3) layout:=tlcenter;

то ttimer1 не будет работать
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 24.03.2013, 18:36   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Решил подгонять размер метки под групбокс, если в метке слишком много записей, то метка уменьшается, иначе-увеличивается, вот код, но он зависает
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if RadioButton3.Checked or RadioButton4.Checked then
label6.caption:='Êóðñîð ïîëÿ 1: '+IntToStr(Edit1.selstart)+'; '+'Êóðñîð ïîëÿ 2: '+IntToStr(Edit2.selstart)
else
label6.caption:='Êóðñîð ïîëÿ 1: '+IntToStr(Edit1.selstart);
if Label6.width>groupbox1.Width then
repeat
  Label6.Font.Size:=Label6.Font.size-1;
until Label6.width>=groupbox1.Width
else
repeat
  Label6.Font.Size:=Label6.Font.size+1;
until Label6.width<=groupbox1.Width;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 24.03.2013, 18:48   #6
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Ничего у вас не зависает - всё работает внутри циклов и что-то там проверяет. Зачем и что - эту уж сами смотрите...
ReportCube вне форума Ответить с цитированием
Старый 24.03.2013, 20:27   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Вот теперь не зависает
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if not groupbox1.visible then timer1.enabled:=false;
if RadioButton3.Checked or RadioButton4.Checked then
label6.caption:='Êóðñîð ïîëÿ 1: '+IntToStr(Edit1.selstart)+'; '+'Êóðñîð ïîëÿ 2: '+IntToStr(Edit2.selstart)
else
label6.caption:='Êóðñîð ïîëÿ 1: '+IntToStr(Edit1.selstart);
while Label6.width>=groupbox1.Width do
begin
Label6.Font.Size:=Label6.Font.size-1;
GroupBox1.height:=GroupBox1.Height-2;
end;
while Label6.width<=groupbox1.Width-25 do
begin
Label6.Font.Size:=Label6.Font.size+1;
if GroupBox1.height=Label1.Top then exit else
GroupBox1.height:=GroupBox1.Height+1;
end;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Картинка -поворот и размер в зависимости от мышки grafgrial Общие вопросы Delphi 3 16.09.2011 11:12
цикл for i:=0 to count -1 do. Уменьшать счётчик i внутри цикла... Человек_Борща Общие вопросы Delphi 10 01.07.2011 21:11
Размер формы и компонентов на ней в зависимости от разрешения монитора Droid Общие вопросы Delphi 2 04.08.2009 08:01
Размер окна в зависимости от размера окна Reverent JavaScript, Ajax 1 02.02.2008 15:49