Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Noticias (https://www.clubdelphi.com/foros/forumdisplay.php?f=34)
-   -   Hasta el más tonto hace relojes: XEditor (https://www.clubdelphi.com/foros/showthread.php?t=22545)

roman 22-10-2012 18:34:41

A mi me pasa exactamente los mismo que describe Germán. ¿No será una limitante de la versión no registrada? :p

// Saludos

dec 22-10-2012 19:04:50

Hola,

Gracias Román y Neftalí. Pero, un momento... ¿es que no describís lo que se espera "por defecto"? Es decir, si no he entendido mal, Neftalí, dices que si seleccionas "unas letras" (un texto) y pulsas la tecla "Suprimir" sí que te funciona, y, si no seleccionas nada, no te funciona... ¿pero es que no se trata de que funcione, precisamente, cuando tienes texto seleccionado? Claro que ahora no comprendo cómo es que vosotros "esperáis" otra cosa...

roman 22-10-2012 19:06:23

Si no hay texto seleccionado, el comportamiento esperado es que se borre el caracter a la derecha del cursor.

// Saludos

Neftali [Germán.Estévez] 22-10-2012 19:09:51

Cita:

Empezado por roman (Mensaje 447640)
Si no hay texto seleccionado, el comportamiento esperado es que se borre el caracter a la derecha del cursor.

Correcto. Pero no borra nada, se queda en el sitio como si no hubieras pulsado nada.

El hecho de que, si tan sólo hay una tecla seleccionada ya funcione, me hace dudar de que sea problema de la tecla, sino de alguna comprobación relacionada con Seltext o LenghtText...

Es más la tecla la reconoce, pues si hay algo seleccionado se comporta bien.

dec 22-10-2012 19:09:56

Hola,

Cita:

Empezado por roman (Mensaje 447640)
Si no hay texto seleccionado, el comportamiento esperado es que se borre el caracter a la derecha del cursor.

// Saludos

Comprendo. Voy a echar un vistazo, puesto que, hay algo que tengo un poco olvidado: los "comandos" del editor, y, recuerdo que existe algo para esto. No obstante, me surge una duda... y es que si ya está asignada la tecla suprimir (para borrar el texto seleccionado) no sé bien cómo podrá dicha tecla hacer "las dos cosas"... pero voy a echar un vistazo a ver. Gracias Román.

dec 22-10-2012 19:12:04

Cita:

Empezado por Neftali (Mensaje 447642)
Correcto. Pero no borra nada, se queda en el sitio como si no hubieras pulsado nada.

El hecho de que, si tan sólo hay una tecla seleccionada ya funcione, me hace dudar de que sea problema de la tecla, sino de alguna comprobación relacionada con Seltext o LenghtText...

Es más la tecla la reconoce, pues si hay algo seleccionado se comporta bien.

Tengo que revisar esto. Lo cierto es que a los "comandos" del editor se pueden asignar dos teclas... y modificadores... pero no creo que sean dos teclas para lo mismo: me parece que es para hacer una especie de "shorcut" con ambas teclas. La cosa es que, como te comenté por correo, Neftalí, la tecla suprimir no está asignada en el editor... es decir, pareciera que lo de borrar lo seleccionado es lo predeterminado en Windows... pero voy a echar un vistazo y os comento, porque, en efecto, al menos ahora yo tampoco puedo hacer lo que vosotros decís, esto es, ahora ya sé que no pasa sólo en tu sistema, sino que es "cosa" del programa.

Casimiro Notevi 22-10-2012 19:14:49

Hola, lo he instalado en una máquina virtual (virtualbox) winxp y el comportamiento es exactamente el mismo que obtiene Neftali.

dec 22-10-2012 19:18:31

Cita:

Empezado por Casimiro Notevi (Mensaje 447645)
Hola, lo he instalado en una máquina virtual (virtualbox) winxp y el comportamiento es exactamente el mismo que obtiene Neftali.

Gracias Casimiro. Ya estoy echando un vistazo...

dec 22-10-2012 19:24:14

Hola de nuevo,

Si no me equivoco, la tecla que nos interesa es "VK_DELETE"... ¿verdad? Estoy probando... pero con esta tecla. Yo creo que es esta tecla... ¿no? :rolleyes:

Neftali [Germán.Estévez] 22-10-2012 19:25:41

¿No será un bug del componente? Me suena que ese comportamiento no debe ser algo que tengas que configurar tú. Ese debería ser el comportamiento estandard, como si pones un TEdit.

roman 22-10-2012 19:29:30

Al parecer, alguien, alguna vez, reportó este problema, pero no pareció importarles mucho o no le dieron seguimiento porque quien lo reportó tampoco lo hizo. Quizá si lo reportas tú te hagan caso. No debe ser un problema difícil de solucionar.

// Saludos

Neftali [Germán.Estévez] 22-10-2012 19:33:04

:eek::eek::eek::eek:

¿Y ya está?
No me parece un error tonto...

Un editor al que lo le funciona la tecla,... no se...

roman 22-10-2012 19:34:39

Bueno, bueno. Ésa es la interpretación que yo dí :p Igual ellos estuvieron muy consternados en su momento :D

// Saludos

dec 22-10-2012 19:35:15

Hola,

Lo que pasa es que acaso no es un bug... me explico. En realidad, por ejemplo, si se pulsa las teclas "CTRL + ←" se borra la palabra "cerca del cursor". Lo cierto es que existen otros comandos, ahora mismo "ocultos", puesto que no se conocen, pero, que, funcionan. He aquí el método que los añade:

Código Delphi [-]
procedure TSynEditKeyStrokes.ResetDefaults;
begin
  Clear;

  AddKey(ecUp, SYNEDIT_UP, []);
  AddKey(ecSelUp, SYNEDIT_UP, [ssShift]);
  AddKey(ecScrollUp, SYNEDIT_UP, [ssCtrl]);
  AddKey(ecDown, SYNEDIT_DOWN, []);
  AddKey(ecSelDown, SYNEDIT_DOWN, [ssShift]);
  AddKey(ecScrollDown, SYNEDIT_DOWN, [ssCtrl]);
  AddKey(ecLeft, SYNEDIT_LEFT, []);
  AddKey(ecSelLeft, SYNEDIT_LEFT, [ssShift]);
  AddKey(ecWordLeft, SYNEDIT_LEFT, [ssCtrl]);
  AddKey(ecSelWordLeft, SYNEDIT_LEFT, [ssShift,ssCtrl]);
  AddKey(ecRight, SYNEDIT_RIGHT, []);
  AddKey(ecSelRight, SYNEDIT_RIGHT, [ssShift]);
  AddKey(ecWordRight, SYNEDIT_RIGHT, [ssCtrl]);
  AddKey(ecSelWordRight, SYNEDIT_RIGHT, [ssShift,ssCtrl]);
  AddKey(ecPageDown, SYNEDIT_NEXT, []);
  AddKey(ecSelPageDown, SYNEDIT_NEXT, [ssShift]);
  AddKey(ecPageBottom, SYNEDIT_NEXT, [ssCtrl]);
  AddKey(ecSelPageBottom, SYNEDIT_NEXT, [ssShift,ssCtrl]);
  AddKey(ecPageUp, SYNEDIT_PRIOR, []);
  AddKey(ecSelPageUp, SYNEDIT_PRIOR, [ssShift]);
  AddKey(ecPageTop, SYNEDIT_PRIOR, [ssCtrl]);
  AddKey(ecSelPageTop, SYNEDIT_PRIOR, [ssShift,ssCtrl]);
  AddKey(ecLineStart, SYNEDIT_HOME, []);
  AddKey(ecSelLineStart, SYNEDIT_HOME, [ssShift]);
  AddKey(ecEditorTop, SYNEDIT_HOME, [ssCtrl]);
  AddKey(ecSelEditorTop, SYNEDIT_HOME, [ssShift,ssCtrl]);
  AddKey(ecLineEnd, SYNEDIT_END, []);
  AddKey(ecSelLineEnd, SYNEDIT_END, [ssShift]);
  AddKey(ecEditorBottom, SYNEDIT_END, [ssCtrl]);
  AddKey(ecSelEditorBottom, SYNEDIT_END, [ssShift,ssCtrl]);
  AddKey(ecToggleMode, SYNEDIT_INSERT, []);
  AddKey(ecCopy, SYNEDIT_INSERT, [ssCtrl]);
  AddKey(ecCut, SYNEDIT_DELETE, [ssShift]);
  AddKey(ecPaste, SYNEDIT_INSERT, [ssShift]);
  AddKey(ecDeleteChar, SYNEDIT_DELETE, []);
  AddKey(ecDeleteLastChar, SYNEDIT_BACK, []);
  AddKey(ecDeleteLastChar, SYNEDIT_BACK, [ssShift]);
  AddKey(ecDeleteLastWord, SYNEDIT_BACK, [ssCtrl]);
  AddKey(ecUndo, SYNEDIT_BACK, [ssAlt]);
  AddKey(ecRedo, SYNEDIT_BACK, [ssAlt,ssShift]);
  AddKey(ecLineBreak, SYNEDIT_RETURN, []);
  AddKey(ecLineBreak, SYNEDIT_RETURN, [ssShift]);
  AddKey(ecTab, SYNEDIT_TAB, []);
  AddKey(ecShiftTab, SYNEDIT_TAB, [ssShift]);
  AddKey(ecContextHelp, SYNEDIT_F1, []);

  AddKey(ecSelectAll, ord('A'), [ssCtrl]);
  AddKey(ecCopy, ord('C'), [ssCtrl]);
  AddKey(ecPaste, ord('V'), [ssCtrl]);
  AddKey(ecCut, ord('X'), [ssCtrl]);
  AddKey(ecBlockIndent, ord('I'), [ssCtrl,ssShift]);
  AddKey(ecBlockUnindent, ord('U'), [ssCtrl,ssShift]);
  AddKey(ecLineBreak, ord('M'), [ssCtrl]);
  AddKey(ecInsertLine, ord('N'), [ssCtrl]);
  AddKey(ecDeleteWord, ord('T'), [ssCtrl]);
  AddKey(ecDeleteLine, ord('Y'), [ssCtrl]);
  AddKey(ecDeleteEOL, ord('Y'), [ssCtrl,ssShift]);
  AddKey(ecUndo, ord('Z'), [ssCtrl]);
  AddKey(ecRedo, ord('Z'), [ssCtrl,ssShift]);
  AddKey(ecGotoMarker0, ord('0'), [ssCtrl]);
  AddKey(ecGotoMarker1, ord('1'), [ssCtrl]);
  AddKey(ecGotoMarker2, ord('2'), [ssCtrl]);
  AddKey(ecGotoMarker3, ord('3'), [ssCtrl]);
  AddKey(ecGotoMarker4, ord('4'), [ssCtrl]);
  AddKey(ecGotoMarker5, ord('5'), [ssCtrl]);
  AddKey(ecGotoMarker6, ord('6'), [ssCtrl]);
  AddKey(ecGotoMarker7, ord('7'), [ssCtrl]);
  AddKey(ecGotoMarker8, ord('8'), [ssCtrl]);
  AddKey(ecGotoMarker9, ord('9'), [ssCtrl]);
  AddKey(ecSetMarker0, ord('0'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker1, ord('1'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker2, ord('2'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker3, ord('3'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker4, ord('4'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker5, ord('5'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker6, ord('6'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker7, ord('7'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker8, ord('8'), [ssCtrl,ssShift]);
  AddKey(ecSetMarker9, ord('9'), [ssCtrl,ssShift]);
  AddKey(ecNormalSelect, ord('N'), [ssCtrl,ssShift]);
  AddKey(ecColumnSelect, ord('C'), [ssCtrl,ssShift]);
  AddKey(ecLineSelect, ord('L'), [ssCtrl,ssShift]);
  AddKey(ecMatchBracket, ord('B'), [ssCtrl,ssShift]);

He tratado de asignar a la tecla suprimir alguno de los comandos "ecDelete*", pero, sin éxito. No sé si es que lo estoy haciendo mal, o que, dicha tecla no puede usarse, o que está ocupada con otra cosa... lo cierto es que el reporte que enlaza Román es raro, pues alguien puso "Work for me" y cerró el caso. Voy a seguir dándole alguna vuelta, aunque, como digo.

dec 22-10-2012 19:36:13

Hola,

Llevas razón Neftalí, sin embargo, se conoce que ya puede hacerse lo que se pretende (borrar el caracter, la palabra, etc., cerca del cursor) con otra combinación de teclas... si no me equivoco. De todas formas sigo dándole vueltas a ver qué pasa, porque, lo cierto es que la tecla funciona como decís hasta en el bloc de notas...

dec 22-10-2012 19:42:07

Hola,

Estoy es muy raro... a ver. Al parecer, el comando que nos interesa es "ecDeleteChar". Ahora bien, dicho comando se añade al editor, junto con otros de esta forma:

Código Delphi [-]
AddKey(ecDeleteChar, SYNEDIT_DELETE, []);

Valiendo la constante "SYNEDIT_DELETE" "VK_DELETE", es decir,... en principio el asunto debería funcionar... pero no lo hace. La cosa es que yo no estoy capturando la tecla "VK_DELETE" en ningún lado... así que se supone que debería funcionar, pero, no lo hace... y tampoco lo hace si yo mismo añado la tecla "VK_DELETE" asociada al comando "ecDeleteChar"... esto es muy raro, porque, las otras teclas funcionan...

Edito: vamos a ver si al final damos con ello...

roman 22-10-2012 19:42:37

Pero, tal como comentó Neftali, la tecla sí que está asignada. Más bien parece ser un problema con la longitud del texto seleccionado. En algún lugar del código debe tener un condicional:

Código Delphi [-]
if SelLength > 0 then
  DeleteSelection(...);

Haz una traza a ver qué sale.

// Saludos

dec 22-10-2012 19:45:52

Hola,

A ver. Novedades. No es problema del componente, porque, si pruebo en un programa "nuevo", la tecla se comporta como se espera. Me temo que alguna acción en mi programa está "comiéndose" dicha tecla... así que voy a echar un vistazo porque esto tiene que poder solucionarse. ;)

dec 22-10-2012 19:47:09

Cita:

Empezado por roman (Mensaje 447665)
Pero, tal como comentó Neftali, la tecla sí que está asignada. Más bien parece ser un problema con la longitud del texto seleccionado. En algún lugar del código debe tener un condicional:

Código Delphi [-]
if SelLength > 0 then
  DeleteSelection(...);

Haz una traza a ver qué sale.

// Saludos

No me suena nada así Román, pero, sí que he usado acciones "estándar"... y creo que estas están metiendo baza. Lo cierto es que si pongo un "SynEdit" en un formulario nuevo (en un proyecto nuevo) funciona como se espera, es decir, como he dicho arriba, el problema reside en algún lugar de Small Editor y es cuestión de tiempo dar con ello. :)

dec 22-10-2012 19:53:42

Hola,

Ea, pues ya está. Se trataba de que he usado la acción de edición estándar "Delete", y, de alguna manera, dicha acción estaba interfiriendo con el comando "ecDeleteChar" del editor. De momento he optado, sencillamente, por quitar dicha acción, pues, se trataba de un elemento en el menú contextual del editor que acaso hasta estuviera demás, teniendo en cuenta que uno pulsa la tecla "Suprimir" y no usa dicho elemento del menú.

No obstante, acaso añada el elemento cuando aprenda a enviar comandos al editor como ha de hacerse. Sea como sea, podéis descargar el programa de nuevo y comprobar que ahora la tecla "Suprimir" se comporta como vosotros esperábais, por un lado, y, también como yo esperaba... si hay texto seleccionado. Obviamente, esto de los comandos y "accesos directos" en el programa es algo a lo que tendré que prestar atención en el futuro.

http://goo.gl/ATCSn

¡Muchas gracias a todos!

roman 22-10-2012 19:58:32

Ya probé y funciona bien. De todas maneras, es raro. Pareciera que la acción se inhabilitaba al detectar que no había nada selecciondo.

// Saludos

dec 22-10-2012 20:00:59

Cita:

Empezado por roman (Mensaje 447669)
Ya probé y funciona bien. De todas maneras, es raro. Pareciera que la acción se inhabilitaba al detectar que no había nada selecciondo.

// Saludos

Es posible Román: la acción "se queda" con la tecla sin que esta llegue al editor... alguien reportó algo parecido. Tal vez no debería usar las acciones estándar, que, por cierto no son muchas... aunque parece que el problema se dá sólo en el caso de esta tecla. Claro, porque, "CTRL+C" hace lo mismo, copiar texto, tanto en la acción estándar de Delphi como en el editor. Sin embargo, parece que la acción estándar de Delphi para borrar texto no hace lo mismo que el comando "ecDeleteChar" del editor.

roman 22-10-2012 21:05:47

¡Ah! Pues acabo de ver que la acción estándar de Delphi hace lo mismo, es decir, se inhabilita el DELETE cuando no hay texto seleccionado.

// Saludos

roman 22-10-2012 21:07:25

He aquí al culpable:

Código Delphi [-]
procedure TEditDelete.UpdateTarget(Target: TObject);
begin
  Enabled := GetControl(Target).SelLength > 0;
end;

Agrego:

Y me atrevería a afirmar que es así, "por diseño":

Cita:

In TEditDelete, UpdateTarget checks whether the current target object (specified by the Target parameter) is an edit control that has some of its text selected. If so, UpdateTarget sets Enabled to true. If not, UpdateTarget sets Enabled to false.
Referencia

// Saludos

dec 22-10-2012 21:37:24

Hola,

Gracias Román. Lo que dices es interesante, y, sin embargo, aún me atrevo a decir que acaso exista un "error", y, es que la acción se "come" la tecla en cuestión. Si dejase pasar la tecla, después de hacer su trabajo, el editor podría hacer el suyo. Pero no parece ser así. Claro, ahora que lo pienso, en realidad la tecla funciona... pero sobre un elemento "deshabilitado"... en fin. En este caso no tiene importancia, pues, como digo, para la acción suprimir, ¿quién usaría el elemento del menú? Yo creo que nadie...

Neftali [Germán.Estévez] 22-10-2012 21:45:31

^\||/^\||/^\||/^\||/

Correcto.

Gracias David.

dec 22-10-2012 21:55:27

Hola,

¡Gracias a todos vosotros! ;)

roman 22-10-2012 22:05:23

Cita:

Empezado por dec (Mensaje 447684)
Hola,

Gracias Román. Lo que dices es interesante, y, sin embargo, aún me atrevo a decir que acaso exista un "error", y, es que la acción se "come" la tecla en cuestión. Si dejase pasar la tecla, después de hacer su trabajo, el editor podría hacer el suyo. Pero no parece ser así. Claro, ahora que lo pienso, en realidad la tecla funciona... pero sobre un elemento "deshabilitado"... en fin. En este caso no tiene importancia, pues, como digo, para la acción suprimir, ¿quién usaría el elemento del menú? Yo creo que nadie...

No hay error. Así está diseñado. La acción TEditDelete únicamente tiene dos métodos. El ya mencionado UpdateTarget y ExecuteTarget:

Código Delphi [-]
procedure TEditDelete.ExecuteTarget(Target: TObject);
begin
  GetControl(Target).ClearSelection;
end;

O sea que, aún cuando redefinamos UpdateTarget para que no se inhabilite la acción, también tendríamos que redefinir ExecuteTarget puesto que ClearSelection actúa sobre la selección. Y con esto ya nos cargamos toda la acción :D

// Saludos

dec 22-10-2012 22:09:08

Hola,

No; si, por eso digo... con "error" me refiero a que, parece ser, Delphi no "respeta" el comportamiento de la tecla "Suprimir"... aunque, para ser sincero, yo siempre he utilizado dicha tecla para eliminar el texto seleccionado, y, más aún, no uso dicha tecla, porque, suelo "cortar" el texto, directamente. Sin duda una tontería porque la tecla está ahí y "es menos" que pulsar "CTRL + X", pero, es la costumbre. En todo caso digo que no es que la VCL tenga ahí un error (Dios me libre de encontrar un error en la VCL), pero, que acaso no se implementa dicha acción "como algunos pueden esperar"...

roman 22-10-2012 22:19:14

Cita:

Empezado por dec (Mensaje 447689)
digo que no es que la VCL tenga ahí un error (Dios me libre de encontrar un error en la VCL)

¡Ah! Bueno. Que por menos de esto hemos expulsado gente :D

Pero a ver, aclaremos. Dudo mucho que alguien nunca le ocurra tener que borrar el carcater a la derecha. Y, por otro lado, lo usual en un editor es que CTRL+X no borre el caracter a la derecha. CTRL+X es el equivalente a CTR+DEL, no a DEL.

Por otra parte, si bien, como dices, serán pocos los que usen el menú para borrar el caracter a la derecha, creo que cualquier editor de texto trae la opción. Y no es difícil implementarla usando una acción no estándar o redefiniendo la estándar.

// Saludos

matabyte 23-10-2012 07:11:54

Buenas, vengo con un fallo.

En cuanto instalo el programa, al final de la instalacion, con la opcion de arrancar el programa una vez finalizada la instalacion, me aparece una ventana de ayuda y otra de version del programa.
Cuando intento cerrar la ventana de ayuda, se cierra pero se abre otra y la cierro y se abre otra vez, asi 3 veces, a la cuarta se cierra totalmente, pero voy a intentar mover la ventana del programa y veo que el programa se "ha colgado". Supongo que es algun error con el lanzamiento del programa desde el instalador a la vez que muestra la ventana de ayuda.

Cuando arranco el programa me vuelve a aparecer lo mismo, pero esta vez cierro la ventana de la version del programa y luego puedo cerrar la ventana de ayuda y me aparece la ventana del programa correctamente.

Por cierto, los archivos codificados en UTF-8 me los sigue abriendo como ANSI...
He probado con un ".java" con comentarios en japones y me lo abre en ansi. Supongo que es porque no contiene el identificador BOM... Deberia de poder elegir el metodo de codificacion de entrada predeterminada si no detecta codificacion :D

Neftali [Germán.Estévez] 23-10-2012 09:55:28

Cita:

Empezado por matabyte (Mensaje 447720)
...al final de la instalacion, con la opcion de arrancar el programa una vez finalizada la instalacion, me aparece una ventana de ayuda y otra de version del programa.
Cuando intento cerrar la ventana de ayuda, se cierra pero se abre otra y la cierro y se abre otra vez, asi 3 veces, a la cuarta se cierra totalmente

Eso también me ha pasado a mi.

Casimiro Notevi 23-10-2012 10:20:03

Cita:

Empezado por Neftali (Mensaje 447725)
Eso también me ha pasado a mi.

Y a mi, aunque no se bloqueó, sólo esperé un poquito y continuó todo el proceso correctamente, aunque es cierto que es raro que salga y desaparezca varias veces las ventanas, sospecho que el antivirus tendrá algo que ver.

matabyte 23-10-2012 11:22:56

Cita:

Empezado por Casimiro Notevi (Mensaje 447728)
Y a mi, aunque no se bloqueó, sólo esperé un poquito y continuó todo el proceso correctamente, aunque es cierto que es raro que salga y desaparezca varias veces las ventanas, sospecho que el antivirus tendrá algo que ver.

antivirus? yo creo que esta poniendo la ventana de ayuda con un proceso hijo de un proceso hijo o algo parecido y se autobloquean al destruirse. Creo que es algun problema de ese tipo.

Casimiro Notevi 23-10-2012 11:27:55

La prueba que yo he hecho ha sido en una virtualbox winxp, y entre ventana y ventana saltaba un mensaje del antivirus preguntando si dejaba ejecutar al programa.

dec 23-10-2012 11:51:32

Hola,

¡Saludos a todos! Ahora mismo no puedo responderos, pero, prometo hacerlo a lo largo del día de hoy. ;)

¡Muchas gracias por vuestra comprensión!

dec 23-10-2012 12:48:14

Hola a todos,

Bueno. He actualizado el programa de manera que vuelve a incluir en el menú contextual del editor el elemento "Delete", pero, esta vez con los resultados esperados. En realidad se trata de ejecutar sobre el editor el comando que se mencionó arriba, de manera que queda algo así:

Código Delphi [-]
Editor.ExecuteCommand( ecDeleteChar, #0, nil );

Por lo demás, me siento un poco avergonzado, porque, aunque el problema se encontraba en la acción estándar de Delphi, lo cierto es que yo, sin saberlo hasta hace un rato, estaba usando el evendo "OnUpdate" de dicha acción para habilitarla o inhabilitarla, principalmente, de cara al propio programa (¿existe algún editor "seleccionado"?), pero, también estaba mirando, de existir el editor, si había texto seleccionado o no... en fin.

Respecto de la ayuda no sé muy bien qué decir. En realidad estoy ejecutando una acción de la unidad "Winapi.Windows" y de nombre "HtmlHelp". Es cierto que la ventana de ayuda se liga de alguna manera al programa, por ejemplo, si este se cierra y la ventana de ayuda está abierta, se cerrará también. Pero, lo cierto es que yo no he podido comprobar el fallo que decís, y, no sé muy bien a qué puede deberse ahora mismo.

Se supone que el programa muestra la ayuda "la primera vez que se ejecuta", después de una instalación, Y, así ocurre en mi sistema, al menos. Así que tendré que dar alguna que otra vuelta sobre este asunto, porque, ahora mismo no sé a qué puede deberse.

¡Muchas gracias a todos!

dec 23-10-2012 12:53:41

Hola de nuevo,

Cita:

Empezado por matabyte (Mensaje 447720)
Por cierto, los archivos codificados en UTF-8 me los sigue abriendo como ANSI...
He probado con un ".java" con comentarios en japones y me lo abre en ansi. Supongo que es porque no contiene el identificador BOM... Deberia de poder elegir el metodo de codificacion de entrada predeterminada si no detecta codificacion :D

Existe la opción de abrir un archivo "forzando" la codificación de caracteres, como tú mismo sugeriste. Sin embargo, no es igual a lo que te refieres ahora. Pero, ahora no se me ocurre cómo podría hacerse lo que dices, puesto que, si un archivo se abre como ANSI, ¿cómo detectar que en realidad se trata de un archivo UTF-8 y no uno ANSI de veras? Por otro lado, ¿has probado a guardar el archivo como UTF-8? Es decir, una vez abierto, si bien como ANSI (¿se pierden caracteres?), puedes elegir la codificación UTF-8 desde el menú contextual del editor. De este modo, cuando se guarde el archivo, este será abierto de nuevo, se supone, con la codificación "correcta".

Tal vez me equivoque, pero, me estoy dando cuenta de que con esto de los editores hay cierta incompatibilidad, que, se soluciona... usando el mismo editor, siempre que sea posible, claro está. Esto viene a lo de arriba: si abres un archivo que el editor no reconoce correctamente, échale tú una mano cambiando la codificación, de manera que después dicha codificación sea reconocida sin problemas por el programa, puesto que él mismo la estableció. Supongo que esta solución no te satisfará del todo, pero, es que ahora mismo no se me ocurre otra, si te digo la verdad. :rolleyes:

dec 23-10-2012 15:47:21

Hola a todos,

Sobre el tema de la ayuda, he tratado de solucionarlo de dos formas. En primer lugar, ahora la ayuda (si es menester) se muestra un poco después, esto es, dejo que se inicializen ciertas cosas, por ejemplo, las posiciones del formulario principal así como el tema en uso. Además, he dejado de utilizar cierta función "SetForegroundWindow" que tal vez estuviera haciendo más mal que bien. Tal vez queráis echar un vistazo a ver si os sigue fallando el asunto...

¡Gracias a todos!

matabyte 23-10-2012 16:16:56

Bien! ahora ya me funciona correctamente lo de cerrar la ventana de la ayuda :D.

Otra cosa (me vas a odiar de tanto sacar pegas :)):
-Cuando registras el programa no sale ninguna ventana de "gracias por registrar el programa". Como confirmación sería estupendo ponerla ;)

-Al intentar cargar un fichero .avi de 350Mb, me dice obviamente "si quiero cargarlo". Le digo que si, y se queda un bueeen rato bloqueado (supongo que intentando leerlo), en ese rato el programa está bloqueado, luego me saca el mensaje de "Out Of Memory", estaría bien que tubiera una barra de progreso junto a un botón de cancelar ;)

-Y igual es demasiado, pero que leyera los ficheros grandes por bloques (no todo a la vez, si no secuencialmente). Ya se sabe que los usuarios son capaces de abrir una imagen .iso de 16Gb con el notepad...

-Lo mismo me ocurre con ficheros .java de mas de 100Kb, el programa se "congela" sin permitir movimiento de la ventana.

Lo de los ficheros .java con UTF8, he intentado cambiar la codificacion desde el menu derecho, pero no pasa nada, no cambia de codificacion.


La franja horaria es GMT +2. Ahora son las 04:37:16.

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