|
Вопрос # 5 865/ вопрос решён / |
|
Здравствуйте, уважаемые эксперты!
Такой вопрос, на форме картинка, под ней находится label с текстом, если ввести текст в edit1 то label1.caption:=edit1.text; все работает отлично, но вот только как сделать оцентровку текста под картинкой? и если выходит за поля картинки перенести текст на новую строку + выровнять. Пробывал left менять не помогает
 |
Вопрос задал: casio (статус: Посетитель)
Вопрос отправлен: 7 января 2012, 15:14
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: meson
Здравствуйте, victor_as!
Свойство Left Вам и не могло помочь.
Оно означает расстояние компонента от левой границы родителя, т.е. просто положение на экране.
Вам следует поэкспериментировать со свойствами:
WordWrap - перенос текста по словам
Alignment - положение текста в строке (taCenter - означает по центру)
Height - высота компонента
Width - ширина компонента
AutoSize - автоматический выбор размеров
 |
Ответ отправил: meson (статус: 1-ый класс)
Время отправки: 7 января 2012, 23:11
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 17; последнее сообщение — 8 января 2012, 23:38; участников в обсуждении: 2.
|
casio (статус: Посетитель), 8 января 2012, 00:18 [#1]:
meson: хорошо, с этим разобрался)) а подскажите наприемер если у меня max символов в label1 = 12, как сделать чтобы если max>12 то перенести на новую строку в label.
|
|
meson (статус: 1-ый класс), 8 января 2012, 01:10 [#2]:
To victor_as!
Боюсь, на этот раз Ваш вопрос сформулирован не вполне корректно
или на меня плохо действуют праздники
Не понятно какое свойство Вы имеете в виду?
Или max это не свойство класса TLable?
|
|
casio (статус: Посетитель), 8 января 2012, 01:54 [#3]:
meson:
var i:integer;
max : integer = 12;
begin
procedure button1click(self);
begin
i:=lenght(edit1.text;);
if i<=max then Label1.Caption := edit1.text;
if i>max then //здесь должны добавится 12 символов,а остальные перенисти на новую строку
end;
end;
|
|
casio (статус: Посетитель), 8 января 2012, 17:29 [#5]:
meson: что то не работает((
|
|
meson (статус: 1-ый класс), 8 января 2012, 17:48 [#6]:
victor_as:
Не знаю чем могу Вам помочь
Вы не написали что именно не работает.
|
|
casio (статус: Посетитель), 8 января 2012, 18:00 [#7]:
meson: сори, не переносится символы на новую строку, после 12го символа! при чем отмечен в wordwrap:=true;
|
|
meson (статус: 1-ый класс), 8 января 2012, 18:46 [#8]:
victor_as:
Проверьте установлено ли свойство AutoSize в состояние true
|
|
casio (статус: Посетитель), 8 января 2012, 18:58 [#9]:
victor_as: спасибо переносит, но вот теперь не работает выравнивание, а вот если AutoSize:=false оставить то тогда я думаю работать будет,только вот как это сделать?увеличивать label.height?
|
|
casio (статус: Посетитель), 8 января 2012, 19:06 [#10]:
meson: все спасибо я разобрался, поставил условие
if max>12 then
Label1.Autosize := True;
Label1.Caption := '';
sNextLine := '';
for iIdx := 1 to Length(Edit1.Text) do
begin
sSubStr := sSubStr + Copy(Edit1.Text, iIdx, 1);
if Length(sSubStr) >= MAX then
begin
Label1.Caption := Label1.Caption + sNextLine + sSubStr;
sNextLine := NEXT_LINE;
sSubStr := '';
end;
end;
Label1.Caption := Label1.Caption + sNextLine + sSubStr;
|
8 января 2012, 19:07: Статус вопроса изменён на решённый (изменил автор вопроса — casio)
8 января 2012, 19:15: Вопрос вновь открыт (изменение состояния произвёл автор вопроса — casio)
|
casio (статус: Посетитель), 8 января 2012, 19:16 [#11]:
meson: не учел вот что,если не тяжело подскажите когда ставлю пробел то строка разрывается, а как не учитывать пробел?
|
|
meson (статус: 1-ый класс), 8 января 2012, 19:18 [#12]:
victor_as:
Рад что Вы довольны результатом.
Но, честно говоря, мне не понятно что дает Ваше сравнение.
MAX - это константа. В моем примере она равна 12.
В Вашем случае присвоение Label1.Autosize := True
ни когда не производится.
Попробуйте убрать фрагмент
if max>12 then
Label1.Autosize := True;
и убедитесь что он попросту не влияет на работу.
Более того, устанавливать AutoSize в состояние true
лучше всего прямо в свойствах компонента на форме.
И второе. По прежнему не понятно что Вы имеете в виду,
когда пишете "но вот теперь не работает выравнивание".
|
|
casio (статус: Посетитель), 8 января 2012, 19:27 [#13]:
meson: я имею ввиду на форме есть картинка, ай вот лучшее объяснение - создание папки на рабочем столе! вот мне на подобие такого нужно сделать, что бы текст выравнивался относительно папки (картинки)
|
|
meson (статус: 1-ый класс), 8 января 2012, 19:28 [#14]:
victor_as:
Если Вы не хотите чтобы учитывались пробелы
проверьте какой символ обрабатывается.
Для этого строку
sSubStr := sSubStr + Copy(Edit1.Text, iIdx, 1);
замените на
if Copy(Edit1.Text, iIdx, 1) <> ' ' then
sSubStr := sSubStr + Copy(Edit1.Text, iIdx, 1);
|
|
casio (статус: Посетитель), 8 января 2012, 19:34 [#15]:
meson: нужно выравнивание текста так как в примере создания папки
|
|
meson (статус: 1-ый класс), 8 января 2012, 19:45 [#16]:
victor_as:
Я не знаю о чем идет речь...
И вообще наша "переписка"
перестает носить продуктивный характер ...
Успехов Вам
|
8 января 2012, 23:28: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.
|
casio (статус: Посетитель), 8 января 2012, 23:38 [#17]:
meson: все я решил задачу вот таким способом
Label1.Caption := '';
sNextLine := '';
for i := 1 to Length(Edit1.Text) do
begin
sSubStr := sSubStr + Copy(Edit1.Text, i, 1);
if Length(sSubStr) >= MAX then
begin
Label1.Caption := LabelPapka.Caption + sNextLine + sSubStr;
sNextLine := NEXT_LINE;
sSubStr := '';
end;
end;
Label1.Caption := Label1.Caption + sNextLine + sSubStr;
Label1.Width := Img1.Width * 2;
Label1.Left := Img1.Left - ((Label1.Width - Img1.Width) div 2);
|
8 января 2012, 23:40: Статус вопроса изменён на решённый (изменил автор вопроса — casio)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|