Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: программирование на Delphi и Lazarus


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный платный хостинг на базе Windows 2008

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Boriss
Статус: Академик
Рейтинг: 1144
∙ повысить рейтинг »
Jimhucksly
Статус: 5-й класс
Рейтинг: 781
∙ повысить рейтинг »
Тимошенко Дмитрий
Статус: Студент
Рейтинг: 489
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Delphi и Lazarus

Номер выпуска:1459
Дата выхода:08.11.2009, 19:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:578 / 211
Вопросов / ответов:1 / 1

Вопрос № 173946: Добрый вечер уважаемые эксперты! Прошу вас помочь в написани программы! Разработать приложение "Текстовый редактор" по типу стандартного редактора "Блокнот" с исполь...



Вопрос № 173946:

Добрый вечер уважаемые эксперты!
Прошу вас помочь в написани программы!
Разработать приложение "Текстовый редактор" по типу стандартного редактора "Блокнот" с использованием компонента ActionList и дополнительно обеспечить реализацию перечисленных ниже функций:
а) с помощью действий, задаваемых в ActionList, добавить в меню раздел, позволяющий работать с выравниванием текста (по правому, левому краям, и по центру).
б) добавить компонент PopupMenu и задать в данном меню действия, отображенные в разделе "Правка" MainMenu.
в) задать "горячие клавиши" для действий, перечисленных в ActionList.
г) с помощью действий, задаваемых в ActionList, добавить в меню раздел, позволяющий работать со стилем текста.
и если не затруднит написать небольшие коментарии к процедурам!!

Заранее огромное спасибо!!!!

Отправлен: 03.11.2009, 18:32
Вопрос задал: Андреев Дмитрий Фёдорович, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Евгений/Genia007/, Бакалавр :
Здравствуйте, Андреев Дмитрий Фёдорович.
Вот посмотрите, что у меня получилось:
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, ExtCtrls, StdCtrls, ComCtrls, ActnList,
RichEdit, Menus, StdActns, ExtActns;
type
TMain = class(TForm)
ImageList1: TImageList;
RichEdit1: TRichEdit;
StatusBar1: TStatusBar;
ColorDialog1: TColorDialog;
ActionList1: TActionList;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditSelectAll1: TEditSelectAll;
EditUndo1: TEditUndo;
EditDelete1: TEditDelete;
SearchFind1: TSearchFind;
SearchFindNext1: TSearchFindNe xt;
SearchReplace1: TSearchReplace;
SearchFindFirst1: TSearchFindFirst;
RichEditBold1: TRichEditBold;
RichEditItalic1: TRichEditItalic;
RichEditUnderline1: TRichEditUnderline;
RichEditStrikeOut1: TRichEditStrikeOut;
RichEditBullets1: TRichEditBullets;
RichEditAlignLeft1: TRichEditAlignLeft;
RichEditAlignRight1: TRichEditAlignRight;
RichEditAlignCenter1: TRichEditAlignCenter;
FontEdit1: TFontEdit;
Newdoc: TAction;
FileOpen1: TFileOpen;
FileSaveAs1: TFileSaveAs;
FileExit1: TFileExit;
Printdoc: TAction;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N6: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
Exit1: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N20: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
N24: TMenuItem;
N25: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N21: TMenuItem;
N26: TMenuItem;
Colfont: TAction;
N27: TMenuItem;
PopupMenu1: TPopupMenu;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
N31: TMenuItem;
N32: TMenuItem;
N33: TMenuItem;
N34: TMenuItem;
N35: TMenuItem;
N36: TMenuItem;
N37: TMenuItem;
N38: TMenuItem;
N39: TMenuItem;
N40: TMenuItem;
N41: TMenuItem;
N42: TMenuItem;
N43: TMenuItem;
N44: TMenuItem;
procedure FileOpen1OpenDialogCanClose(Sender: TObject;
var CanClose: Boolean);
procedure FileSaveAs1SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean);
procedure FontEdit1Accept(Sender: TObject);
procedure PrintdocExecute(Sender: TObject);
procedure NewdocExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ShowHint(Sender: TObject);
procedure RichEditChange(Sender: TObject);
procedure RichEdit1SelectionChange(Sender: TObject);
procedure ColfontExecute(Sender: TObject);
procedure SearchFind1FindDialogClose(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
FUpdating: Boolean;
function CurrText: TTextAttributes;
procedure UpdateCursorPos;
procedure SetModified(Value: Boolean);
public
{ Public declarations }
end;

var
Main: TMain;

implementation

resourcestring
sColRowInfo = 'Line: %3d Col: %3d';
sModified = 'Modified';
sUntitled = 'Untitled';

{$R *.dfm}

function TMain.CurrText: TTextAttributes; // Применение атрибутов к тексту
begin
if RichEdit1.SelLength > 0 then Result := RichEdit1.SelAttributes
else Result := RichEdit1.DefAttributes;
end;

procedure SetFileName(const FileName: String); // Установка имени файла
var FFileName: string;
begin
FFileName := FileName;
Main.Caption := Format('%s - %s', [ExtractFileName(FileName), Application.Title]);
end;

procedure TMain.FormCreate(Sender: TObject); // Создаём форму
begin
Application.OnHint := ShowHint;
FileOpen1.Dialog.InitialDir := ExtractFilePath(ParamStr(0));
FileSaveAs1.Dialog.InitialDir := FileOpen1.Dialog.InitialDir;
end;

procedure TMain.FileOpen1OpenDialogCanClose(Sender: TObject; // Загружаем файл
var CanClose: Boolean);
begin
RichEdit1.Lines.LoadFromFile(FileOpen1.Dialog.FileName);
SetFileName(FileOpen1.Dialog.FileName);
end;

procedure TMain.FileSaveAs1SaveDialogCanClose(Sender: TObject;
var CanClose: Boolean); // Сохраняем файл
begin
RichEdit1.Lines.SaveToFile(FileSaveA s1.Dialog.FileName+'.rtf');
end;

procedure TMain.FontEdit1Accept(Sender: TObject); // Выбрали шрифт
begin
RichEdit1.Font:= FontEdit1.Dialog.Font;
end;

procedure TMain.PrintdocExecute(Sender: TObject); // Распечатываем текст
begin
RichEdit1.Print('');
end;

procedure TMain.NewdocExecute(Sender: TObject); // Создали новый документ
begin
RichEdit1.Lines.Clear;
SetFileName(sUntitled);
end;

procedure TMain.ShowHint(Sender: TObject); // Показ информации в статус баре
begin
if Length(Application.Hint) > 0 then
begin
StatusBar1.SimplePanel := True;
StatusBar1.SimpleText := Application.Hint;
end
else StatusBar1.SimplePanel := False;
end;

procedure TMain.FormShow(Sender: TObject); // Перед показом формы сделать
begin
UpdateCursorPos;
RichEditChange(nil);
RichEdit1.SetFocus;
end;

procedure TMain.UpdateCursorPos; // Обновл ение позиции курсора
var
CharPos: TPoint;
begin
CharPos.Y := SendMessage(RichEdit1.Handle, EM_EXLINEFROMCHAR, 0,
RichEdit1.SelStart);
CharPos.X := (RichEdit1.SelStart -
SendMessage(RichEdit1.Handle, EM_LINEINDEX, CharPos.Y, 0));
Inc(CharPos.Y);
Inc(CharPos.X);
StatusBar1.Panels[0].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]);
end;

procedure TMain.RichEditChange(Sender: TObject); // При изменениях в ричэдите делаем
begin
SetModified(RichEdit1.Modified);
end;

procedure TMain.SetModified(Value: Boolean); // Установка модификации
begin
if Value then StatusBar1.Panels[1].Text := sModified
else StatusBar1.Panels[1].Text := '';
end;

procedure TMain.RichEdit1SelectionChange(Sender: TObject); // При выборе текста делаем
begin
UpdateCursorPos;
end;

procedure TMain.ColfontExecute(Sender: TObject); // Выбор цвета шрифта
begin
If not ColorDia log1.Execute then exit
else begin
if FUpdating then Exit;
CurrText.Color:=ColorDialog1.Color;
end;
end;

procedure TMain.SearchFind1FindDialogClose(Sender: TObject); // Закрытие диалога поиска
begin
Richedit1.SetFocus;
end;

procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;

end.
Проект создан на базе стандартного компонента RichEdit. Прикрепленный файл: загрузить »

-----
Помогли тебе, помоги и ты.

Ответ отправил: Евгений/Genia007/, Бакалавр
Ответ отправлен: 03.11.2009, 20:22

Оценка ответа: 5
Комментарий к оценке:
спасибо!

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 256155 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2009.6.10 от 26.10.2009

    В избранное