Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.08;
Скачать: CL | DM;

Вниз

Как показать форму аналогично PopupMenu   Найти похожие ветки 

 
alpha5 ©   (2007-06-15 21:23) [0]

У меня есть кнопка и форма. При щелчке на кнопку надо сделать так, чтобы форма появлялась около кнопки, как будто это был PopupMenu (чтобы форма не заходила за края экрана). Как это сделать?

Заранее спасибо!


 
TUser ©   (2007-06-15 22:05) [1]

У объекта Screen есть соотв. свойства. Они позволят узнать размеры экрана. У кнопки также есть координаты + координаты парентов.


 
JanMihail ©   (2007-06-16 10:37) [2]

Вычисляй Left и Top . Ставь форму на них и все.


 
alpha5 ©   (2007-06-16 15:14) [3]

Спасибо, получилось!
Но возник ещё вопрос:
Как сделать так, если пользователь щёлкнул вне формы, то её надо закрыть.
Как перехватить это событие?


 
JanMihail ©   (2007-06-17 09:04) [4]

var
HookHandle: hHook;

function HookProc(Code: integer; WParam: word; LParam: Longint): Longint; stdcall;
var
msg: PEVENTMSG;
begin
if Code >= 0 then
begin
  result := 0;
  msg := Pointer(LParam);
  with Form1 do
    case msg.message of
      WM_LBUTTONUP:
      begin
        if WindowFromPoint(Mouse.CursorPos) <> Form1.Handle then
          Caption:= "была кликнута мышь вне моего приложения"
        else
          Caption:= "была кликнута мышь на моем приложении"";
      end;
    end;
end else
  result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.FormStyle := fsStayOnTop;
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, HInstance, 0);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookHandle <> 0 then
  UnhookWindowsHookEx(HookHandle);
end;



Страницы: 1 вся ветка

Текущий архив: 2007.07.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
1-1178705716
logslava
2007-05-09 14:15
2007.07.08
Зависание программы при выходе из метода моего класса


15-1181459151
Сергей Колесник
2007-06-10 11:05
2007.07.08
Пример создания и отправки UDP пакета через RAW socket


2-1181811128
kukuikar
2007-06-14 12:52
2007.07.08
Как работать с редактором формул MS Word из своей программы


15-1181424843
Руслан
2007-06-10 01:34
2007.07.08
Импорт из Word


2-1181892122
Познающий
2007-06-15 11:22
2007.07.08
Определить физический ли текущий принтер