Forum > Spanish

[Solucionado] OpenDialog problema con el filtro en Windows

(1/2) > >>

GAN:
Tanto en Open como en SaveDialog los filtros me funcionan bien pero en Linux, cuando compilo el mismo programa en Windows XP, cuando el programa abre la caja de diálogo no muestra ningún archivo ignorando los filtros, o más bien los filtros hacen que no se muestren. Lo solucioné temporalmente quitando los filtros, pero me gustaría poder usarlos :)

La pregunta concreta sería como establecer los filtros para que funcionen en Windows.

Saludos.

jujibo:
Hola GAN

Podrías indicar cómo utilizas los filtros para saber si hay algún error.

un ejemplo  http://wiki.freepascal.org/Howto_Use_TOpenDialog/es :


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} --- var nombreArchivo : string;         DialogoAbrir1.Filter := 'Archivo CDR|*.csv;*.txt;*.CSV;*.TXT';  { Filtro para archivos de texto y csv }   if DialogoAbrir1.Execute then              { Si se ejecuta DialogoAbrir1 entonces hacer lo siguiente }   begin     nombreArchivo := DialogoAbrir1.Filename; { Asignamos a nombreArchivo el valor de DialogoAbrir1.Filename }         ShowMessage(nombreArchivo);            { Mostramos un mensaje conteniendo el valor de nombreArchivo }   end; 
Si quieres añadir más filtros simplemente debes tener en cuenta que un filtro se compone de dos partes, el texto y el filtro. Las dos partes se separan por el caracter | puedes añadir más filtros separando cada tipo con el mismo caracter  |

ejemplo:


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---DialogoAbrir1.Filter := 'Text files (*.txt)|*.TXT|Rich Text Files (*.rtf)|*.RTF|Some Other File (*.sof)|*.SOF|All files (*.*)|*.*'
Un saludo

jmm72:
Igual tu problema es cómo especificar los filtros. En Windows, para decir 'todos los ficheros' sería '*.*', mientras que en Linux sería '*' - pero como dice Jujibo, sin un ejemplo de tus filtros no podemos decir más.

jujibo:

--- Quote from: jmm72 on April 12, 2017, 03:40:01 pm ---Igual tu problema es cómo especificar los filtros. En Windows, para decir 'todos los ficheros' sería '*.*', mientras que en Linux sería '*' - pero como dice Jujibo, sin un ejemplo de tus filtros no podemos decir más.

--- End quote ---

Simplemente indicar que * es compatible únicamente con Linux/*NIX. *.* u otra extensión como por ejemplo *.7z  es compatible con Windows y Linux.

GAN:
Gracias a todos por las respuestas.
Mis filtros, que funcionan bien en Linux son:


--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---OpenSQL.Filter:='Todos|*.* *. * |SQLite|*.db *.sqlite3 *.DB *.SQLITE3 *.sqlite *.SQLITE'; 
Ahora veo que @jujibo incluye un ; y también emplea paréntesis, lo cual como verán en mi código no hay ninguno de esos elementos. Probaré sus sugerencias y comentaré los resultados.

Saludos.

Navigation

[0] Message Index

[#] Next page

Go to full version