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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2010, 09:17   #1
ProgDel
Пользователь
 
Аватар для ProgDel
 
Регистрация: 15.02.2010
Сообщений: 67
По умолчанию Изменение font.style для нужных слов

Привет всем. У меня такая проблема. Есть три кнопки SpeedButton, есть RichEdit. Значение AllowAllUp у всех трёх кнопок = true. Это что бы при клике они оставались в нажатом состоянии, а при следующем клике возвращались в исходное состояние. Назначение первой кнопки изменять RichEdit1.font.Stile := [fsBold] (полужирный шрифт), назначение второй RichEdit1.Font.Style := [fsItalic] (курсив), назначение третий RichEdit1.Font.Style :=[fsUnderline] (подчёркутый). Первая кнопка работает, а остальные нет! В чём причина?
Код:
procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
if SpeedButton11.Down = true then RichEdit1.Font.Style := [fsBold]
else RichEdit1.Font.Style := fontdialog1.Font.Style;
end;

procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
if SpeedButton12.Down = true then
richedit1.Font.Style := [fsItalic]
else RichEdit1.Font.Style := fontdialog1.Font.Style;
end;

procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
if SpeedButton13.Down = true then
Richedit1.Font.Style :=[fsUnderline]
else RichEdit1.Font.Style := fontdialog1.Font.Style;
end;

end.

Последний раз редактировалось ProgDel; 24.10.2010 в 17:26.
ProgDel вне форума Ответить с цитированием
Старый 24.10.2010, 09:34   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Быть не может.
Проведенные испытания показали, что и другие две кнопки отрабатывают как им и положено.
GroupIndex во всех кнопках в единицу установлены?

P.S. Что делает здесь FontDialog? Пользы от него никакой.

Последний раз редактировалось Скандербег; 24.10.2010 в 09:38.
Скандербег вне форума Ответить с цитированием
Старый 24.10.2010, 09:41   #3
ProgDel
Пользователь
 
Аватар для ProgDel
 
Регистрация: 15.02.2010
Сообщений: 67
По умолчанию

Нет у первой GroupIndex = 1 у второй 2 у третей 3. А FontDialog нужен для того что бы вернуть обратно обычный стиль шрифта.
ProgDel вне форума Ответить с цитированием
Старый 24.10.2010, 09:44   #4
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

1. А ты задал всем трем кнопкам общий GroupIndex? Если нет - они не могут принимать Down.
2. Логичнее писать
Код:
 ... then RichEdit1.Font.Style := RichEdit1.Font.Style + [fsBold]
В догонку... Я тоже провел испытания. Все работает нормально.
_SERGEYX_ вне форума Ответить с цитированием
Старый 24.10.2010, 09:47   #5
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Для того чтобы вернуть обычный стиль FontDialog не нужен. Достаточно присвоить "пустое" значение стиля:
Код:
  RichEdit1.Font.Style := [];
_SERGEYX_, автор сделал с GroupIndex то правильно (независимое поведение при включенном AllowAllUp), только "забыл", что стиль шрифта это set (множество) и ему надо присваивать стили так как вы показали.

Последний раз редактировалось Скандербег; 24.10.2010 в 09:55.
Скандербег вне форума Ответить с цитированием
Старый 24.10.2010, 11:40   #6
ProgDel
Пользователь
 
Аватар для ProgDel
 
Регистрация: 15.02.2010
Сообщений: 67
По умолчанию

А теперь всё работает! Парни спосибо!!!

Код:
procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
if SpeedButton11.Down = true then
RichEdit1.Font.Style := RichEdit1.Font.Style + [fsBold]
else RichEdit1.Font.Style := [];
end;

procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
if SpeedButton12.Down = true then
richedit1.Font.Style := richedit1.Font.Style + [fsItalic]
else RichEdit1.Font.Style := [];
end;

procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
if SpeedButton13.Down = true then
Richedit1.Font.Style := richedit1.Font.Style + [fsUnderline]
else RichEdit1.Font.Style := [];
end;

end.

Последний раз редактировалось ProgDel; 24.10.2010 в 11:55.
ProgDel вне форума Ответить с цитированием
Старый 24.10.2010, 11:56   #7
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Потому что на двух последних кнопках висит один и тот же код
if SpeedButton12.Down = true then
Может на третьей надо if SpeedButton13 ....
И вообще, переименуй кнопки
btnBold
btnItalic
btnUnderline
... и не будет таких казусов.
_SERGEYX_ вне форума Ответить с цитированием
Старый 24.10.2010, 12:16   #8
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

А если сделать так:
Код:
procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
  if SpeedButton11.Down then
    RichEdit1.Font.Style := RichEdit1.Font.Style + [fsBold]
  else
    RichEdit1.Font.Style := RichEdit1.Font.Style - [fsBold];
end;
То цены бы такому коду не было .
Скандербег вне форума Ответить с цитированием
Старый 24.10.2010, 17:22   #9
ProgDel
Пользователь
 
Аватар для ProgDel
 
Регистрация: 15.02.2010
Сообщений: 67
По умолчанию Изменение Font.Style для нужных слов

Как сделать что бы при изменении стиля шрифта, стиль прежде написанного текста оставался прежним, а новый текст вновь заданным?
ProgDel вне форума Ответить с цитированием
Старый 24.10.2010, 17:29   #10
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

К Delphi в придачу есть Демо. Найди там исходники RichEdit.
Обрати внимание в коде на SelAttributes.
Если разберешься - больше не будет вопросов со стилями текста.
_SERGEYX_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SF (Sprite font) ALKOrobot Общие вопросы Delphi 0 19.02.2010 15:03
FontDialog.Font IpCod Общие вопросы Delphi 1 04.10.2009 23:02
Изменение репутации не работает Crivel О форуме и сайтах клуба 5 08.04.2009 17:28
Font Killbrum Помощь студентам 4 26.03.2008 23:59