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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Некоторые функции текстового редактора 
:(
    Опции темы
jaAlex
Дата 29.10.2006, 02:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

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



Помогите пожалуйста найти ответы на такие вот три вопроса:
 1. Как в меню текстового редактора (разрабатываемого мною) реализовать "Отмену"(Ctrl+Z) стандартного текстового редактора, и 
 2. Поиск по Memo1,
 3. Реализацию функций "Удалить", "Выделить все", "Время и дата" на то поле (у меня их 2, Memo1 и Memo2), на котором стоит курсор.
PM MAIL   Вверх
Yanis
Дата 29.10.2006, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 72
Всего: 111



Цитата(jaAlex @  29.10.2006,  03:40 Найти цитируемый пост)
1. Как в меню текстового редактора (разрабатываемого мною) реализовать "Отмену"(Ctrl+Z) стандартного текстового редактора

Код
TCustomEdit.Undo;

или
Код
SendMessage(Handle, WM_UNDO, 0, 0);



Цитата(jaAlex @  29.10.2006,  03:40 Найти цитируемый пост)
2. Поиск по Memo1

Цитата
Delphi IDE -> F1
Index (Предметный указатель): Position,example (Delphi)
Position, Execute, FindText, OnFind, SelStart, SelLength example (Delphi)
read!


Цитата(jaAlex @  29.10.2006,  03:40 Найти цитируемый пост)
3. Реализацию функций "Удалить", "Выделить все", "Время и дата" на то поле (у меня их 2, Memo1 и Memo2), на котором стоит курсор. 

Код
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    FindDialog1: TFindDialog;
    Memo2: TMemo;
    Button1: TButton;
    procedure Memo2Enter(Sender: TObject);
    procedure Memo1Enter(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  bFirstFocused: Boolean = True;

implementation

{$R *.dfm}

procedure TForm1.Memo2Enter(Sender: TObject);
begin
  bFirstFocused := False;
end;

procedure TForm1.Memo1Enter(Sender: TObject);
begin
  bFirstFocused := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if bFirstFocused then
    begin
      Memo1.SelectAll;
    end
  else
    begin
      Memo2.SelectAll;
    end;
end;

end.


Все остальные функции типа удалить и пр. по образу и подобию.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Bose
Дата 29.10.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



jaAlex, в стандартных Actionах реализовано практически всё, что тебе нужно  smile 
PM MAIL WWW Skype   Вверх
jaAlex
Дата 31.10.2006, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

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



Всем спасибо, все эти функции благодаря вам теперь работают. Но тут возник еще один вопрос: вот в Word'е, когда, скажем, меняешь шрифт, цвет, наклонность или жирность букв, эта функция начинает работать с набираемого текста после изменения данных параметров либо меняет эти параметры у выделенного текста. Но в блокноте таких функций нет. Вот и в написанном мною блокнотике тоже нет, а хочется!!! Все эти параметры сразу же после их изменения меняют весь текст - его шрифт, цвет, ну и так далее. А как сделать аналогично Word'у? 
PM MAIL   Вверх
Bose
Дата 31.10.2006, 02:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1458
Регистрация: 5.3.2005
Где: Riga, Latvia

Репутация: 23
Всего: 51



воспользуйся компонентом TRichEdit
PM MAIL WWW Skype   Вверх
jaAlex
Дата 31.10.2006, 05:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

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



Цитата(Bose @  31.10.2006,  02:13 Найти цитируемый пост)
воспользуйся компонентом TRichEdit

Дело в том, что я и так использую сейчас TRichEdit, и все функции уже реализовал в своем проекте. НО: изменение шрифта и цвета шрифта работает сразу на весь текст, а на как в WORD'е. Как это реализовать??? 
И еще такой вопрос: как выполнить какое - нибудь действие (к примеру, Button1.Click), если весь текст (либо какая - то его часть выделена)?
PM MAIL   Вверх
Reptile
Дата 31.10.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 30.9.2006
Где: Украина, Первомай ск

Репутация: нет
Всего: 3



Цитата(jaAlex @ 31.10.2006,  01:14)
Все эти параметры сразу же после их изменения меняют весь текст

Вот пример как сделать выделений текст жырным smile  :
Код

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
    if (RichEdit1.Font.Style = []) then
  begin
    RichEdit1.SelAttributes.Style := [fsBold];
  end
  else
  begin
    RichEdit1.SelAttributes.Style := [];
  end;
end;

Но прийдется учитывать, что текст может уже подчеркнут,  тогда нужно будет персмотреть условие, но принцып такой smile 
PM MAIL   Вверх
Snowy
Дата 31.10.2006, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Посмотри в папке Delphi\Demos\RichEdit
PM MAIL   Вверх
jaAlex
Дата 1.11.2006, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

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



В общем, на данный момент я реализовал следующие функции:
1. Полужирный, курсив, подчеркнутый, зачеркнутый текст. Работает все как надо(либо выделенный текст, либо последующий после нажатия кнопок), причем 8 стилей подчеркивания и зачеркивания.
2. Цвет. Работает тоже как надо(либо выделенный текст, либо последующий после нажатия кнопки).
3. Выравнивание - по левому краю, по центру, по правому краю. Работает как в Word'е.
Если кого - то заинтересует, как все это реализовано, пишите здесь - все выложу. 
Теперь помогите, пожалуйста, решить следующие вопросы:
1. Шрифт. Должен меняться либо у выделенного текста, либо у последующего после нажатия кнопки.(Как цвет не пойдет - у RichEdit1.SelAtributes не такого параметра как font.)
2. При выделении текста(всего либо какой - то его части) должны производиться какие - либо действия(к примеру, Button1.Click). Как???
3. Таблицы и границы. Для начала создание таблиц, указавая количесво строк и столбцов.
Помогите, пожалуйста, в решении данных вопросов.
PM MAIL   Вверх
Snowy
Дата 1.11.2006, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(jaAlex @  2.11.2006,  00:32 Найти цитируемый пост)
 Шрифт.
Это в указанном выше примере можно посмотреть.

Цитата(jaAlex @  2.11.2006,  00:32 Найти цитируемый пост)
При выделении текста(всего либо какой - то его части) должны производиться какие - либо действия
А как определить, что выделение закончено? Может я только часть выделил и сижу думаю...

Цитата(jaAlex @  2.11.2006,  00:32 Найти цитируемый пост)
Таблицы и границы.
Это уже спецификация 2.0.
Стандартный контрол дельфи поддерживает только 1.0, как универсальный.
Ричь, спецификации 2.0 штатно не идёт. Только отдельно - в JVCL или Rx.
PM MAIL   Вверх
jaAlex
Дата 2.11.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

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



Цитата(Snowy @  1.11.2006,  23:37 Найти цитируемый пост)
А как определить, что выделение закончено? Может я только часть выделил и сижу думаю...

Как только выделил, так сразу выполнять какие - либо действия, не беря во внимание, думаешь ты или нет.

Цитата(Snowy @  1.11.2006,  23:37 Найти цитируемый пост)
Это уже спецификация 2.0.Стандартный контрол дельфи поддерживает только 1.0, как универсальный.Ричь, спецификации 2.0 штатно не идёт. Только отдельно - в JVCL или Rx.

Дк качать RXRichEdit надо? Если да, то подскажи где(кинь ссылку).
И кстати, при открытии RTF файла с таблицей все нормально определяется. И можно редактировать текст в таблице.
PM MAIL   Вверх
Snowy
Дата 2.11.2006, 01:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(jaAlex @  2.11.2006,  01:02 Найти цитируемый пост)
Как только выделил, так сразу выполнять какие - либо действия, не беря во внимание, думаешь ты или нет.
Ну хорошо.
Поставил я курсор в позицию 12:8. Далее, нажимаю Shift + вправо, вправо, вправо, ... , вправо...
Как определить, что я нажал вправо последний раз, а не нажму через полсекунды ещё раз?

Цитата(jaAlex @  2.11.2006,  01:02 Найти цитируемый пост)
Дк качать RXRichEdit надо?
Если тебе нужен функционал 2.0, то да. Либо другой контрол с поддержкой 2.0 и выше.

Цитата(jaAlex @  2.11.2006,  01:02 Найти цитируемый пост)
Если да, то подскажи где(кинь ссылку).
Я его не юзаю, но вроде, как, он входит в JVCL.

Цитата(jaAlex @  2.11.2006,  01:02 Найти цитируемый пост)
И кстати, при открытии RTF файла с таблицей все нормально определяется. И можно редактировать текст в таблице.
Это потому что системный контрол версии 2.2.
А вот интерфейсы в дельфи 1.0.
Сам контрол на это способен, но дельфи не имеет таких заголовков.
Заголовки дельфи имеют версию 1.0 для абсолютной совместимости.
Хотя это уже давно не актуально - контрол версии 2.0 ставится с 5-м IE.
Но у борланда пока политика на "работу-во-всез-версиях-винды". Потому у нас VCL до сих пор не юникодный - держут 9х винды.
Так что встроенный позитив нас ждёт не ранее 2008-й версии.

Добавлено @ 01:24 
ЗЫ. Про таблицы в RichEdit съедена не одна тема.
PM MAIL   Вверх
jaAlex
Дата 2.11.2006, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

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



Цитата(Snowy @  2.11.2006,  01:22 Найти цитируемый пост)
Ну хорошо.Поставил я курсор в позицию 12:8. Далее, нажимаю Shift + вправо, вправо, вправо, ... , вправо...Как определить, что я нажал вправо последний раз, а не нажму через полсекунды ещё раз?

Надо так: как только выделил хоть один символ, так сразу выполнять какие - либо действия.

Цитата(Snowy @  2.11.2006,  01:22 Найти цитируемый пост)
Это потому что системный контрол версии 2.2.А вот интерфейсы в дельфи 1.0.Сам контрол на это способен, но дельфи не имеет таких заголовков.Заголовки дельфи имеют версию 1.0 для абсолютной совместимости.Хотя это уже давно не актуально - контрол версии 2.0 ставится с 5-м IE.Но у борланда пока политика на "работу-во-всез-версиях-винды". Потому у нас VCL до сих пор не юникодный - держут 9х винды.Так что встроенный позитив нас ждёт не ранее 2008-й версии.

Хреновая политика у них, теряют они позиции в моих глазах(да и не только наверно) из - за вот этого всего.
А RXRichEdit  поддерживает все функции RichEdit'а? Не получится ли так, что поставив первый мне придется менять большинство функций по коду для второго?

И последний вопрос: с RXRichEdit можно выполнить таблицы, еще, скажем, автофигуры(линии всякие, фигуры и т.п.), вставку картинки?
PM MAIL   Вверх
Snowy
Дата 2.11.2006, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(jaAlex @  2.11.2006,  02:47 Найти цитируемый пост)
Надо так: как только выделил хоть один символ, так сразу выполнять какие - либо действия.
Ну тогда просто вызывай функцию с проверкой, есть ли выделение на событиях OnKeyUp и OnMouseUp.

Цитата(jaAlex @  2.11.2006,  02:47 Найти цитируемый пост)
Хреновая политика у них, теряют они позиции в моих глазах(да и не только наверно) из - за вот этого всего.
Они стараются.
Сейчас вот отделятся и ударются в развитие.
Но результаты будут не ранее BDS2008.

Цитата(jaAlex @  2.11.2006,  02:47 Найти цитируемый пост)
А RXRichEdit  поддерживает все функции RichEdit'а?
Нет.
Все вункции не поддерживает никто.
Возми тот же WordPad от микрософта - и тот не всё держит.
Контрол апгрейдится чаще. И поддерживать все его возможности опасно - то, что держит XP может не дердать 2000-я.

Цитата(jaAlex @  2.11.2006,  02:47 Найти цитируемый пост)
Не получится ли так, что поставив первый мне придется менять большинство функций по коду для второго?
Нет. Версионность полностью обратно совместимая.
Все функции версии 1.0 включены в 2.0.

Цитата(jaAlex @  2.11.2006,  02:47 Найти цитируемый пост)
И последний вопрос: с RXRichEdit можно выполнить таблицы, еще, скажем, автофигуры(линии всякие, фигуры и т.п.), вставку картинки?
Автофигуры - нет. Это не ворд. Нужен ворд - юзай его сервер.
Картинки - да.
PM MAIL   Вверх
jaAlex
Дата 2.11.2006, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

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



Цитата(Snowy @  2.11.2006,  02:33 Найти цитируемый пост)
Автофигуры - нет. Это не ворд. Нужен ворд - юзай его сервер.

А где бы его взять, и литературу желательно бы тоже почитать.
PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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