powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TEdit, Кнопка и PathDialog
10 сообщений из 10, страница 1 из 1
TEdit, Кнопка и PathDialog
    #40078436
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет Парни... Без Вас ну никак...))))

Есть 2 формы. На одной форме два Эдита и две кнопки... На другой форме PathDialog c ShellTreeView и Эдитом...
Если на первой форме кликнуть мышей на любом Эдите, то открывается вторая форма, где можно выбрать каталог, название которого отображается на Эдите второй формы. Далее жмешь Ок или Отмену (по барабану что жать) и с Эдита второй формы, текст переходит в Эдит, первой формы на которой был фокус... Все работает замечательно...

НО, прикрутив кнопки к Эдитам на первой форме, вызов второй формы происходит - НО результат в Эдит не возвращается...

Подскажите что не так... SetFocus, (Sender), (Self) не предлагать...))))

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
unit MainForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Forms, Controls, Dialogs,
  Variants, ComCtrls, StdCtrls, Buttons, ShellCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Edit1Click(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses PathDialog;

{$R *.dfm}

procedure TForm1.Edit1Click(Sender: TObject);
begin
     Form2.ShowModal;
    (Sender as TEdit).Text := Form2.Edit1.Text;
end;

procedure TForm1.Edit2Click(Sender: TObject);
begin
     Form2.ShowModal;
    (Sender as TEdit).Text := Form2.Edit1.Text;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     Edit1Click(nil);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     Edit2Click(nil);
end;

end.



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
unit PathDialog;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Forms, Controls, Dialogs,
  Variants, ComCtrls, StdCtrls, Buttons, ShellCtrls;

type
  TForm2 = class(TForm)
    ShellTreeView1: TShellTreeView;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
end;

var
  Form2: TForm2;

implementation

uses MainForm;

{$R *.DFM}

procedure TForm2.ShellTreeView1Change(Sender: TObject; Node: TTreeNode);
begin
  Edit1.Text := '';
  Edit1.Text := ShellTreeView1.Path;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  if ShellTreeView1.IsEditing then begin
    ModalResult := mrNone;
    ShellTreeView1.Selected.EndEdit(False);
    ShellTreeView1.SetFocus;
  end else begin
    ModalResult := mrOk;
   end;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin       
  if ShellTreeView1.IsEditing then
  ModalResult := mrNone
  else
  ModalResult := mrCancel;
end;

end.
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078437
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или только имитацией в Эдит мышей нужно делать на кнопке..???
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078446
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Включи мозг: у тебя в процедуре результат присваивается эдиту, переданному как Sender. А
потом ты её вызываешь с Sender = nil. Куда, ты ожидаешь, пойдёт присвоение?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078448
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Включи мозг: у тебя в процедуре результат присваивается эдиту, переданному как Sender. А
потом ты её вызываешь с Sender = nil. Куда, ты ожидаешь, пойдёт присвоение?..


Если вызывать Edit1Click(Sender); то ошибка выскакивает...
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078449
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Включи мозг ещё раз: Sender в этом месте TButton. Как ни крути, его не приведёшь к TEdit.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078451
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваша вторая форма возвращает выбранный каталог.
Для этого реализовываем функцию в форме выбора каталога
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function GetFolder(var Path: string): boolran;
begin
  with TForm2.Create(Application) do
  try
    if ShowModal = mrOk then Path := Edit1.Text;
  finally
    Free;
  end;
end;



Теперь в первой форме код будет следующим
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure TForm1.Button1Click(Sender: TObject);
var S: string;
begin
  if GetFolder(S) then Edit1.Text := S;
end;

procedure TForm1.Button2Click(Sender: TObject);
var S: string;
begin
  if GetFolder(S) then Edit2.Text := S;
end;
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078452
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr Спасибо, но все равно не возвращает результат в Эдит...
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078453
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr, если в функции заремить try, finally и Free то результат возвращается в Эдит...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function GetFolder(var Path: string): Boolean;
begin
  with TForm2.Create(Application) do
 // try
    if ShowModal = mrOk then Path := Form2.Edit1.Text;
 // finally
 //  Free;
 // end;
end;
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078456
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

alex_od_
DimaBr, если в функции заремить try, finally и Free то результат возвращается в Эдит...

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
function GetFolder(var Path: string): Boolean;
begin
  with TForm2.Create(Application) do
 // try
    if ShowModal = mrOk then Path := Form2.Edit1.Text;
 // finally
 //  Free;
 // end;
end;


Это просто совпадение. Без Free будет утечка памяти.

В варианте GetFolder от DimaBr не присваивается результат.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function GetFolder(var aPath: string): boolean;
begin
  with TForm2.Create(Application) do
  try
    Result := ShowModal = mrOk;
    if Result then   aPath := Edit1.Text;
  finally
    Free;
  end;
end;
...
Рейтинг: 0 / 0
TEdit, Кнопка и PathDialog
    #40078459
alex_od_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov
Привет.
В варианте GetFolder от DimaBr не присваивается результат.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function GetFolder(var aPath: string): boolean;
begin
  with TForm2.Create(Application) do
  try
    Result := ShowModal = mrOk;
    if Result then   aPath := Edit1.Text;
  finally
    Free;
  end;
end;



Привет Polesov ... Огромнейшее Спасибо.... Работает...)))) Всем Спасибо...Крепкого Здоровья и Удачи...
Polesov Персональное тебе Спасибище...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TEdit, Кнопка и PathDialog
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]