Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Каждое первое слово жирное в richedit, как сделать? 
V
    Опции темы
Elfebet
Дата 19.8.2006, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



вот уже мучаюсь целый час но ничего не получается, уже окончательно запутался. помогите пожалуйста сделать. Вот как мне нужно: жирный шрифт - если оно начинается с индекса 0, то жирность до двоеточия (если же нет двоеточия то всю строку сделать жирным)
Код

procedure TForm1.Button1Click(Sender: TObject);
var i, PosCursor, B:Integer;
    str:string;
    bold: TCharFormat;
begin
  FillChar(bold, SizeOf(TCharFormat), 0);
  bold.cbSize := SizeOf(TCharFormat);
  bold.dwMask := Integer(CFM_OFFSET or CFM_COLOR or CFM_SIZE or CFM_EFFECTS);
  bold.yOffset := 0;
  bold.yHeight := RichEdit1.Font.Size * 20;
  bold.dwEffects := CFE_BOLD;

 PosCursor:=0;
 RichEdit1.SelStart:=0;
 for i:=0 to RichEdit1.Lines.Count do begin
   Application.ProcessMessages;
   str:=RichEdit1.Lines[i];
   if ((str<>'') and (str[1]<>' ')) then begin
     if Pos(':', str)<>0 then b:=Pos(':', str)+3 else b:=Length(str);
      RichEdit1.SelStart := PosCursor;
      RichEdit1.SelLength := b;
      RichEdit1.Perform(EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(@bold));
   end;
   if str='' then PosCursor:=PosCursor+3;
   PosCursor:=PosCursor+Length(RichEdit1.Lines[i]);
 end;
end;



--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Romikgy
Дата 19.8.2006, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



попробуй с индекса 1 начать smile
строки в дельфи начинаются с индекса 1!

Добавлено @ 18:10 
Цитата(Elfebet @  19.8.2006,  16:10 Найти цитируемый пост)
for i:=0 to RichEdit1.Lines.Count do begin

и здесь до RichEdit1.Lines.Count -1


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Elfebet
Дата 19.8.2006, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



Цитата

попробуй с индекса 1 начать 

здесь дело не в этом. позиция курсора начинается с 0, када я начинаю делать жирный шрифт то у меня жиным становится не там где надо smile.

млин уже замучался ничего не понимаю что там не так smile 


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Romikgy
Дата 19.8.2006, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Elfebet @  19.8.2006,  17:18 Найти цитируемый пост)
позиция курсора начинается с 0

имхо (т.к. щаз негде посмотреть в хелп smile) все позиции начинаются с 1 в дельфи , это не Си !!!!
в 0 позиции в стрингах совсем другая инфа хранится переделай код что бы начиналось с 1 и все будет гуд имхо

Добавлено @ 18:28 
http://delphi.about.com/od/beginners/l/blrtlPos.htm


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Elfebet
Дата 19.8.2006, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



поменял! все равно работает не так как надо. smile

Добавлено @ 18:34 
я так понял что в цикле не правильно выставляю SelStart и SelLength... так вроде бы все правильно....


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Romikgy
Дата 19.8.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Цитата(Elfebet @  19.8.2006,  16:10 Найти цитируемый пост)
=PosCursor+3;

почему 3 , что ты этим хочешь сделать ?
ЗЫ если ни кто не поможет щаз, 
то вернусь домой посмотрю на это чудо
только скинь плз что ты пихаешь в рич эдит
и что должно получится на выходе


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Elfebet
Дата 19.8.2006, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



вот что я пихаю в рич едит
Код

текст:

те: кст?

  тек: ст

текст текст текст текст текст

  текст текст

а вот что должно получиться
текст:

те: кст?

  тек: ст

текст текст текст текст текст

  текст текст

Это сообщение отредактировал(а) Elfebet - 19.8.2006, 18:48


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
Romikgy
Дата 19.8.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



угу понял


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Демо
Дата 19.8.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Код

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  pz,pzSelStart: Integer;
begin
  for i := 0 to RichEdit1.Lines.Count-1 do
  begin
    if Length(RichEdit1.Lines[i])=0 then continue;
    if RichEdit1.Lines[i][1]=' ' then Continue;

    pzSelStart := SendMessage(RichEdit1.Handle,EM_LINEINDEX,i,0);
    RichEdit1.SelStart := pzSelStart;
    pz := Pos(':',RichEdit1.Lines[i]);
    if pz=0
      then RichEdit1.SelLength := Length(RichEdit1.Lines[i])
      else RichEdit1.SelLength := pz;
    RichEdit1.SelAttributes.Style := [fsBold];
  end;

end;




--------------------
    
PM MAIL ICQ Skype   Вверх
Elfebet
Дата 19.8.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 545
Регистрация: 15.5.2006
Где: Украина. Запорожь е.

Репутация: 2
Всего: 14



Демо, большое тебе спасибо! Ты действительно помог! smile 


--------------------
Программист не должен всё знать... он должен знать где можно посмотреть
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.