Апгред TcxShellBrowserDialog.

Страдалецъ
Дата: 19.09.2019 08:15:07
Потребовался мне тут компонентик для выбора каталога, решил использовать из девок TcxShellBrowserDialog, а он оказывается не может создавать каталоги. Решил я залезть в техподдержку девок и оказалось, что эта проблема больше 10 лет висит нерешенная :(
Там же нашел идею, на основе которой сварганил следующее:
type
  TcxShellBrowserDialog = class(cxShellBrowserDialog.TcxShellBrowserDialog)
  private
   cxButton3: TcxButton;
   procedure cxButton3Click(Sender: TObject);
  protected
   function CreateForm: TcxShellBrowserDlg; override;
  end;
...
function TcxShellBrowserDialog.CreateForm: TcxShellBrowserDlg;
begin
 inherited;
 Result := TcxShellBrowserDlg.Create(Application);
 cxButton3 := TcxButton.Create(Result);
 cxButton3.Caption := 'Create';
 cxButton3.Width := Result.cxButton1.Width;
 cxButton3.Height := Result.cxButton1.Height;
 cxButton3.Left := 10;
 cxButton3.Top := Result.ClientHeight - cxButton3.Height - 10;
 cxButton3.Anchors := [akLeft, akBottom];
 cxButton3.Parent := Result;
 cxButton3.OnClick := cxButton3Click;
end;

procedure TcxShellBrowserDialog.cxButton3Click(Sender: TObject);
begin
 ForceDirectories(IncludeTrailingPathDelimiter(Path) + 'New path');
end;

Кнопка создается, нажимается, вот только свойство Path пустое оказалось. И вот собственно вопрос, как же мне достучаться до рабочего свойства Path?
DimaBr
Дата: 19.09.2019 08:51:43
TcxShellBrowserDialog = class(cxShellBrowserDialog.TcxShellBrowserDialog)
  private
   Form: TcxShellBrowserDlg;
   cxButton3: TcxButton;
   procedure cxButton3Click(Sender: TObject);
  protected
   function CreateForm: TcxShellBrowserDlg; override;
  end;

function TcxShellBrowserDialog.CreateForm: TcxShellBrowserDlg;
begin
 inherited;
 Result := TcxShellBrowserDlg.Create(Application);
 cxButton3 := TcxButton.Create(Result);
 cxButton3.Caption := 'Create';
 cxButton3.Width := Result.cxButton1.Width;
 cxButton3.Height := Result.cxButton1.Height;
 cxButton3.Left := 10;
 cxButton3.Top := Result.ClientHeight - cxButton3.Height - 10;
 cxButton3.Anchors := [akLeft, akBottom];
 cxButton3.Parent := Result;
 cxButton3.OnClick := cxButton3Click;
 Form := Result;
end;

procedure TcxShellBrowserDialog.cxButton3Click(Sender: TObject);
begin
 ForceDirectories(IncludeTrailingPathDelimiter(Form.cxTeFolder.Text) + 'New path');
end;
ma1tus
Дата: 19.09.2019 08:53:07
type
  TcxShellBrowserDialog = class(cxShellBrowserDialog.TcxShellBrowserDialog)
  private
   cxButton3: TcxButton;
   FDlg: TcxShellBrowserDlg;
   procedure cxButton3Click(Sender: TObject);
  protected
   function CreateForm: TcxShellBrowserDlg; override;
  end;
...
function TcxShellBrowserDialog.CreateForm: TcxShellBrowserDlg;
begin
 inherited;
 Result := TcxShellBrowserDlg.Create(Application);
 FDlg := Result;
 ...
end;

procedure TcxShellBrowserDialog.cxButton3Click(Sender: TObject);
begin
 ForceDirectories(IncludeTrailingPathDelimiter(FDlg.DlgFolder) + 'New path');
end;

не ?
ma1tus
Дата: 19.09.2019 08:53:36
DimaBr,

ой )
Страдалецъ
Дата: 19.09.2019 20:05:16
Действительно упс. Вот ведь, а слона то и не увидел :) Спасибки, теперь надо как-то его заставить сфокуситься на этом каталоге. Будем дальше копать.