Página 1 de 1

Duvida com o TOpenDialog.

MensagemEnviado: 17 Fev 2009 10:33
por leo_alves_br
Olá a todos, sou iniciante com o Delphi e estou precisando de uma ajuda com o TOpenDialog.

O meu problema:
- Preciso que quando eu execute o TOpenDialog, ele seja direcionado para a pasta onde o programa foi instalado, sempre!
- O problema eh que não sei onde será instalado o programa, pois sabendo-se bastava utilizar a opção InitialDir com ForceCurrentDirecotry := True.
- Isso se deve a fato deu utilizar o InstallShield para a pessoa escolher o diretorio de instalação.

Alguem pode me passar o Código para descobrir a pasta de instalação.

Obrigado

MensagemEnviado: 17 Fev 2009 12:21
por Jorge_Francisco
ExtractFilePath( ParamStr(0) )

ParamStr retorna strings contendo os paramêtros(argumentos). Por exemplo ao colocar 0(zero) na função é retornado o argumento que indica a localização do executável, caso coloque 1 em ParamStr e arraste um arquivo para cima do executável ele mostrará o caminho do arquivo, uso muito ao associar uma extensão ao meu programa, mas quem encarrega-se de enviar o caminho é o registro do Win.

A função ExtractFilePath extrai o pasta do caminho indicado.

Vlw

MensagemEnviado: 17 Fev 2009 12:27
por Jorge_Francisco
Em C++ :

Código: Selecionar todos

OpenDialog1->InitialDir = ExtractFilePath( ParamStr(0) ) ;


if(OpenDialog1->Execute())
{
//Seu código aqui
}

MensagemEnviado: 17 Fev 2009 13:36
por leo_alves_br
Ajuda perfeita Jorge.

em Delphi o Código ficou assim:

unit principal;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
caminho : String;

begin

caminho := ExtractFilePath(ParamStr(0));
Edit1.Text := caminho;
OpenDialog1.InitialDir := ExtractFilePath(ParamStr(0));
OpenDialog1.Execute;

end;

end.

MensagemEnviado: 18 Fev 2009 10:43
por Wagner de Queiroz
Eu prefiro uma outra abordagem a moda Delphi:


Código: Selecionar todos
OpenDialog1.InitialDir := ExtractFilePath(Application.exename);


O Objeto TApplication é o executavel do programa.

Application.Terminate por exemplo encerra a aplicacao corrente.