18. februar 2001 - 19:38
Der er
8 kommentarer og
1 løsning
Teksteditor i Delphi
Jeg står og skal til at lave en teksteditor i Delphi, men jeg ved slet ikke hvor jeg skal begynde. Det er derfor jeg vil spørge om der er en som har et godt eksempel med sådan en editor, og hvis i har vil jeg meget gerne have adressen dertil.
Slettet bruger
18. februar 2001 - 21:36
#3
Lav den selv efter denne
¨------------------------¨
unit RichMpas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, Buttons, ExtCtrls, Menus, StdCtrls, ComCtrls;
type
TRichForm = class(TForm)
SpeedBarPanel: TPanel;
OpenSpeedBtn: TSpeedButton;
SaveSpeedBtnn: TSpeedButton;
PrintSpeedBtn: TSpeedButton;
CutSpeedBtn: TSpeedButton;
CopySpeedBtn: TSpeedButton;
InsertSpeedBtn: TSpeedButton;
FontSpeedBtn: TSpeedButton;
BoldSpeedBtn: TSpeedButton;
ItalicSpeedBtn: TSpeedButton;
LeftSpeedBtn: TSpeedButton;
CenterSpeedBtn: TSpeedButton;
RightSpeedBtn: TSpeedButton;
FontLabel: TLabel;
PunkterLabel: TLabel;
HovedMenu: TMainMenu;
FilMenu: TMenuItem;
NytMenu: TMenuItem;
AabnMenu: TMenuItem;
LukMenu: TMenuItem;
N1: TMenuItem;
GemMenu: TMenuItem;
GemSomMenu: TMenuItem;
N2: TMenuItem;
UdskrivMenu: TMenuItem;
RedigerMenu: TMenuItem;
KlipMenu: TMenuItem;
KopierMenu: TMenuItem;
SaetIndMenu: TMenuItem;
SkriftMenu: TMenuItem;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
PrintDialog: TPrintDialog;
FontDialog: TFontDialog;
RichEdit: TRichEdit;
procedure FormCreate(Sender: TObject);
procedure RichEditSelectionChange(Sender: TObject);
procedure NytMenuClick(Sender: TObject);
procedure AabnMenuClick(Sender: TObject);
procedure LukMenuClick(Sender: TObject);
procedure GemMenuClick(Sender: TObject);
procedure GemSomMenuClick(Sender: TObject);
procedure UdskrivMenuClick(Sender: TObject);
procedure KlipMenuClick(Sender: TObject);
procedure KopierMenuClick(Sender: TObject);
procedure SaetIndMenuClick(Sender: TObject);
procedure SkriftMenuClick(Sender: TObject);
procedure BoldSpeedBtnClick(Sender: TObject);
procedure ItalicSpeedBtnClick(Sender: TObject);
procedure LeftSpeedBtnClick(Sender: TObject);
procedure CenterSpeedBtnClick(Sender: TObject);
procedure RightSpeedBtnClick(Sender: TObject);
private
RichFilNavn: string;
procedure CheckGemFil;
procedure OpdaterFilNavn(FilNavn: string);
function AktuelTekst: TTextAttributes;
end;
var
RichForm: TRichForm;
implementation
{$R *.DFM}
uses
ClipBrd;
procedure TRichForm.CheckGemFil;
begin
if not RichEdit.Modified then
Exit;
if MessageDlg(Format(\'Skal ændringerne gemmes i %s?\',
[RichFilNavn]), mtConfirmation,
mbYesNoCancel, 0) = idYes then
GemMenuClick(Self);
end;
procedure TRichForm.OpdaterFilNavn(FilNavn: string);
begin
RichFilNavn := FilNavn;
Caption := Format(\'%s - %s\',
[Application.Title, ExtractFileName(RichFilNavn)]);
end;
function TRichForm.AktuelTekst: TTextAttributes;
begin
if RichEdit.SelLength > 0 then
Result := RichEdit.SelAttributes
else
Result := RichEdit.DefAttributes;
end;
procedure TRichForm.FormCreate(Sender: TObject);
begin
Application.HintColor := clYellow;
OpenDialog.InitialDir := ExtractFilePath(ParamStr(0));
SaveDialog.InitialDir := OpenDialog.InitialDir;
RichEdit.WantTabs := True;
CutSpeedBtn.Enabled := False;
CopySpeedBtn.Enabled := False;
InsertSpeedBtn.Enabled := ClipBoard.HasFormat(CF_TEXT);
OpdaterFilNavn(\'Ingen titel\');
RichEditSelectionChange(Self);
FontLabel.Caption := \'Font: \' + RichEdit.Font.Name;
PunkterLabel.Caption := \'Punkter: \' +
IntToStr(RichEdit.Font.Size);
end;
procedure TRichForm.RichEditSelectionChange(Sender: TObject);
begin
if RichEdit.SelLength > 0 then
begin
CutSpeedBtn.Enabled := True;
CopySpeedBtn.Enabled := True;
end
else
begin
CutSpeedBtn.Enabled := False;
CopySpeedBtn.Enabled := False;
end;
InsertSpeedBtn.Enabled := ClipBoard.HasFormat(CF_TEXT);
BoldSpeedBtn.Down := fsBold in RichEdit.SelAttributes.Style;
ItalicSpeedBtn.Down :=
fsItalic in RichEdit.SelAttributes.Style;
case RichEdit.Paragraph.Alignment of
taLeftJustify : LeftSpeedBtn.Down := True;
taCenter : CenterSpeedBtn.Down := True;
taRightJustify : RightSpeedBtn.Down := True;
end;
FontLabel.Caption := \'Font: \' + RichEdit.SelAttributes.Name;
PunkterLabel.Caption :=
\'Punkter: \' + IntToStr(RichEdit.SelAttributes.Size);
end;
procedure TRichForm.NytMenuClick(Sender: TObject);
begin
CheckGemFil;
OpdaterFilNavn(\'Ingen titel\');
RichEdit.Lines.Clear;
RichEdit.Modified := False;
end;
procedure TRichForm.AabnMenuClick(Sender: TObject);
begin
CheckGemFil;
if OpenDialog.Execute then
begin
RichEdit.Lines.LoadFromFile(OpenDialog.FileName);
OpdaterFilnavn(OpenDialog.FileName);
RichEdit.SetFocus;
RichEdit.Modified := False;
end;
end;
procedure TRichForm.LukMenuClick(Sender: TObject);
begin
CheckGemFil;
Close;
end;
procedure TRichForm.GemMenuClick(Sender: TObject);
begin
if RichFilNavn = \'Ingen titel\' then
GemSomMenuClick(Sender)
else
begin
RichEdit.Lines.SaveToFile(SaveDialog.FileName);
RichEdit.Modified := False;
end;
end;
procedure TRichForm.GemSomMenuClick(Sender: TObject);
begin
if SaveDialog.Execute then
begin
if FileExists(SaveDialog.FileName) then
if MessageDlg(Format(\'Må %s overskrives?\',
[SaveDialog.FileName]), mtConfirmation,
mbYesNoCancel, 0) <> idYes then
Exit;
RichEdit.Lines.SaveToFile(SaveDialog.FileName);
OpdaterFilNavn(SaveDialog.FileName);
RichEdit.Modified := False;
end;
end;
procedure TRichForm.UdskrivMenuClick(Sender: TObject);
begin
if PrintDialog.Execute then
RichEdit.Print(RichFilNavn);
end;
procedure TRichForm.KlipMenuClick(Sender: TObject);
begin
RichEdit.CutToClipboard;
end;
procedure TRichForm.KopierMenuClick(Sender: TObject);
begin
RichEdit.CopyToClipboard;
end;
procedure TRichForm.SaetIndMenuClick(Sender: TObject);
begin
RichEdit.PasteFromClipboard;
end;
procedure TRichForm.SkriftMenuClick(Sender: TObject);
begin
FontDialog.Font.Assign(RichEdit.SelAttributes);
if FontDialog.Execute then
AktuelTekst.Assign(FontDialog.Font);
RichEdit.SetFocus;
FontLabel.Caption := \'Font: \' + FontDialog.Font.Name;
PunkterLabel.Caption :=
\'Punkter: \' + IntToStr(FontDialog.Font.Size);
end;
procedure TRichForm.BoldSpeedBtnClick(Sender: TObject);
begin
if BoldSpeedBtn.Down then
AktuelTekst.Style := AktuelTekst.Style + [fsBold]
else
AktuelTekst.Style := AktuelTekst.Style - [fsBold];
end;
procedure TRichForm.ItalicSpeedBtnClick(Sender: TObject);
begin
if ItalicSpeedBtn.Down then
AktuelTekst.Style := AktuelTekst.Style + [fsItalic]
else
AktuelTekst.Style := AktuelTekst.Style - [fsItalic];
end;
procedure TRichForm.LeftSpeedBtnClick(Sender: TObject);
begin
RichEdit.Paragraph.Alignment := taLeftJustify;
end;
procedure TRichForm.CenterSpeedBtnClick(Sender: TObject);
begin
RichEdit.Paragraph.Alignment := taCenter;
end;
procedure TRichForm.RightSpeedBtnClick(Sender: TObject);
begin
RichEdit.Paragraph.Alignment := taRightJustify;
end;
end.
--------------
ib