Difference between revisions of "SynEdit/es"

From Free Pascal wiki
Jump to navigationJump to search
Line 1: Line 1:
 
{{SynEdit}}[[category:Castellano]][[category:Español]]
 
{{SynEdit}}[[category:Castellano]][[category:Español]]
  
SynEdit es un paquete que contiene un componente editor de código fuente llamado TSynEdit, varios resaltadores de sintaxis y otros componentes utilizados para la edición de código fuente. Está basado en SynEdit 1.3 a partir del cual fué adaptado y extendido con características tales como soporte UTF-8 y plegado de código (code folding).
+
   SynEdit es un paquete que contiene un componente editor de código fuente llamado TSynEdit, varios resaltadores de sintaxis y otros componentes utilizados para la edición de código fuente. Está basado en SynEdit 1.3 a partir del cual fué adaptado y extendido con características tales como soporte UTF-8 y plegado de código (code folding).
  
 
== SynEdit en el IDE ==
 
== SynEdit en el IDE ==
  
El componente SynEdit es un paquete que ya viene integrado con Lazarus debido a que lo utiliza el propio IDE. Es por ello que no existe un fichero .lpk.
+
   El componente SynEdit es un paquete que ya viene integrado con Lazarus debido a que lo utiliza el propio IDE. Es por ello que no existe un fichero .lpk.
 
Estos componentes se pueden encontrar dentro de la paleta de componentes en la solapa 'SynEdit'.
 
Estos componentes se pueden encontrar dentro de la paleta de componentes en la solapa 'SynEdit'.
  
 
== Ejemplos ==
 
== Ejemplos ==
  
Se puede encontrar un ejemplo en lazarus/examples/synedit1.lpi.
+
   Se puede encontrar un ejemplo en lazarus/examples/synedit1.lpi.
  
 
=== Como añadir soporte para Copy, Paste, Cut, Undo, Redo, etc ===
 
=== Como añadir soporte para Copy, Paste, Cut, Undo, Redo, etc ===
  
Estas características se pueden implementar utilizando mandatos SynEdit.
+
   Estas características se pueden implementar utilizando mandatos SynEdit.
  
<delphi>
+
<delphi> uses
uses
 
 
   ...
 
   ...
 
   SynEdit, SynEditKeyCmds;
 
   SynEdit, SynEditKeyCmds;
  
procedure TfrmPrincipal.HandleCodigoKeyDown(Sender: TObject; var Key: Word;
+
procedure TfrmPrincipal.HandleCodigoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
  Shift: TShiftState);
+
begin
begin
 
 
   if (Shift = [ssCtrl]) then
 
   if (Shift = [ssCtrl]) then
 
   begin
 
   begin
Line 32: Line 30:
 
     end;
 
     end;
 
   end;
 
   end;
end;
+
end;</delphi>
</delphi>
 
 
 
  
 
=== Menú con Deshacer y Rehacer  ===
 
=== Menú con Deshacer y Rehacer  ===
  
<delphi>
+
<delphi> procedure TForm1.MenuRehacer(Sender: TObject);
procedure TForm1.MenuRehacer(Sender: TObject);
+
begin
begin
 
 
   SynEdit1.Redo;
 
   SynEdit1.Redo;
end;
+
end;
  
procedure TForm1.MenuDeshacer(Sender: TObject);
+
procedure TForm1.MenuDeshacer(Sender: TObject);
begin
+
begin
 
   SynEdit1.Undo;
 
   SynEdit1.Undo;
end;
+
end;</delphi>
</delphi>
 
 
 
  
 
=== Menus con Duplicar e intercambiar líneas  ===
 
=== Menus con Duplicar e intercambiar líneas  ===
<delphi>
+
<delphi> //Duplicar Línea
 
+
procedure TForm1.MenuDuplicarLinea(Sender: TObject);
//Duplicar Línea
+
begin
procedure TForm1.MenuDuplicarLinea(Sender: TObject);
 
begin
 
 
   SynEdit1.Lines.Insert(CustSynEdit().CaretY,CustSynEdit().LineText);
 
   SynEdit1.Lines.Insert(CustSynEdit().CaretY,CustSynEdit().LineText);
end;  
+
end;  
  
 
+
//Intercambiar Línea hacia Arriba
//Intercambiar Línea hacia Arriba
+
procedure TForm1.MenuLineaArriba(Sender: TObject);
procedure TForm1.MenuLineaArriba(Sender: TObject);
 
begin
 
if CustSynEdit.CaretY -1 >= 1 then
 
 
  begin
 
  begin
 +
  if CustSynEdit.CaretY -1 >= 1 then
 +
  begin
 
     CustSynEdit.Lines.Exchange(CustSynEdit.CaretY -1 ,CustSynEdit.CaretY-2);
 
     CustSynEdit.Lines.Exchange(CustSynEdit.CaretY -1 ,CustSynEdit.CaretY-2);
 
     CustSynEdit.CaretY:=CustSynEdit.CaretY-1;
 
     CustSynEdit.CaretY:=CustSynEdit.CaretY-1;
 +
  end;
 
  end;
 
  end;
end;
 
  
//Intercambiar Línea hacia Abajo
+
//Intercambiar Línea hacia Abajo
procedure TForm1.MenuLineaAbajo(Sender: TObject);
+
procedure TForm1.MenuLineaAbajo(Sender: TObject);
begin
 
if ( CustSynEdit.CaretY + 1 <= CustSynEdit.Lines.Count) then
 
 
  begin
 
  begin
 +
  if ( CustSynEdit.CaretY + 1 <= CustSynEdit.Lines.Count) then
 +
  begin
 
     CustSynEdit.Lines.Exchange(CustSynEdit.CaretY-1,CustSynEdit.CaretY);
 
     CustSynEdit.Lines.Exchange(CustSynEdit.CaretY-1,CustSynEdit.CaretY);
 
     CustSynEdit.CaretY:=CustSynEdit.CaretY+1;
 
     CustSynEdit.CaretY:=CustSynEdit.CaretY+1;
end;
+
  end;
 
+
end;</delphi>
end;
 
 
 
 
 
</delphi>
 
  
 
=== Insertar caracteres en la posición actual ===
 
=== Insertar caracteres en la posición actual ===
<delphi>
+
<delphi> procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
+
begin
begin
 
 
   SynEdit1.CommandProcessor(ecChar,'a', nil); //Inserta a  
 
   SynEdit1.CommandProcessor(ecChar,'a', nil); //Inserta a  
 
   SynEdit1.SetFocus;
 
   SynEdit1.SetFocus;
end;
+
end;</delphi>
</delphi>
 
  
 
=== Completamiento de Código con SynCompletion ===
 
=== Completamiento de Código con SynCompletion ===
  
<delphi>
+
<delphi> Uses
  Uses
+
  ... ...
  ....
+
LCLType,//Para poder usar VK_SPACE
    LCLType,//Para poder usar VK_SPACE
+
syncompletion;
    syncompletion;
 
  
..........
+
... ... ....
var
+
var
 
  Completion:TSynCompletion;
 
  Completion:TSynCompletion;
begin
+
begin
 
   Completion:=TSynCompletion.Create(Self);
 
   Completion:=TSynCompletion.Create(Self);
 
   Completion.Editor:=SynEdit;
 
   Completion.Editor:=SynEdit;
Line 113: Line 96:
 
   Completion.ItemList.add('Bezier( )');
 
   Completion.ItemList.add('Bezier( )');
 
   Completion.ItemList.add('Cercle( )');
 
   Completion.ItemList.add('Cercle( )');
end;
+
end;</delphi>
 
 
</delphi>
 
  
 
=== Desplegar TSynCompletion en la posición actual ===
 
=== Desplegar TSynCompletion en la posición actual ===
  
<delphi>
+
<delphi> procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
+
var p:TPoint;
var p:TPoint;
+
  begin
begin
+
  with  SynEdit1  do
 
+
    begin
      with  SynEdit1  do begin
+
      P := Point(CaretXPix,CaretYPix + LineHeight);
        P := Point(CaretXPix,CaretYPix + LineHeight);
+
      P.X:=Max(0,Min(P.X,ClientWidth-Completion.Width));
        P.X:=Max(0,Min(P.X,ClientWidth-Completion.Width));
+
      P := ClientToScreen(p);
        P := ClientToScreen(p);
+
    end;
      end;
+
  Completion.Execute('',p.x,p.y);   
      Completion.Execute('',p.x,p.y);   
+
  end;</delphi>
end;
 
</delphi>
 
  
 
== Documentación ==
 
== Documentación ==
  
El usuario bubulemaster ha realizado un documento sobre SynEdit disponible en el site:
+
&nbsp;&nbsp;&nbsp;El usuario bubulemaster ha realizado un documento sobre SynEdit disponible [http://www.bubulemaster.fr/downloads.php?cat_id=7 aquí]
 
 
http://www.bubulemaster.fr/downloads.php?cat_id=7
 
  
A priori se ve que está en francés, no se si más adelante lo traducirá al inglés.
+
&nbsp;&nbsp;&nbsp;Está en francés, no se si más adelante lo traducirá al inglés.
  
== Further development, discusiones ==
+
== Más desarrollos, discusiones ==
  
 
* RTL (de derecha a izquierda (Right-To-Left)): comenzado por Mazen
 
* RTL (de derecha a izquierda (Right-To-Left)): comenzado por Mazen
* Selección automática de fuente monoespacio: Por el momento SynEdit comienza con el tipo de fuente 'courier'. But it would be better, if SynEdit would start with a monospace font (significando: todos los caracteres tienen la misma anchura). Por el momento el LCL TFont no aporta tal propiedad. Por el momento el usuario tiene que escoger la fuente correcta.
+
* Selección automática de fuente monoespacio: Por el momento SynEdit comienza con el tipo de fuente 'courier'. Pero sería mejor, si SynEdit comenzara con una tipografía monoespaciada (es decir: todos los caracteres tienen la misma anchura). Por ahora el LCL TFont no aporta tal propiedad y el usuario tiene que escoger la fuente correcta.
* Selección automática de fuente UTF-8: Same as above monospace, but also with an UTF-8 font, so that for example los umlaute se muestran correctamente. Por el momento el usuario tiene que escoger la fuente correcta.
+
* Selección automática de fuente UTF-8: Igual que el caso anterior de monoespaciado, pero con una cadena UTF-8 de fuente, de modo que por ejemplo umlaute se muestra correctamente. Por ahora el usuario tiene que elegir la fuente correcta.
* Dead keys. Most keyboards support typing two or more keys to create one special character (como en los caracteres acentuados (á,é,í,...) o con [http://es.wikipedia.org/wiki/Umlaut umlaut]).
+
* Teclas muertas. La mayoría de los teclados soportan pulsar una o más teclas para crear un carácter especial (como en los caracteres acentuados (á,é,í,...) o con el [http://es.wikipedia.org/wiki/Umlaut umlaut]).
* [[Redesign of the SynEdit component]]. The primary goal is more reliable display and navigation in the text. A more modular approach also allows for better integration of extensions, y por controles especializados, para su utilización fuera de Lazarus.
+
* [[Redesign of the SynEdit component|Rediseño del componente SynEdit]]. El objetivo principal es una presentación y un navegación por el texto más fiable. Un enfoque más modular para permitir una mejor integración de las extensiones, y por controles especializados, para su utilización fuera de Lazarus.

Revision as of 02:34, 24 March 2011

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) polski (pl) русский (ru) 中文(中国大陆)‎ (zh_CN)

   SynEdit es un paquete que contiene un componente editor de código fuente llamado TSynEdit, varios resaltadores de sintaxis y otros componentes utilizados para la edición de código fuente. Está basado en SynEdit 1.3 a partir del cual fué adaptado y extendido con características tales como soporte UTF-8 y plegado de código (code folding).

SynEdit en el IDE

   El componente SynEdit es un paquete que ya viene integrado con Lazarus debido a que lo utiliza el propio IDE. Es por ello que no existe un fichero .lpk. Estos componentes se pueden encontrar dentro de la paleta de componentes en la solapa 'SynEdit'.

Ejemplos

   Se puede encontrar un ejemplo en lazarus/examples/synedit1.lpi.

Como añadir soporte para Copy, Paste, Cut, Undo, Redo, etc

   Estas características se pueden implementar utilizando mandatos SynEdit.

<delphi> uses

 ...
 SynEdit, SynEditKeyCmds;
procedure TfrmPrincipal.HandleCodigoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if (Shift = [ssCtrl]) then
 begin
   case Key of
   VK_C: synCodigo.CommandProcessor(TSynEditorCommand(ecCopy), ' ', nil);
   VK_V: synCodigo.CommandProcessor(TSynEditorCommand(ecPaste), ' ', nil);
   VK_X: synCodigo.CommandProcessor(TSynEditorCommand(ecCut), ' ', nil);
   end;
 end;
end;</delphi>

Menú con Deshacer y Rehacer

<delphi> procedure TForm1.MenuRehacer(Sender: TObject);

begin
 SynEdit1.Redo;
end;
procedure TForm1.MenuDeshacer(Sender: TObject);
begin
 SynEdit1.Undo;
end;</delphi>

Menus con Duplicar e intercambiar líneas

<delphi> //Duplicar Línea

procedure TForm1.MenuDuplicarLinea(Sender: TObject);
begin
 SynEdit1.Lines.Insert(CustSynEdit().CaretY,CustSynEdit().LineText);
end; 
//Intercambiar Línea hacia Arriba
procedure TForm1.MenuLineaArriba(Sender: TObject);
begin
 if CustSynEdit.CaretY -1 >= 1 then
  begin
   CustSynEdit.Lines.Exchange(CustSynEdit.CaretY -1 ,CustSynEdit.CaretY-2);
   CustSynEdit.CaretY:=CustSynEdit.CaretY-1;
  end;
end;
//Intercambiar Línea hacia Abajo
procedure TForm1.MenuLineaAbajo(Sender: TObject);
begin
 if ( CustSynEdit.CaretY + 1 <= CustSynEdit.Lines.Count) then
  begin
   CustSynEdit.Lines.Exchange(CustSynEdit.CaretY-1,CustSynEdit.CaretY);
   CustSynEdit.CaretY:=CustSynEdit.CaretY+1;
  end;
end;</delphi>

Insertar caracteres en la posición actual

<delphi> procedure TForm1.Button1Click(Sender: TObject);

begin
 SynEdit1.CommandProcessor(ecChar,'a', nil); //Inserta a 
 SynEdit1.SetFocus;
end;</delphi>

Completamiento de Código con SynCompletion

<delphi> Uses

... ...
LCLType,//Para poder usar VK_SPACE
syncompletion;
... ... ....
var
Completion:TSynCompletion;
begin
 Completion:=TSynCompletion.Create(Self);
 Completion.Editor:=SynEdit;
 Completion.ShortCut:=Menus.ShortCut(VK_SPACE, [ssCtrl]);   
 Completion.ItemList.add('Arc( )');
 Completion.ItemList.add('Axes( )');
 Completion.ItemList.add('Bezier( )');
 Completion.ItemList.add('Cercle( )');
end;</delphi>

Desplegar TSynCompletion en la posición actual

<delphi> procedure TForm1.Button1Click(Sender: TObject);

var p:TPoint;
 begin
  with  SynEdit1  do
   begin
     P := Point(CaretXPix,CaretYPix + LineHeight);
     P.X:=Max(0,Min(P.X,ClientWidth-Completion.Width));
     P := ClientToScreen(p);
   end;
  Completion.Execute(,p.x,p.y);  
 end;</delphi>

Documentación

   El usuario bubulemaster ha realizado un documento sobre SynEdit disponible aquí

   Está en francés, no se si más adelante lo traducirá al inglés.

Más desarrollos, discusiones

  • RTL (de derecha a izquierda (Right-To-Left)): comenzado por Mazen
  • Selección automática de fuente monoespacio: Por el momento SynEdit comienza con el tipo de fuente 'courier'. Pero sería mejor, si SynEdit comenzara con una tipografía monoespaciada (es decir: todos los caracteres tienen la misma anchura). Por ahora el LCL TFont no aporta tal propiedad y el usuario tiene que escoger la fuente correcta.
  • Selección automática de fuente UTF-8: Igual que el caso anterior de monoespaciado, pero con una cadena UTF-8 de fuente, de modo que por ejemplo umlaute se muestra correctamente. Por ahora el usuario tiene que elegir la fuente correcta.
  • Teclas muertas. La mayoría de los teclados soportan pulsar una o más teclas para crear un carácter especial (como en los caracteres acentuados (á,é,í,...) o con el umlaut).
  • Rediseño del componente SynEdit. El objetivo principal es una presentación y un navegación por el texto más fiable. Un enfoque más modular para permitir una mejor integración de las extensiones, y por controles especializados, para su utilización fuera de Lazarus.