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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 00:27   #11
Olg@
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 12
По умолчанию

Вставляю слово в RichEdit по нажатию кнопки. Хочу, чтобы это слово выделялось жирным... в общем, вот код:

Код:
procedure TForm2.BSelectClick(Sender: TObject);
var  
     MemoText:      string;
     X:                  longint;
     str:                shortstring;
begin

  MemoText:=RichEdit1.Text;
  X:=RichEdit1.CaretPos.X;
  str:=' SELECT ';
  Insert(str, MemoText, X+1);
  RichEdit1.Text:=MemoText;

  RichEdit1.SelStart:=X;
  RichEdit1.SelLength:=Length(str);
  RichEdit1.SelAttributes.Style:=[fsBold];

end;
вся проблема в том, что при повторном нажатии этой кнопки выделение остается только на новом слове, а все остальные выделения снимаются... или еще такой вариант встречался - все отображалось жирным...
подскажите, как исправить
Olg@ вне форума Ответить с цитированием
Старый 26.03.2009, 10:54   #12
Olg@
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 12
По умолчанию

ну подскажите же ж....
Olg@ вне форума Ответить с цитированием
Старый 26.03.2009, 11:55   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

как только Вы заменяете текст у RichEdit'а:
RichEdit1.Text:=MemoText;
всё форматирование сразу теряется!..

Вам вставлять слово надо по другому!

попробуйте такой код:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  _inStr : string;
  PosIns : integer;
begin
  _inStr := 'SELECT';
  RichEdit1.SetFocus;
  RichEdit1.Lines.BeginUpdate;
   PosIns := RichEdit1.SelStart;
   RichEdit1.SelText := _inStr ;
   RichEdit1.SelStart := PosIns;
   RichEdit1.SelLength:=Length(_inStr);
   RichEdit1.SelAttributes.Color:=clRed; // окрашиваем в красный цвет
   RichEdit1.SelAttributes.Style:=[fsBold];
   RichEdit1.SelLength := 0;
  RichEdit1.Lines.EndUpdate;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.03.2009, 10:32   #14
Olg@
Пользователь
 
Регистрация: 23.12.2008
Сообщений: 12
По умолчанию

Спасибо за подсказку, Serge_Bliznykov
поняла, в каком направлении дальше делать

Последний раз редактировалось Olg@; 27.03.2009 в 10:38.
Olg@ вне форума Ответить с цитированием
Старый 10.05.2009, 14:00   #15
LAZER
 
Аватар для LAZER
 
Регистрация: 02.03.2009
Сообщений: 8
По умолчанию

Код:
RichEdit1.SelStart:=RichEdit1.FindText(Text, a, Length(RichEdit1.Text)-a, [stMatchCase]); // или stWholeWord
RichEdit1.SelLength:=Length(Text);
RichEdit1.SelAttributes.Color:=clRed; // окрашиваем в красный цвет
a:=RichEdit1.SelStart+Length(Text);
...
Form1.RichEdit1.SelAttributes.Color:=clBlack; // окрашиваем в чёрный
Не работает =(
Вот исходный код
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, jpeg, ExtCtrls;

type
  TfmMain = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Label2: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Button2: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
  public
  end;

var
  fmMain: TfmMain;

implementation

uses Unit2;

{$R *.DFM}

function Transliterate(s: string): string;
var
 i: integer;
 t: string;
begin
 for i:=1 to Length(s) do
  begin
   case s[i] of
        'а': t:=t+'a';
        'б': t:=t+'b';
        'в': t:=t+'v';
        'г': t:=t+'g';
        'д': t:=t+'d';
        'е': t:=t+'e';
        'ё': t:=t+'ye';
        'ж': t:=t+'zh';
        'з': t:=t+'z';
        'и': t:=t+'i';
        'й': t:=t+'y';
        'к': t:=t+'k';
        'л': t:=t+'l';
        'м': t:=t+'m';
        'н': t:=t+'n';
        'о': t:=t+'o';
        'п': t:=t+'p';
        'р': t:=t+'r';
        'с': t:=t+'s';
        'т': t:=t+'t';
        'у': t:=t+'u';
        'ф': t:=t+'f';
        'х': t:=t+'ch';
        'ц': t:=t+'z';
        'ч': t:=t+'ch';
        'ш': t:=t+'sh';
        'щ': t:=t+'ch';
        'ъ': t:=t+'''';
        'ы': t:=t+'y';
        'ь': t:=t+'''';
        'э': t:=t+'e';
        'ю': t:=t+'yu';
        'я': t:=t+'ya';
        'А': T:=T+'A';
        'Б': T:=T+'B';
        'В': T:=T+'V';
        'Г': T:=T+'G';
        'Д': T:=T+'D';
        'Е': T:=T+'E';
        'Ё': T:=T+'Ye';
        'Ж': T:=T+'Zh';
        'З': T:=T+'Z';
        'И': T:=T+'I';
        'Й': T:=T+'Y';
        'К': T:=T+'K';
        'Л': T:=T+'L';
        'М': T:=T+'M';
        'Н': T:=T+'N';
        'О': T:=T+'O';
        'П': T:=T+'P';
        'Р': T:=T+'R';
        'С': T:=T+'S';
        'Т': T:=T+'T';
        'У': T:=T+'U';
        'Ф': T:=T+'F';
        'Х': T:=T+'Ch';
        'Ц': T:=T+'Z';
        'Ч': T:=T+'Ch';
        'Ш': T:=T+'Sh';
        'Щ': T:=T+'Ch';
        'Ъ': T:=T+'''';
        'Ы': T:=T+'Y';
        'Ь': T:=T+'''';
        'Э': T:=T+'E';
        'Ю': T:=T+'Yu';
        'Я': T:=T+'Ya';
      else t:=t+s[i];
   end;
  end;
 Result:=t;
end;

procedure TfmMain.Button1Click(Sender: TObject);
var
 i: integer;
begin
 Memo2.Lines.Clear;
 for i:=0 to Memo1.Lines.Count-1 do
  Memo2.Lines.Add(Transliterate(Memo1.Lines.Strings[i]));
end;

procedure TfmMain.Button2Click(Sender: TObject);
begin
form2.show
end;

procedure TfmMain.FormCreate(Sender: TObject);
begin
 AlphaBlend:=true;
AlphaBlendValue:=220;

end;

end.
LAZER вне форума Ответить с цитированием
Старый 10.05.2009, 20:59   #16
LAZER
 
Аватар для LAZER
 
Регистрация: 02.03.2009
Сообщений: 8
По умолчанию

Ну подскажите кто-нибудь, пожалуйста
LAZER вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как удалить текст до слова, потом от слова ? littlecoder Общие вопросы Delphi 7 29.12.2008 00:57
Окрашивание текста в зависимости от значения art1cool Microsoft Office Excel 2 19.08.2008 12:29
Слово нечетной длинны! Artem1987 Помощь студентам 2 28.10.2007 13:43