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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.02.2008, 18:54   #1
Snake_ua
Пользователь
 
Регистрация: 25.09.2007
Сообщений: 66
По умолчанию Текстовый редактор

Создаю текстовый редактор (ему далеко до совершенства). Но натолкнулся на несколько проблемм.
Помогите создать код сохранения (Save a нe Save as...)
В строке состояния отображалась позиция курсора
Реализовать печать
Вложения
Тип файла: rar TextPad.rar (17.1 Кб, 128 просмотров)
Snake_ua вне форума
Старый 16.02.2008, 19:53   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

К твоему коду.

Код:
procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
StatusBar1.Panels.Items[0].Text:='X='+inttostr(x);
StatusBar1.Panels.Items[1].Text:='Y='+inttostr(Y);
end;
А Save и Save As чем не нравится?
Всё гениальное - просто!
Air вне форума
Старый 16.02.2008, 21:40   #3
Snake_ua
Пользователь
 
Регистрация: 25.09.2007
Сообщений: 66
По умолчанию

Спасибо, что Вы мне дали код отображения позиции мышки, но мне надо позиция курсора, в какой строке и через сколько символов наш курсор мерцает
Snake_ua вне форума
Старый 16.02.2008, 22:10   #4
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

позиция курсора в теме "Позиция курсора в TMemo"
http://www.programmersforum.ru/showt...5724#post75724
Всё гениальное - просто!

Последний раз редактировалось Air; 16.02.2008 в 22:56.
Air вне форума
Старый 16.02.2008, 22:50   #5
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Для печати смотри здесь
http://www.programmersforum.ru/showt...E5%F7%E0%F2%FC
Всё гениальное - просто!
Air вне форума
Старый 16.02.2008, 23:59   #6
Snake_ua
Пользователь
 
Регистрация: 25.09.2007
Сообщений: 66
По умолчанию

Огромное спасибо!!
Snake_ua вне форума
Старый 19.02.2008, 12:29   #7
Snake_ua
Пользователь
 
Регистрация: 25.09.2007
Сообщений: 66
По умолчанию

Возник новый вопрос. Как сделать так, что-бы текст между скобками (), кавычками "" выделялся другим цветом? Совершенно нет идей по этому поводу
Snake_ua вне форума
Старый 19.02.2008, 13:06   #8
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Ну поскольку все делается в TMemo, самая простая идея - отнять у него "рисование" и делать это самому.
B_N вне форума
Старый 19.02.2008, 13:10   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как сделать так, что-бы текст между скобками (), кавычками "" выделялся другим цветом? Совершенно нет идей по этому поводу
Когда-то знакомая показала пример подсветки части текста, найденной по релевантности с введенной строкой:

Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    RichEdit1: TRichEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var      ts:TStringList;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var j,k,e,t,l, lpr:integer; rs,s:string;
begin
 for k:=0 to Memo1.Lines.Count-1 do begin
  ts.Clear;
  ts.DelimitedText:=Memo1.Lines[k];lpr:=0;
  //**************************************************************************
     //********* FOR ******************
     for j :=0  to RichEdit1.Lines.Count-1  do
     begin
       rs:=RichEdit1.Lines[j];
       for e:=1 to length(rs)-length(Memo1.Lines[k])+1 do begin
         s:=AnsiLowerCase(copy(rs,e,length(Memo1.Lines[k]))); t:=0;
         //********* FOR ******************
         for l :=0  to ts.Count-1  do
         begin
           if pos(AnsiLowerCase(ts[l]),s)<>0 then inc(t);
         end;
         //******* END FOR ****************{}
         if t=ts.Count then begin
          //********** WITH **********
         { Insert('0',rs,e);
          RichEdit1.Lines[j]:=rs;{}
         with richedit1 do
         begin
          selstart:=e+lpr-1;
          sellength:=length(Memo1.Lines[k])+1;
          selattributes.color:=clBlue;
         end;
         end;
          //********** END WITH ****** {}
       end;
         lpr:=lpr+length(RichEdit1.Lines[j])+2;
     end;
     //******* END FOR ****************{}
  //**************************************************************************
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
with richedit1 do
         begin
          selstart:=length(RichEdit1.Lines[0]);
          sellength:=0;
          selattributes.color:=clBlue;
         end;
ts:=TStringList.Create;
ts.Delimiter:=' ';
end;

end.
В RichEdit вписывается текст
в Мемо в каждую строку пишутся слова или фразы, разделенные пробелом, которые нужно подсветить в тексте, причем порядок слов может быть любой главное чтоб они были рядом в РичЕдите.

Попробуй, может намыслиш правильную сторону темной силы.
I'm learning to live...
Stilet вне форума
Старый 19.02.2008, 13:31   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

О, я тож кое-что накрапал
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  x, y: Integer;
  fS: Integer;
  fK: Boolean;
  s: String;
  c: Char;

  procedure NewLine;
  begin
    y := y + Printer.Canvas.TextHeight (s);
    if y > Printer.PageHeight then begin
      Printer.NewPage;
      y := Printer.Canvas.TextHeight (s);
    end;
  end;

  procedure NewChar (c: Char);
  begin
    if (x + Printer.Canvas.TextWidth (c)) > Printer.PageWidth then begin
      NewLine;
      x := 0;
    end;
    Printer.Canvas.TextOut (x, y, c);
    x := x + Printer.Canvas.TextWidth (c);
  end;

begin
  if PrintDialog1.Execute then begin
    fS := 0;
    fK := False;
    y := 0;
    c := #0;
    Printer.BeginDoc;
    for i := 0 to Memo1.Lines.Count - 1 do
      with Printer.Canvas do begin
        x := 0;
        s := Memo1.Lines [i];
        NewLine;
        for j := 1 to Length (s) do begin
          c := s[j];
          if c = '(' then Inc(fS);
          if c = '"' then fK := not fK;
          Font.Color := clBlack;
          if fS <> 0 then Font.Color := clRed;
          if fK then Font.Color := clBlue;
          if c = '"' then Font.Color := clBlue;
          NewChar (c);
          if (c = ')') and (fS > 0) then Dec(fS);
        end;
      end;
    Printer.EndDoc;
  end;
end;
Sibedir вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовый редактор Славный Общие вопросы Delphi 3 02.07.2008 23:17
Текстовый редактор Михаил Юрьевич Общие вопросы Delphi 8 10.04.2008 20:17
Текстовый редактор Михаил Юрьевич Общие вопросы Delphi 7 04.04.2008 22:54
Текстовый редактор. GPhantom Общие вопросы C/C++ 4 02.11.2007 21:24