Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Смена текста одного из контролов Open Dialog Box... [D7, Win2k, WinXP]


gdaujk ©   (2006-11-11 18:12:00) 

Доброго времени суток, уважаемые мастера.

Вопрос к Вам следующий: как изменить текст одного из стандартных элементов управления в диалоге открытия/сохранения файла (Open/Save dialog box)? Делаю так:

…

uses
 Windows, Dialogs;

type
 TExampleDialog = class(TOpenDialog)
 protected
   procedure DoTypeChange; override;
 end;

implementation

uses CommDlg;

const
 ID_EDT1 = 1148;  // ???

procedure TExampleDialog.DoTypeChange;
begin
  SendMessage(Handle,
             CDM_SETCONTROLTEXT,
             WPARAM(ID_EDT1),
             LPARAM(PChar('NewString')));  // текст не меняется

 inherited;
end;

end.

…

procedure TForm1.Button1Click(Sender: TObject);
var
 ExDlg: TExampleDialog;
begin
 ExDlg := TExampleDialog.Create(Self);
 ExDlg.Filter := 'Filter 1|*.fl1|Filter 2|*.fl2';
 ExDlg.FilterIndex := 1;
 ExDlg.Execute;
end;


При смене фильтра ничего не происходит. Подскажите, что я делаю не так.

PS: Меня терзают сомнения по поводу константы ID_EDT1: я взял её из описания диалога в comdlg32.dll. В WinAPI пишут, что edt1"are constant defined in DLGS.H"; если у вас есть DLGS.H, то будьте добры – подскажите, чему равно edt1.


gdaujk   (2006-11-12 15:35:00) [1]

Точно, там не Handle, а GetParent(Handle) должно быть (см. TOpenDialog.GetFileName).

Leonid Troyanovsky, вы как всегда на высоте :-). Спасибо.


Leonid Troyanovsky   (2006-11-12 01:34:00) [2]


> gdaujk ©   (11.11.06 18:12)  

> const
>  ID_EDT1 = 1148;  // ???


Если имелся ввиду Edit для имени файла, то, видимо, 1152.


> procedure TExampleDialog.DoTypeChange;
> begin
>  SendMessage(Handle,
>              CDM_SETCONTROLTEXT,
>              WPARAM(ID_EDT1),
>              LPARAM(PChar('NewString')));  // текст не
> меняется


Здесь не очень понятен Handle, бо для диалога это должно
быть нечто другое. Ну, скажем GetActiveWindow.

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо