Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #41  
Antiguo 29-02-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Tengo otra duda. Si dejas pulsado el botón se activa el evento cada x tiempo? No estoy en mi casa y no puedo comprobarlo.
Responder Con Cita
  #42  
Antiguo 29-02-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Sí, pero de esta forma:

-Pulsas (sin soltar).
-Instantáneamente aparece lo pulsado.
-Pasa como un segundo.
-Hasta que no sueltes, cada pocas centésimas de segundo se repite la pulsación.


Salu2.

P.D.: También te podrías haber esperado a llegar a casa, ¿no?
Responder Con Cita
  #43  
Antiguo 03-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Lo siento, tenía mucha curiosidad. La próxima vez me la trago. He adelantado mucho muchísimo en el proyecto. Ahora necesito saber como puedo imprimir memo1 si el dialogo de impresión es PrintDialog1 (el nombre me da igual que pongáis...). He buscado sobre el tema pero el sistema que se usa para imprimir el texto enriquecido no tiene nada que ver... Muchas gracias de nuevo.
Responder Con Cita
  #44  
Antiguo 04-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Saludillos. Ayer estuve hablando con IxMike sobre el tema, pero me dió un error muy raro simplemente al escribir esto:

Código Delphi [-]
Memo1.Lines.AddStrings(Printer.Printers);

La impresora está detectada y funciona correctamente. Una descripción del error:

·Me obliga a resetear la apliación (ctrl + f2)
·Datos del mensaje:
EAccesViolation. Acces violation at address 00429EAC (Resumido con los datos más importantes)

·Cuando abro la ventanilla del idioma en ensamblador aprace esto:

cmp dword ptr [eax+$10],$00

Si con esto podéis ayudarme os lo agradecería mucho. Si no podéis os subo una foto de el error o lo que vosotros me digáis que necesitéis. Que no os quiero molestar mucho. Gracias de antemano.
Responder Con Cita
  #45  
Antiguo 04-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Aparte necesito una pequeñita ayuda. Es que cuando se cierra la aplicación te pregunte si quieres guardar. Entonces yo he hecho esto, pero si clico en cualquier botón me lo vuelve a preguntar(dos veces, luego hace lo que tiene que hacer).

Código Delphi [-]
If cambiado = true then begin
form3:=Tform3.Create(Self);
if form3.ShowModal=mrOk then begin//si se ha puslado aceptar...
form3.Free;
if form1.SaveDialog1.Execute then begin//Se carga guardar...
Form1.memo1.Lines.SaveToFile(form1.SaveDialog1.FileName);
halt;
end;
end
else if form3.ShowModal=mrCancel then begin//si se ha puslado cancelar...
canclose:=false;
form3.Destroy;
end;
end;
end;
Responder Con Cita
  #46  
Antiguo 04-03-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por rauros Ver Mensaje
Aparte necesito una pequeñita ayuda. Es que cuando se cierra la aplicación te pregunte si quieres guardar. Entonces yo he hecho esto, pero si clico en cualquier botón me lo vuelve a preguntar(dos veces, luego hace lo que tiene que hacer).

Código Delphi [-]If cambiado = true then begin form3:=Tform3.Create(Self); if form3.ShowModal=mrOk then begin//si se ha puslado aceptar...
form3.Free;
if form1.SaveDialog1.Execute then begin//Se carga guardar...
Form1.memo1.Lines.SaveToFile(form1.SaveDialog1.FileName);
halt;
end;
end else if form3.ShowModal=mrCancel then begin//si se ha puslado cancelar...
canclose:=false;
form3.Destroy;
end;
end;
end;
El problema de porque te lo muestra dos veces se debe a que ShowModal abre la ventana y se queda esperando la orden de pulsado y una vez que se recibe esa orden (que se traduce en esas constantes mrok, etc) se debe decidir que hacer se soluciona de esta simple manera:

Código Delphi [-]
if form3.ShowModal = mrOK
  then begin
         // se ha dado OK... que hacer
         end
  else begin
          // se ha dado en Cancel... que hacer...
        end;

E incluso podrías hacerlo mejor con un case:

Código Delphi [-]
case form3.ShowModal of
mrOK: //que hacer....
...
end;

Por lo de el error de Access Violation y el código ese... tendría que fijarme... no tengo delphi abierto en estos momentos.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #47  
Antiguo 04-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
El problema es que no se usar el case con más de una linea seguida... ¿Cómo puedo hacer 2 sumas, por ejemplo?

Case x of
1: y:=5+3;
y:= y * 2;
2: ...

etc... Cargar dos lineas en el mismo case.
Responder Con Cita
  #48  
Antiguo 04-03-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola, creo haberte explicado en otra ocasión que la regla dice así:

Cita:
si en algún momento determinado se necesita de más de una sentencia, necesariamente deben ir entre begin y end.
Código Delphi [-]
case algo of
1: begin
     //sentencias
    end;
2: begin
    //sentencias
    end;
3: una sola sentencia
end; // fin case

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #49  
Antiguo 04-03-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Generalizando la regla... en pascal, cualquier lugar donde iría una sentencia, podes sustituirlo por un grupo de sentencias encerradas en un bloque begin/end.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #50  
Antiguo 04-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Okey. Ahora he conseguido hacer que funcione. Y todo gracias a vosotros. Y gracias por esa regla de sintaxis, es bastante útil.
Responder Con Cita
  #51  
Antiguo 04-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Otro error. Y este si que es grave. La compilación del archivo solo me funciona a mí. A los demás usuarios no les funciona. Mando el proyecto + código source a esta dirección: http://rs2.rapidshare.com/files/9707...tor_textos.zip

Gracias varias de antemano.
Responder Con Cita
  #52  
Antiguo 04-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Varios detalles....

- En el bucle de "chorraditas" añade la línea Application.ProcessMessages, así por lo menos podremos deter el efecto cerrando la aplicación (y ni se te ocurra preguntar qué es ProcessMessages, ¡lo buscas! )

- En "Contactar", podrías mostrar ambos mensajes en la misma ventana. Tan sólo tienes que separar ambas líneas con el carácter #13 (Enter):

Código Delphi [-]
MessageBox(Handle, 'Linea 1'+#13+'Linea 2'+#13#13#13+'Línea muy separada', 'Título', MB_OK+MB_ICONINFORMATION);

- El MessageBox (o Application.MessageBox) también te sirve para hacer el "guardado de seguridad". Es más cómodo (y gasta menos tiempo a la hora de diseñar y menos espacio en el ejecutable). Algo así:

Código Delphi [-]
Case Application.MessageBox(PChar('¿Desea guardar cambios al archivo "'+NombreArchivo+'"?'), 'Guardado de seguridad', MB_ICONQUESTION + MB_YESNOCANCEL) of
  ID_YES: Guaradar;
  ID_NO: Salir;
  //ID_CANCEL: No ponemos nada, puesto que "Cancelar" ahí es no hacer nada
 end;

Busca en el archivo de ayuda Win32.hlp todas las posibles opciones (flags) para MessageBox. Por ejemplo, otra que podrías poner en lugar de MB_ICONQUESTION sería MB_ICONWARNING.

- Interesante dato del portafolios (aunque, ¿no es portapapeles? ).

- "Altura" y "anchura" son palabras incorrectas, Lo ideal sería hacer como Delphi, o Word:
Cita:
Lin 10 : Col 5
Línea y columna (posición "y" y posición "x").

Además, con que lo pongas en un sólo panel sobra (de hecho, se hace más legible )

Y lo más importante, ¡he podido ejecutarlo! No sé qué fallo tendrán las otras máquinas...

Última edición por ixMike fecha: 04-03-2008 a las 22:47:50.
Responder Con Cita
  #53  
Antiguo 05-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Muchas gracias por toda toda y toda la ayuda, me ha servido siempre. Cambiando de tema, empecemos ya con el código coloreado, creo que todo lo demás ya lo tengo muy visto (he añadido un sistema con claves de registro para que el programa se abra en el mismo sitio que en el que se cierra). He cogido los ejemplos pero veo que son muy complejos y que faltan algunos .dcu . Y lo que quiero es saber como se colorea, lo más simple posible. Puesto que voy a coger uno de los dos ejemplos y me voy a liar antes de encontrar la solución.
Preguntas:

·¿Qué objeto debo usar?
·¿Con este objeto puedo guardar en texto simple (.txt)?
Responder Con Cita
  #54  
Antiguo 06-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Vale. Se que necesito UniSynEdit o algo parecido (gracias IxMike). ¿Cómo puedo instalar el package del SynEdit? He estado buscando sobre el tema pero he encontrado poco y lo poco que he encontrado era inservible. Gracias de antemano a tod@s.
Responder Con Cita
  #55  
Antiguo 06-03-2008
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Puntualiza, rauros.

Se descargó en paquete, pero no hay forma de instalarlo. Bueno, yo es que hace tiempo que no instalo ninguno, y debido a las diferencias entre mi versión y la suya, pues no he podido ayudarle

Tiene que ver con lo que en Delphi 3 se llama "Library Path" (está el Options del Package).

Salu2.
Responder Con Cita
  #56  
Antiguo 07-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
Okey, el problema anterior ya lo posteé en varios (aún no me ayudó nadie :S). Ahora tengo otro problema. Quiero hacer un "autocompletar". El algoritmo lo tengo ya hecho, solo me falta un procedimiento. Mi código:

Código Delphi [-]
texto:=Uppercase(memo1.lines.strings[memo1.caretpos.y]);
if Texto ='IF' then begin
memo1.Lines.Strings[memo1.CaretPos.y]:='If';
memo1.Lines.Add('');
memo1.Lines.Add('');
memo1.Lines.Strings[memo1.CaretPos.y]:='EndIf';
end;

Pues con eso si hay algo escrito en medio lo salta. Un ejemplo:

Código:
I          //escribiendo "if"
destroy //algo escrito
Después

Código:
If
destroy

EndIf
Exactamente se quedaría así. ¿Cómo podría arreglarlo para que se quede así:?

Código:
If

EndIf
destroy
Muchas gracias a todos que me ayudáis siempre.

Última edición por rauros fecha: 07-03-2008 a las 17:03:08.
Responder Con Cita
  #57  
Antiguo 09-03-2008
rauros rauros is offline
Miembro
 
Registrado: feb 2008
Ubicación: Alicante - Sax / Sax - Alicante
Posts: 235
Poder: 17
rauros Va por buen camino
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 // Este if funciona.
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'); // Escribe 2 lineas debajo EndIf cuando escribo If 
AutoCompletar(memo1,'[it',0,'[ItemDef  ]');//Sustituye [it por [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; //with Memo do
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.

Última edición por rauros fecha: 09-03-2008 a las 12:58:32.
Responder Con Cita
  #58  
Antiguo 09-03-2008
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,

En el Directorio del ClubDelphi he dejado el código fuente de XEditor, dentro de la carpeta "Ejemplos", aunque será más bien el ejemplo de cómo no hay que hacer las cosas.

Lo que tu digas Dec (que para eso es tu creación); pero yo lo uso como sustituto (o mejora) del block de notas, y estoy muy contento con él, ligero, rápido...
__________________
Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
componente editor de texto clanmilano Varios 1 23-01-2006 15:41:37
necesito editor de texto.... User_baja1 Varios 4 21-03-2005 11:53:30
Editor de Texto kael Varios 1 02-11-2004 18:18:42
Editor Texto Richedit cesar_picazo Varios 1 27-04-2004 18:34:59
Editor que resalte texto igest2000 Varios 0 10-12-2003 16:23:21


La franja horaria es GMT +2. Ahora son las 15:30:25.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi