Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];

Вниз

Перетаскивание формы   Найти похожие ветки 

 
Arhangel   (2002-05-29 17:22) [0]

Как сделать, чтобы форму можно было перетаскивать за toolbar?


 
Song   (2002-05-29 17:30) [1]

А где у формы toolbar?


 
Arhangel   (2002-05-29 18:52) [2]

Наверху.
Но зачем это надо?


 
demon-777   (2002-05-29 19:06) [3]

Вот те пример перетаскивания за лэйбл....
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012;
begin
if (button=mbleft) and (ssCTRL in Shift) then
begin
ReleaseCapture;
perform(WM_SysCommand, SC_DragMove, 0);
end;
end;


 
demon-777   (2002-05-29 19:09) [4]

Только Ctrl держи когда перетаскивать будешь =)


 
Song   (2002-05-29 23:55) [5]

А это называется ToolBar ?


 
demon-777   (2002-05-30 03:42) [6]

>Song © (29.05.02 23:55)
Это называется пример.


 
demon-777   (2002-05-30 04:03) [7]

>Song, почти одно и тоже не так-ли ?(С уважением,)
Просто днём был занят и только на минутку залез на сайт,
и именно по этому очень конкретного ответа предоставить не смог.

И всё-же для ToolBar-a код следующий.

procedure TForm1.ToolBar1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const SC_DragMove = $F012;
begin
ReleaseCapture;
perform(WM_SysCommand, SC_DragMove, 0);
end;


 
Song   (2002-05-30 08:55) [8]

2Arhangel © (29.05.02 17:22)
Перехватывайте WM_NCHITTEST

2demon-777 © (30.05.02 04:03)
Я просто не понял, что ToolBar уже кинут на форму, поэтому и спросил а где он у формы (типа как заголовок есть всегда).


 
Arhangel   (2002-05-30 09:52) [9]

Song
Если обрабатывать WM_NCHITTEST, то получается вигня, т.к. это сообщение посылается даже если мыш просто двигается над toolbar"ом, но это не суть. Она мне не подошла т.к. мне надо чтобы форма именно перетаскивалась (чтобы рисовался контур формы и он ездил поэкрану), а с помощью этого сообщения у меня так не получилось.

demon-777
Насчет твоего примера, то я его уже подогнал под себя ещё когда ты его привел с label.

Все большое спасибо!!!!!!!!!!!


 
cyborg   (2002-05-30 10:29) [10]

Это работает, но хотелось бы узнать как двигать форму что бы не только контур показывался, а сразу перемещалась форма как в винампе?


 
Arhangel   (2002-05-30 14:40) [11]

Это уже настраиваются сами винды!;)


 
Arhangel   (2002-05-30 14:45) [12]

Зайди Свойства:Экран и поставь галочку отображать содержимое окна при его перетаскивании.


 
demon-777   (2002-05-31 00:21) [13]

>Arhangel © (30.05.02 14:45)
>Это уже настраиваются сами винды!;)Зайди Свойства:Экран и ?>поставь галочку отображать содержимое окна при его >перетаскивании.

атнють нет.
Это легко реализовать.
Вот пример, но он кривоват немного.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
oX,oY,i:integer; B:boolean;
implementation

{$R *.DFM}

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
begin
if i=2 then
begin
B:=True;
i:=0;
end;
if (ssLeft in Shift) and B then
begin
B:=False;
SetWindowPos(Form1.Handle,
HWND_TOPMOST,
Form1.Left+X-oX,
Form1.Top+Y-oY,
Form1.Width,
Form1.Height,
SWP_DRAWFRAME);
// Сдвинул, и всё остальное сделал
end;
i:=i+1;
oX:=X;
oY:=Y;
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
B:=True;
i:=0;
end;

end.


 
Arhangel   (2002-05-31 08:10) [14]

А зачем, если легче так;))


 
Song   (2002-05-31 09:08) [15]

2cyborg © (30.05.02 10:29)
>>разу перемещалась форма как в винампе?
>> Зайди Свойства:Экран и поставь галочку отображать содержимое окна при его перетаскивании.

Эту галочку можно включить программно через SystemParametersInfo()



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

Форум: "Основная";
Текущий архив: 2002.06.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-30902
Random
2002-05-29 12:58
2002.06.10
Class u Object


3-30721
brat
2002-05-18 21:46
2002.06.10
Как создается SQL база данных


1-30888
Great DAN
2002-05-29 11:37
2002.06.10
Записи типа RECORD


1-30890
Leo^Sun
2002-05-30 06:58
2002.06.10
Список чисел


1-30786
stainer
2002-05-31 01:23
2002.06.10
файловая система через меню





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский