Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Directorio predeterminado de búsqueda de archivos con TOpenDialog (https://www.clubdelphi.com/foros/showthread.php?t=88341)

shoulder 22-05-2015 16:38:34

Directorio predeterminado de búsqueda de archivos con TOpenDialog
 
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?.
Código Delphi [-]
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

Opendialog
 
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

Opendialog predeterminar directorio
 
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.
Código Delphi [-]
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,

Cita:

Empezado por 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:
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:
Código Delphi [-]
...
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

Opendialog predeterminar directorio
 
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.

Código Delphi [-]
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
Cita:

Empezado por shoulder (Mensaje 492424)
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...

Código Delphi [-]
...
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

Opendialog predeterminar directorio
 
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:

Código Delphi [-]
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

Cita:

Empezado por shoulder (Mensaje 492411)
Perdon lo escribi rapido...

Bueno, a veces pasan esas cosas, gracias por tu colaboración :)


.


La franja horaria es GMT +2. Ahora son las 07:17:33.

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