Vale. Lo anterior ya está solucionado. Ahora tengo 2 problemas:
·No puedo instalar UniSynEdit (posteé en varios pero nadie me ayudó :S)
·Auto completar no funciona como querría que funcionara. Lo que quiero hacer es:
Que si escribo una palabra, se sustituya por otra, o la otra se escriba unos huecos más abajo.
Mi procedimiento de auto completar:
Código Delphi
[-]Procedure autocompletar(Memo: TMemo; leer: string; separacion: integer; sustituir: string);
begin
if form1.CheckBox1.Checked then begin With Memo do begin
posac:=caretpos.y;
if uppercase(lines.strings[caretpos.y]) = uppercase(leer) then begin
if separacion <> 0 then begin
for n:=1 to separacion do Sustituir:=#13#10+Sustituir;
SelText:=sustituir;
end
else begin
lines.strings[caretpos.y]:=sustituir
end;
end;
end;
end;
setmemoposition(memo, memo.selstart,0)
end;
Para llamar a auto completar:
Código Delphi
[-]AutoCompletar(memo1,'If ',2,'EndIf'); AutoCompletar(memo1,'[it',0,'[ItemDef ]');
El problema es que cuando escribo If se me baja a endif en vez de volver a su sitio anterior. Y cuando vuelvo manualmente se vuelve loco el auto completar. El procedimiento de SetMemoPosition:
Código Delphi
[-]Procedure SetMemoPosition(Memo: TMemo; Col, Line: Integer);
var
i, Cuenta: Integer;
begin
with Memo do begin
LockWindowUpdate(Handle);
Cuenta:=0;
if Line<=Lines.Count then
begin
i:=0;
While ido
begin
Inc(Cuenta,2+Length(Lines[i]));
Inc( i);
Perform(EM_SCROLL,SB_LINEDOWN,0);
end;
If Col<=Length(Lines[i]) then
begin
Inc(Cuenta,Col);
SelStart:=Cuenta;
end;
end;
LockWindowUpdate( 0);
Refresh;
end; end;
También tengo problemas con un procedimiento que se supone que tiene que escribir al final de todo lo escrito [EOF]. El procedimiento:
Código Delphi
[-]procedure EndOfFileAutomatico(memo: TMemo; right: boolean);
var
posicionAnt: integer;
begin
if right then begin
if UpperCase(memo.Lines.Strings[memo.Lines.count + 1]) <> '[EOF]' then begin
posicionant:=memo.CaretPos.y;
memo.lines.strings[memo.lines.count]:='[EOF]';
setmemoposition(memo, memo.selstart, posicionant)
end;
end;
end;
Para llamar al procedimiento:
Código Delphi
[-]EndOfFileAutomatico(memo1,checkbox1.Checked);
Muchísimas gracias de antemano.