PDA

Ver la Versión Completa : Directorio predeterminado de búsqueda de archivos con TOpenDialog


shoulder
22-05-2015, 16:38:34
Hola me esta pasando algo extraño con el OpenDialog, un usuario aprieta un boton y el opendialog lo abre en un directorio predeterminado y elige un archivo, siempre los archivos estan en ese directorio por defecto. Pero... si dentro del dialogo me voy a otro directorio, cuando cierro el boton y abro el open dialogo de vuelta no me hace caso al initialDir prefijado, lo abre en ese nuevo directorio donde estuvo el usuario. Es un defecto del opendialog?.

OpenDialog1.FileName:= '';
opendialog1.InitialDir := 'c:\Carga';
opendialog1.
if not OpenDialog1.Execute then Exit;
edit17.Text := ExtractFileName(OpenDialog1.FileName);

Casimiro Notevi
22-05-2015, 17:09:29
Con casi 300 mensajes y todavía no pones las etiquetas correctas al código ni escribes títulos descriptivos a las preguntas :confused:

shoulder
22-05-2015, 17:18:39
Perdon lo escribi rapido...

jafera
22-05-2015, 17:58:34
Y la tercera linea compila?

opendialog1.

o es un error?

Saludos

shoulder
22-05-2015, 18:30:36
Perdon lo habia copiado rapido como dije antes, funciona pero si cambio directorio dentro del opendialog, hago click sobre un archivo PDF y vuelvo a entrar me queda como predefinido el nuevo directorio.

OpenDialog1.FileName:= '';
opendialog1.InitialDir := 'c:\carga';
if not OpenDialog1.Execute then Exit;
edit17.Text := ExtractFileName(OpenDialog1.FileName);

nlsgarcia
22-05-2015, 18:35:19
shoulder,


...un usuario aprieta un botón y el TOpenDialog lo abre en un directorio predeterminado y elige un archivo...si dentro del dialogo me voy a otro directorio, cuando cierro el botón y abro el open dialogo de vuelta no me hace caso al InitialDir prefijado, lo abre en ese nuevo directorio...¿Es un defecto del TOpenDialog?...
:rolleyes:

Es el comportamiento estándar del componente TOpenDialog.

Revisa esta información:

DelphiBasics : TOpenDialog (http://www.delphibasics.co.uk/RTL.asp?Name=TOpenDialog)
Espero sea útil :)

Nelson.

ecfisa
22-05-2015, 18:38:20
Hola shoulder.

Si no vacias la propiedad FileName se sobreescribirá el valor de InitialDir. Para conservar el valor de FileName y luego utilizarlo, podrías hacer:

...
implementation

var
SelectedFileName: string; // almacena valor de propiedad FileName

procedure TForm1.FormCreate(Sender: TObject);
begin
with OpenDialog1 do
begin
InitialDir:= 'C:\WINDOWS';
//...
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with OpenDialog1 do
if Execute then
begin
SelectedFileName := FileName;
FileName := '';
//...
end;
end;


Saludos :)

shoulder
22-05-2015, 20:09:36
Hola me sigue dando el mismo error, lo extraño es que si como inicio coloco el directorio c:\carga despues cambio directorio, cierro el programa y lo recompilo y me abre en el nuevo directorio ultimo elegido no hace caso al inicialdir.

jafera
22-05-2015, 20:30:21
Yo utilizo este codigo y el cambio se realiza correctamente.

OpenDialog1.Filename:='';
OpenDialog1.InitialDir:='C:\Rebuts_1.0\Fitxers\Rebuts\Capçalera';
F_Confirmacio := TF_Confirmacio.Create(self);
F_Confirmacio.Label1.Caption := 'Importem arxiu capçalera';
try
if F_Confirmacio.ShowModal = mrok then
begin
CSVCap_Hist.Close;
if OpenDialog1.Execute then
begin
CSVCap_Hist.Filename := OpenDialog1.FileName;
end;
CSVCap_Hist.Open;

En el opendialog y como initialdir tengo puesto:

C:\Rebuts_1.0\Fitxers\

Saludos

Josep

ecfisa
22-05-2015, 20:57:44
Hola shoulder
Hola me sigue dando el mismo error, lo extraño es que si como inicio coloco el directorio c:\carga despues cambio directorio, cierro el programa y lo recompilo y me abre en el nuevo directorio ultimo elegido no hace caso al inicialdir.
Si, vas a tener que almacenar la ruta también...


...
implementation

var
InitialDir : string = 'C:\WINDOWS';
SelFileName : string;

procedure TForm1.FormCreate(Sender: TObject);
begin
OpenDialog1.FileName:= '';
OpenDialog1.InitialDir := InitialDir;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with OpenDialog1 do
if Execute then
begin
SelFileName := FileName; // salvar nombre
FileName := '';
InitialDir := InitialDir; // restaurar ruta
ShowMessage(SelFileName);
end;
end;


Saludos :)

shoulder
22-05-2015, 21:21:58
Gracias ahi lo solucione, mi error era si escribo c:\carga en initialDir (no funciona) si escribo c:\carga\ funciona, e hice una pequeña rutina para que siempre controle si esta en el Dir. correcto.
Les dejo como me quedo:


var
openDialog6 : TOpenDialog; // Open dialog variable
fijarse : string;
begin
openDialog6 := TOpenDialog.Create(self);
opendialog6.InitialDir:= 'C:\carga\';
openDialog6.Filter := 'Pdf files (*.pdf)|*.PDF'; ; ;
// Only allow existing files to be selected
openDialog6.Options := [ofFileMustExist];
// Allow only .dpr and .pas files to be selected

with OpenDialog6 do
if Execute then
begin
fijarse := ExtractFileDir(OpenDialog6.FileName);
if fijarse <> 'C:\carga' then
begin
showmessage('Los archivos deben grabarse y buscarse dentro de c:\carga');
edit17.Clear;
end
else
edit17.Text := ExtractFileName(OpenDialog6.FileName);
end;

Casimiro Notevi
23-05-2015, 12:50:55
Perdon lo escribi rapido...
Bueno, a veces pasan esas cosas, gracias por tu colaboración :)


.