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

Вниз

Как перетащить форму, если...   Найти похожие ветки 

 
SemFLY   (2002-09-12 10:18) [0]

Свойство BorderStyle := bsNONE, а то сделал форму без окантовки,
а теперь перетаскивать её не могу :(

Спасибо ! ;)


 
AFrolov   (2002-09-12 10:24) [1]

Почитай статьи как таскать форму не за шапку. Такая статья должна быть на http://www.sources.ru/


 
France   (2002-09-12 10:28) [2]

А вот так попробуйте:
Закиньте в MouseMove(попробовал для Panel и Image - работает)

if ssleft in shift then
begin
ReleaseCapture;
Form1.perform(WM_syscommand, $F012, 0);
end;


 
Игорь Шевченко   (2002-09-12 10:29) [3]

Окантовку не проще сделать ? :-)


 
Игорь Шевченко   (2002-09-12 10:30) [4]

http://www.delphikingdom.com/treasury/hsdialogs.htm
Там формы без окантовки, таскаются. Ключевое слово - WMNCHitTest


 
McSimm   (2002-09-12 10:31) [5]

у формы:
procedure WMNCHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;

В этом обработчике надо оценить положение мыши и если надо перетаскивать - вернуть Msg.Result := htCaption;


 
Alibaba   (2002-09-12 10:33) [6]

Или MouseMove
Или сделать окантовку
Я больше решений не вижу...
Если найдутся еще мне было-бы интересно услышать. :)


 
Song   (2002-09-12 10:44) [7]

SC_DRAGMOVE конечно красиво, но подход ленивого программиста, а не хорошего :-)


 
SemFLY   (2002-09-12 16:59) [8]

Оки ,сейчас почитаю что и как ;))


 
zavdim   (2002-09-13 12:53) [9]

Только не в MouseMove, а в MouseDown.


 
alena.svt   (2002-09-13 19:43) [10]

А вот так еще и с рамочкой!

unit Unit1;

interface

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

type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
OldX,
OldY,
OldLeft,
OldTop : Integer;
ScreenDC : HDC;
MoveRect : TRect;
Dragging : Boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
begin
ScreenDC := GetDC(0);
OldX := X;
OldY := Y;
OldLeft := X;
OldTop := Y;
MoveRect := BoundsRect;
DrawFocusRect(ScreenDC, MoveRect);
Dragging := True;
end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Dragging then begin
DrawFocusRect(ScreenDC,MoveRect);
OldX := X;
OldY := Y;
MoveRect := Rect(Left+OldX-OldLeft,Top+OldY-OldTop,
Left+Width+OldX-OldLeft,Top+Height+OldY-OldTop);
DrawFocusRect(ScreenDC,MoveRect);
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then begin
DrawFocusRect(ScreenDC,MoveRect);
Left := Left+X-OldLeft;
Top := Top+Y-OldTop;
ReleaseDC(0,ScreenDC);
Dragging := False;
end;
end;

end.


 
alena.svt   (2002-09-13 19:53) [11]

А вообще чего то проблемы не вижу
первый пример просто посимпотичнее.
Ну а так как и надо.

unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
procedure WMNCHitTest(var M: TWMNCHitTest);
message wm_NCHitTest;

public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin
inherited;
if M.Result = htClient then
M.Result := htCaption;
end;

end.



 
SemFLY   (2002-09-13 23:41) [12]

Спасибо ! ;))



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

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

Наверх





Память: 0.47 MB
Время: 0.008 c
1-85510
SoniK
2002-09-16 23:26
2002.09.26
Помогите с ini пожалуйста.


1-85500
id_privin
2002-09-13 12:39
2002.09.26
Как унаследовать форму из одного пакета в другом


3-85370
Igor V.
2002-09-05 06:38
2002.09.26
Проблема при выполнении хранимой (ADO)


14-85680
NetBreaker666
2002-09-01 23:29
2002.09.26
Зацените :


7-85728
Чайник2
2002-07-09 11:51
2002.09.26
CD-ROM





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский