Buenas :D pues este fue el proyecto final de mi tercera parcial en el Bachillerato 1 en la materia de Programaci贸n III jeje y pues si dur茅 algo haciendolo pero al final me quedo bien... no me puedo quejar, y aqu铆 lo comparto con ustedes por si alguien lo desea... La mayor ventaja que le he visto es que sirve mucho para probar las distintas fuentes (fonts) que tengo instaladas en mi compu, ya que es muy rapido con el procesamiento del texto con algunas fuentes pesadas...

Este es un screenshot de como es el editor:

Y aqu铆 esta el codigo fuente:

Form1

DELPHI:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ComCtrls, StdCtrls, ImgList, ToolWin, Menus;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     ImageList1: TImageList;
  12.     texto: TRichEdit;
  13.     StatusBar1: TStatusBar;
  14.     MainMenu1: TMainMenu;
  15.     tb: TToolBar;
  16.     ToolButton1: TToolButton;
  17.     ToolButton2: TToolButton;
  18.     ToolButton3: TToolButton;
  19.     save: TToolButton;
  20.     ToolButton5: TToolButton;
  21.     ToolButton6: TToolButton;
  22.     ToolButton8: TToolButton;
  23.     copiar: TToolButton;
  24.     cortar: TToolButton;
  25.     ToolButton12: TToolButton;
  26.     ToolButton13: TToolButton;
  27.     ToolButton14: TToolButton;
  28.     ToolButton15: TToolButton;
  29.     ToolButton16: TToolButton;
  30.     ToolButton17: TToolButton;
  31.     ToolButton18: TToolButton;
  32.     ToolButton19: TToolButton;
  33.     Archivo1: TMenuItem;
  34.     Edicion1: TMenuItem;
  35.     Formato1: TMenuItem;
  36.     Acercade1: TMenuItem;
  37.     Nuevo1: TMenuItem;
  38.     N1: TMenuItem;
  39.     Abrir1: TMenuItem;
  40.     Guardar1: TMenuItem;
  41.     Guardarcomo1: TMenuItem;
  42.     Imprimir1: TMenuItem;
  43.     Salir1: TMenuItem;
  44.     N2: TMenuItem;
  45.     Salir2: TMenuItem;
  46.     Deshacer1: TMenuItem;
  47.     N3: TMenuItem;
  48.     Cortar1: TMenuItem;
  49.     Copiar1: TMenuItem;
  50.     Pegar1: TMenuItem;
  51.     Borrar1: TMenuItem;
  52.     Seleccionartodo1: TMenuItem;
  53.     N4: TMenuItem;
  54.     Buscar1: TMenuItem;
  55.     Fuente1: TMenuItem;
  56.     Color1: TMenuItem;
  57.     Ayuda1: TMenuItem;
  58.     Acercadeleditordetexto1: TMenuItem;
  59.     OpenDialog1: TOpenDialog;
  60.     SaveDialog1: TSaveDialog;
  61.     FontDialog1: TFontDialog;
  62.     ColorDialog1: TColorDialog;
  63.     PrintDialog1: TPrintDialog;
  64.     FindDialog1: TFindDialog;
  65.     ReplaceDialog1: TReplaceDialog;
  66.     ToolButton24: TToolButton;
  67.     ToolButton25: TToolButton;
  68.     ToolBar1: TToolBar;
  69.     cb1: TComboBox;
  70.     cb2: TComboBox;
  71.     ToolButton4: TToolButton;
  72.     ToolButton7: TToolButton;
  73.     ToolButton9: TToolButton;
  74.     ToolButton10: TToolButton;
  75.     ToolButton11: TToolButton;
  76.     ToolButton20: TToolButton;
  77.     ToolButton21: TToolButton;
  78.     ToolButton22: TToolButton;
  79.     ToolButton23: TToolButton;
  80.     ToolButton26: TToolButton;
  81.     Fondo1: TMenuItem;
  82.     Remplazar1: TMenuItem;
  83.     procedure Salir2Click(Sender: TObject);
  84.     procedure ToolButton3Click(Sender: TObject);
  85.     procedure FormActivate(Sender: TObject);
  86.     procedure saveClick(Sender: TObject);
  87.     procedure textoChange(Sender: TObject);
  88.     procedure ToolButton6Click(Sender: TObject);
  89.     procedure Nuevo1Click(Sender: TObject);
  90.     procedure Abrir1Click(Sender: TObject);
  91.     procedure Guardar1Click(Sender: TObject);
  92.     procedure Salir1Click(Sender: TObject);
  93.     procedure Guardarcomo1Click(Sender: TObject);
  94.     procedure cb1Change(Sender: TObject);
  95.     procedure cb2Change(Sender: TObject);
  96.     procedure ToolButton17Click(Sender: TObject);
  97.     procedure ToolButton16Click(Sender: TObject);
  98.     procedure Fuente1Click(Sender: TObject);
  99.     procedure Color1Click(Sender: TObject);
  100.     procedure Borrar1Click(Sender: TObject);
  101.     procedure Seleccionartodo1Click(Sender: TObject);
  102.     procedure Cortar1Click(Sender: TObject);
  103.     procedure Copiar1Click(Sender: TObject);
  104.     procedure Pegar1Click(Sender: TObject);
  105.     procedure ToolButton12Click(Sender: TObject);
  106.     procedure copiarClick(Sender: TObject);
  107.     procedure cortarClick(Sender: TObject);
  108.     procedure textoMouseUp(Sender: TObject; Button: TMouseButton;
  109.       Shift: TShiftState; X, Y: Integer);
  110.     procedure ToolButton8Click(Sender: TObject);
  111.     procedure ToolButton14Click(Sender: TObject);
  112.     procedure Deshacer1Click(Sender: TObject);
  113.     procedure Acercadeleditordetexto1Click(Sender: TObject);
  114.     procedure Ayuda1Click(Sender: TObject);
  115.     procedure ToolButton19Click(Sender: TObject);
  116.     procedure ToolButton23Click(Sender: TObject);
  117.     procedure ToolButton22Click(Sender: TObject);
  118.     procedure ToolButton26Click(Sender: TObject);
  119.     procedure ToolButton10Click(Sender: TObject);
  120.     procedure ToolButton11Click(Sender: TObject);
  121.     procedure ToolButton20Click(Sender: TObject);
  122.     procedure FormCreate(Sender: TObject);
  123.     procedure Fondo1Click(Sender: TObject);
  124.     procedure Buscar1Click(Sender: TObject);
  125.     procedure Remplazar1Click(Sender: TObject);
  126.     procedure FindDialog1Find(Sender: TObject);
  127.     procedure ReplaceDialog1Find(Sender: TObject);
  128.     procedure ReplaceDialog1Replace(Sender: TObject);
  129.     procedure textoKeyUp(Sender: TObject; var Key: Word;
  130.       Shift: TShiftState);
  131.     procedure ToolButton1Click(Sender: TObject);
  132.   private
  133.     { Private declarations }
  134.   public
  135.     { Public declarations }
  136.   end;
  137.  
  138. var
  139.   Form1: TForm1;
  140.   ban1,ban2,ban3,ban4,ban5,ban6,c,a,b,ban:integer;
  141.   archivoo,archivos:string;
  142.   {ban1.-Documento abierto
  143.    ban2.-Nuevo documento
  144.    ban3.-Documento se guardo
  145.    ban4.-Documento abierto cambi贸}
  146.  
  147. implementation
  148.  
  149. uses Unit2, Unit3;
  150.  
  151. {$R *.dfm}
  152.  
  153. procedure TForm1.Salir2Click(Sender: TObject);
  154. begin
  155.   if (ban1=1) then       {1}
  156.     begin
  157.     if (ban4=1) then       {2}
  158.       begin
  159.       case messagedlg('驴Deseas guardar los cambios?',mtconfirmation,
  160.       [mbyes,mbno,mbcancel],0) of
  161.       {NO}
  162.       mrno:
  163.         begin
  164.         form1.Close;
  165.         form2.Close;
  166.         form3.Close;
  167.         end;
  168.       {YES}
  169.       mryes:
  170.         begin
  171.         texto.lines.Savetofile(archivoo);
  172.         form1.Close;
  173.         form2.Close;
  174.         form3.Close;
  175.         end;
  176.       end;
  177.      end {2}
  178.     else
  179.       begin
  180.       form1.Close;
  181.       form2.Close;
  182.       form3.Close;
  183.       end;
  184.     end  {1}
  185.   else  {1 else}
  186.     begin
  187.     if (ban6=0) then
  188.     begin
  189.     if (ban5=1) then      {si cambi贸}
  190.       begin
  191.       case messagedlg('驴Deseas guardar los cambios?',mtconfirmation,
  192.       [mbyes,mbno,mbcancel],0) of
  193.         {NO}
  194.         mrno:
  195.           begin
  196.           form1.Close;
  197.           form2.Close;
  198.           form3.Close;
  199.           end;
  200.         {YES}
  201.         mryes:
  202.           begin
  203.           if (savedialog1.execute) then
  204.             begin
  205.             archivos:=savedialog1.filename;
  206.             texto.lines.Savetofile(savedialog1.filename);
  207.             form1.Close;
  208.             form2.Close;
  209.             form3.Close;
  210.             end;
  211.           end;
  212.        end;   {case}
  213.       end
  214.     else                  {si no cambi贸}
  215.       begin
  216.       form1.Close;
  217.       form2.Close;
  218.       form3.Close;
  219.       end;
  220.     end;
  221.  
  222.     if (ban6=1) then     {si se guardo}
  223.       begin  {-}
  224.       if (ban5=1) then    {si cambio}
  225.         begin
  226.         case messagedlg('驴Deseas guardar los cambios?',mtconfirmation,
  227.         [mbyes,mbno,mbcancel],0) of
  228.           {NO}
  229.           mrno:
  230.             begin
  231.             form1.Close;
  232.             form2.Close;
  233.             form3.Close;
  234.             end;
  235.           {YES}
  236.           mryes:
  237.             begin
  238.             texto.lines.Savetofile(archivos);
  239.             form1.Close;
  240.             form2.Close;
  241.             form3.Close;
  242.             end;
  243.          end;   {case}
  244.         end
  245.       else                  {si no cambi贸}
  246.         begin
  247.         form1.Close;
  248.         form2.Close;
  249.         form3.Close;
  250.         end;
  251.       end{-}
  252.     end;   {1 else}
  253. end;
  254.  
  255. procedure TForm1.ToolButton3Click(Sender: TObject);
  256. begin
  257.   if (ban1=1) then       {1}
  258.     begin
  259.     if (ban4=1) then       {2}
  260.       begin
  261.       case messagedlg('驴Deseas guardar los cambios?',mtconfirmation,
  262.       [mbyes,mbno,mbcancel],0) of
  263.       {NO}
  264.       mrno:
  265.         begin
  266.         if opendialog1.execute then
  267.           begin
  268.           archivoo:=opendialog1.filename;
  269.           texto.Lines.loadfromfile(opendialog1.filename);
  270.           form1.caption:=opendialog1.filename + ' - Editor de Texto';
  271.           ban1:=1;
  272.           ban2:=0;
  273.           ban4:=0;
  274.           ban3:=0;
  275.           ban5:=0;
  276.           ban6:=0;
  277.           save.enabled:=false;
  278.           save.ImageIndex:=13;
  279.           end;
  280.         end;
  281.       {YES}
  282.       mryes:
  283.         begin
  284.         texto.lines.Savetofile(archivoo);
  285.         if opendialog1.execute then
  286.           begin
  287.           archivoo:=opendialog1.filename;
  288.           texto.Lines.loadfromfile(opendialog1.filename);
  289.           form1.caption:=opendialog1.filename + ' - Editor de Texto';
  290.           ban1:=1;
  291.           ban2:=0;
  292.           ban4:=0;
  293.           ban3:=0;
  294.           ban5:=0;
  295.           ban6:=0;
  296.           save.enabled:=false;
  297.           save.ImageIndex:=13;
  298.           end;
  299.         end;
  300.       end;
  301.      end {2}
  302.     else
  303.       begin
  304.       if opendialog1.execute then
  305.         begin
  306.         archivoo:=opendialog1.filename;
  307.         texto.Lines.loadfromfile(opendialog1.filename);
  308.         form1.caption:=opendialog1.filename + ' - Editor de Texto';
  309.         ban1:=1;
  310.         ban2:=0;
  311.         ban4:=0;
  312.         ban3:=0;
  313.         ban5:=0;
  314.         ban6:=0;
  315.         save.enabled:=false;
  316.         save.ImageIndex:=13;
  317.         end;
  318.       end;
  319.     end  {1}
  320.   else  {1 else}
  321.     begin
  322.     if (ban6=0) then
  323.     begin
  324.     if (ban5=1) then      {si cambi贸}
  325.       begin
  326.       case messagedlg('驴Deseas guardar los cambios?',mtconfirmation,
  327.       [mbyes,mbno,mbcancel],0) of
  328.         {NO}
  329.         mrno:
  330.           begin
  331.           if opendialog1.execute then
  332.             begin
  333.             archivoo:=opendialog1.filename;
  334.             texto.Lines.loadfromfile(opendialog1.filename);
  335.             form1.caption:=opendialog1.filename + ' - Editor de Texto';
  336.             ban1:=1;
  337.             ban2:=0;
  338.             ban4:=0;
  339.             ban3:=0;
  340.             ban5:=0;
  341.             ban6:=0;
  342.             save.enabled:=false;
  343.             save.ImageIndex:=13;
  344.             end;
  345.           end;
  346.         {YES}
  347.         mryes:
  348.           begin
  349.           if (savedialog1.execute) then
  350.             begin
  351.             archivos:=savedialog1.filename;
  352.             texto.lines.Savetofile(savedialog1.filename);
  353.             if opendialog1.execute then
  354.               begin
  355.               archivoo:=opendialog1.filename;
  356.               texto.Lines.loadfromfile(opendialog1.filename);
  357.               form1.caption:=opendialog1.filename + ' - Editor de Texto';
  358.               ban1:=1;
  359.               ban2:=0;
  360.               ban4:=0;
  361.               ban3:=0;
  362.               ban5:=0;
  363.               ban6:=0;
  364.               save.enabled:=false;
  365.               save.ImageIndex:=13;
  366.               end;
  367.             end;
  368.           end;
  369.        end;   {case}
  370.       end
  371.     else                  {si no cambi贸}
  372.       begin
  373.       if opendialog1.execute then
  374.         begin
  375.         archivoo:=opendialog1.filename;
  376.         texto.Lines.loadfromfile(opendialog1.filename);
  377.         form1.caption:=opendialog1.filename + ' - Editor de Texto';
  378.         ban1:=1;
  379.         ban2:=0;
  380.         ban4:=0;
  381.         ban3:=0;
  382.         ban5:=0;
  383.         ban6:=0;
  384.         save.enabled:=false;
  385.         save.ImageIndex:=13;
  386.         end;
  387.       end;
  388.     end;
  389.  
  390.     if (ban6=1) then     {si se guardo}
  391.       begin  {-}
  392.       if (ban5=1) then    {si cambio}
  393.         begin
  394.         case messagedlg('驴Deseas guardar los cambios?',mtconfirmation,
  395.         [mbyes,mbno,mbcancel],0) of
  396.           {NO}
  397.           mrno:
  398.             begin
  399.             if opendialog1.execute then
  400.               begin
  401.               archivoo:=opendialog1.filename;
  402.               texto.Lines.loadfromfile(opendialog1.filename);
  403.               form1.caption:=opendialog1.filename + ' - Editor de Texto';
  404.               ban1:=1;
  405.               ban2:=0;
  406.               ban4:=0;
  407.               ban3:=0;
  408.               ban5:=0;
  409.               ban6:=0;
  410.               save.enabled:=false;
  411.               save.ImageIndex:=13;