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

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

Програмное закрытие модального окна (диалог) [D6, Win95/98, WinME, Win2k, WinXP]


Александр В. ©   (2004-10-20 15:55:00) 

Здравствуйте!
Помогите решить такую проблему:
На принт диалог добавляю свою кнопку "Просмотр".
Необходимо чтобы при нажатии на неё принт диалог
реагировал так же как и на нажатие (его) кнопки "ОК".
Пробовал
  SendMessage(PD.HWND,WM_Char,Ord(#13),0);
не помогает.
Заранее благодарен.


Александр В.   (2004-10-20 17:44:00) [1]

Необходимо на PrintDialog поместить свою кнопку
при нажатии на которую диалог закрывается, а контрол
TPrintDialog возвращал установленные пользователем
режимы, PrintRange и пр..
Как это сделал я:
кнопка "Просмотр" лежит на панели, которую собственно и
кидаем на PrintDialog, иначе, если кидать только батон,
то он отказывается обрабатывать события. Такая практика
почерапана из Dialogs.pas.
//Old_Wnd:THandle - переменная модуля
{ В обработчике события OnShow PrintDialog
 кидаем панель с батоном на диалог
}
procedure TForm1.PDShow(Sender: TObject);
var
 r:Trect;
begin
Old_Wnd:=Windows.SetParent(pnl_btn.Handle,PD.Handle);
Windows.GetClientRect(PD.Handle,r);
pnl_btn.Left:=13;pnl_btn.Top:=r.Bottom-pnl_btn.Height-12;
pnl_btn.Visible:=True;
end;

//а в обработчике события OnClose возвращаем на родину.

procedure TfRepMan.PDClose(Sender: TObject);
begin
pnl_btn.Visible:=False;
Windows.SetParent(pnl_btn.Handle,Self.Handle);
end;

//Так вот. В обработчике OnClick батона необходимо

procedure TfRepMan.Button1Click(Sender: TObject);
begin
{закрыть диалог и получить установленные пользоваетелм
настройки, PrintRange и пр.. Вся проблема в том, что
каким бы методом я ни пробовал закрывать эффект как от нажатия
клавиши "Отмена" или Esc. Может я чего не так делаю.
}
// Пробовал так:
keybd_event(VK_RETURN,0,0,0);
keybd_event(VK_RETURN,0,KEYEVENTF_KEYUP,0);
// и так
SendMessage(Self.Handle,WM_CHAR,Word(#13),0);

//SendMessage(PD.Handle,WM_CLOSE,0,0);

end;


-=SS=-   (2004-10-20 16:47:00) [2]

В чём собственно проблема пподробней монжо ?


Наверх

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