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

Вниз

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

 
An   (2003-03-17 11:12) [0]

Привет, Мастера!
Есть форма без заголовка (делаю это при помощи SetParams, как учили), надо, чтобы ее можно было таскать мышкой ухватившись за клиентскую часть. Опять же как учили, делаю обработчик события, что-то там WM_???CHITTEST, и в нем подменяю msg.result, как будто мышь нажата в caption. Все работает. Усложняю задачу.
К форме прицепляю окно, созданное без VCL- например IVideoWindow,
при помощи put_owner, теперь в клиентской части моей формы содержимое другого окна и, естественно, на событие WM_???CHITTEST она не реагирует. Что делать? Пробовал подменить у IVideoWindow процедуру WndProc на WndProc моей формы- не помогает.Научите, а?


 
vlad40 ©   (2003-03-17 12:34) [1]

А если так попробовать?:


var
px,py: integer;

procedure TForm1.AppMessage( var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.message=WM_MOUSEMOVE) and (sd) then
begin
left:=Msg.pt.x-px;
top:=Msg.pt.y-py;
end;
if (Msg.message=WM_LBUTTONDOWN) then
begin
px:=Msg.pt.x-Left;
py:=Msg.pt.y-Top;
sd:=true;
end;
if (Msg.message=WM_LBUTTONUP) then
begin
sd:=false;
end;
end;


 
Intell ©   (2003-03-17 20:34) [2]

procedure TForm1.Form1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DragMove = $F012; { a magic number }
begin
ReleaseCapture;
form1.perform(WM_SysCommand, SC_DragMove, 0);
end;


другой:

var

Form1: TForm1;
MX: integer;
MY: integer;

implementation

{$R *.DFM}

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);
begin
if Shift<>[ssLeft] then
begin
MX:=X;
MY:=Y;
end else
begin
Left:=Left+X-MX;
Top:=Top+Y-MY;
end;
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.021 c
1-88011
Алексий
2003-03-12 17:33
2003.03.27
получить время создания файла


3-87792
AleksandrKu
2003-03-07 14:01
2003.03.27
поможите люди добри как Stored процедурку написать


14-88165
cypher
2003-03-10 17:26
2003.03.27
Delphi 5 + Delphi 6


3-87799
Atamali Mamedov
2003-03-06 15:18
2003.03.27
ORA-00600


4-88287
Cranber
2003-01-28 06:20
2003.03.27
Получить и установить частоту обновления экрана...