Avatar billede jesperbaldur Nybegynder
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.
Avatar billede pstric Nybegynder
18. februar 2001 - 19:49 #1
Avatar billede martinlind Nybegynder
18. februar 2001 - 20:06 #2
Delphi\\Demos\\RichtEdit\\ der ligger en demo af en rtf editor

/Martin
Avatar billede 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

Avatar billede ysubhi Nybegynder
21. februar 2001 - 22:37 #4
Avatar billede ysubhi Nybegynder
01. marts 2001 - 09:38 #5
eller http://www.udvikleren.dk der er en artikel om hvordan man laver en teksteditor i delphi. 8-)
Avatar billede Slettet bruger
01. marts 2001 - 09:48 #6
Er <JESPERBALDUR> rejst udenlands eller hvad sker der ?
Avatar billede jesperbaldur Nybegynder
02. marts 2001 - 19:00 #7
Nej, det er jeg ikke.
Tak for hjælpen
Avatar billede Slettet bruger
02. marts 2001 - 20:10 #8
Er du tilfreds, skal du uddele point eller lukke spørgsmålet

~ibtage~
Avatar billede jesperbaldur Nybegynder
02. marts 2001 - 20:55 #9
ups, det troede jeg faktisk jeg havde gjort, tak fordi du mindede mig om det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester