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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2008, 15:58   #1
aesoem
Форумчанин
 
Регистрация: 24.12.2007
Сообщений: 288
По умолчанию Текставой редактор

Привет, помогите написать текставой редактор на основе RichEdit1.
Примерно такой каторы находится в папке Demos с делфи...

1. Почему при изменении шрифта\цвета выделенного участка текста меняется весь текст!!!
2. Как сделать возможность изменять шрифт\размер шрифта\цвет шрифта\не входя в эти диалоги, как в ворде!
Тоесть к примеру список шрифтов разместить в combobox1!
aesoem вне форума Ответить с цитированием
Старый 08.04.2008, 16:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему при изменении шрифта\цвета выделенного участка текста меняется весь текст!!!
Наверное потому что ты сам это прописал ))
Цитата:
Тоесть к примеру список шрифтов разместить в combobox1!
Вот размещение в ListBox
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Label1: TLabel;
    FontLabel: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure DrawItem(Control: TWinControl; index: Integer; Rect: TRect;
      State: TOwnerDrawState);
    procedure ListBox1MeasureItem(Control: TWinControl; index: Integer;
      var Height: Integer);
    procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Listbox1.Items := Screen.Fonts;
end;

procedure TForm1.DrawItem(Control: TWinControl; index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with ListBox1.Canvas do
  begin
    FillRect(Rect);
    Font.name := ListBox1.Items[index];
    Font.Size := 0; // use font's preferred size
    TextOut(Rect.Left+1, Rect.Top+1, ListBox1.Items[index]);
  end;
end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; index: Integer;
  var Height: Integer);
begin
  with ListBox1.Canvas do
  begin
    Font.name := Listbox1.Items[index];
    Font.Size := 0; // use font's preferred size
    Height := TextHeight('Wg') + 2; // measure ascenders and descenders
  end;
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var tp:tpoint;
begin         tp.X:=x; tp.Y:=y; FontLabel.Font.Size:=36;
ListBox1.itemindex:=ListBox1.ItemAtPos(tp, true);
  FontLabel.Font.Name:=ListBox1.Items[ListBox1.ItemIndex];
  FontLabel.Caption := ListBox1.Items[ListBox1.ItemIndex];
end;

end.

end.
Вот в стринггриде с отрисовкой:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormActivate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin

 StringGrid1.RowCount:=Screen.Fonts.Count+1;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
     
     if acol=0 then begin
      StringGrid1.Font.Size:=16;
      StringGrid1.Font.Name:=Screen.Fonts[arow];
      StringGrid1.Canvas.TextOut(rect.Left,rect.Top,StringGrid1.Font.Name);
     end;
  

end;

end.
Смекаеш о чем я?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2008, 17:37   #3
aesoem
Форумчанин
 
Регистрация: 24.12.2007
Сообщений: 288
По умолчанию

Цитата:
Наверное потому что ты сам это прописал ))
а что писать

так я зделал вот так - у меня получилось что список только добовляется а как его использовать?
Цитата:
scombobox1.Items := Screen.Fonts;


Код:
RichEdit1.Font.Size:=Strtointdef(sSpinEdit1.Text,1);
этим я меняю размер
[/QUOTE]RichEdit1.Font.Color:= sColorSelect1.ColorValue;[/QUOTE]
этим цвет , а сам тип шрифта -стиль как сменить?

Последний раз редактировалось aesoem; 08.04.2008 в 18:44.
aesoem вне форума Ответить с цитированием
Старый 08.04.2008, 18:44   #4
aesoem
Форумчанин
 
Регистрация: 24.12.2007
Сообщений: 288
По умолчанию

[QUOTE=aesoem;89052]а что писать

так я зделал вот так - у меня получилось что список только добовляется а как его использовать?




Код:
RichEdit1.Font.Size:=Strtointdef(sSpinEdit1.Text,1);
этим я меняю размер
Код:
RichEdit1.Font.Color:= sColorSelect1.ColorValue;
этим цвет , а сам тип шрифта -стиль как сменить?
aesoem вне форума Ответить с цитированием
Старый 08.04.2008, 20:02   #5
aesoem
Форумчанин
 
Регистрация: 24.12.2007
Сообщений: 288
По умолчанию

RichEdit1.Font.Name:=scombobox1.Tex t; ВО!
А как, сделать чтоб можно было писАть разными цветами
aesoem вне форума Ответить с цитированием
Старый 09.04.2008, 14:01   #6
Reaction
Заблокирован
 
Регистрация: 09.04.2008
Сообщений: 13
По умолчанию

Вот тебе пример как можно сделать.

А как, сделать чтоб можно было писАть разными цветами
Вложения
Тип файла: rar Example.rar (2.6 Кб, 15 просмотров)
Reaction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовый редактор Михаил Юрьевич Общие вопросы Delphi 7 04.04.2008 22:54
TXT редактор aesoem Общие вопросы Delphi 13 29.12.2007 12:35
HEX редактор Simply-Art Помощь студентам 1 08.12.2007 13:18
Текстовый редактор. GPhantom Общие вопросы C/C++ 4 02.11.2007 21:24
редактор MadDog__ Общие вопросы C/C++ 2 03.10.2007 12:49