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

Вниз

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

 
Opera   (2003-04-08 06:37) [0]

Мастера помогите с кодом пожалуйста.
Мне нужно чтобы форму по экрану можно было перемещать напимер за Panel1.
Помогите пожалуйста!


 
Separator   (2003-04-08 08:22) [1]

Перемещение формы не за заголовок I
Перетаскивание границ окна

Это описание одного из Борландовских советов:

В: Как я могу заставить форму перемещаться, щелкая и таская ее в области окна, исключая заголовок?

О: Простейший путь - "одурачить" окно, пусть оно думает, что его тастают за заголовок. Сделайте это с помощью системного сообщения wm_NCHitTest...



--------------------------------------------------------------------------------
type

TForm1 = class(TForm)
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
procedure WMNCHitTest(var M: TWMNCHitTest); message wm_NCHitTest;
end;

var

Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.WMNCHitTest(var M: TWMNCHitTest);
begin

inherited; { вызвали наследованный дескриптор сообщения, }
if M.Result = htClient then { кликнув в области окна? }
M.Result := htCaption; { если так, то мы заставили Windows думать, }
{ что щелчок был на заголовке окна. }
end;

Перетаскивание окна с содержимым

После того, как я воспользовался вашим кодом, окно осталось на том же месте, таскался лишь его контур. Как изменить это так, чтобы при перетаскивании сохранялось содержимое окна (подобно win95 plus)?

Вот небольшой простой компонент, работающий по этому принципу...



--------------------------------------------------------------------------------
Unit WinDrag;

interface

uses windows, sysutils, classes, dsgnintf;

type

TWinDrag = class(TComponent)
private
{ Private Declarations }
protected
{ Protected Declarations }
public
{ Public Declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function GetDragFlag: boolean;
procedure SetDragFlag(Status: Boolean);
published
Property DragFlag: Boolean read GetDragFlag write SetDragFlag;
end;

procedure Register;

implementation

constructor TWinDrag.Create(AOwner: TComponent);
begin

inherited Create(AOwner);
DragFlag := GetDragFlag;
end;

destructor TWinDrag.Destroy;
begin

inherited Destroy;
end;

function TWinDrag.GetDragFlag: boolean; var Value : Boolean; begin
SystemParametersInfo(SPI_GETDRAGFULLWINDOWS, 0, @Value, 0);
Result := Value;
end;

procedure TWinDrag.SetDragFlag(Status: Boolean);
begin

SystemParametersInfo(SPI_SETDRAGFULLWINDOWS, Integer(Status),
POINTER(0), 0);
end;

procedure Register;
begin

RegisterComponents("Samples", [TWinDrag]);
end;

end.

Перетаскивание формы, удерживая компонент Label

Если вы хотите переместить форму, удерживая ее мышью, воспользуйтесь приведенным ниже кодом (при необходимости перетаскивания формы, удерживая ее за другие визуальные элементы управления, например, Label, используйте этот код в их соответствующих обработчиках события):



--------------------------------------------------------------------------------
var

X1, Y1: Integer;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);
begin

{Устанавливаем координаты старта}
X1 := X;
Y1 := Y;
end;

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

Y: Integer);
begin

{Проверяем нажатие левой кнопки мыши}
if HiWord(GetAsyncKeyState(VK_LBUTTON)) > 0 then
begin
Form1.Left := Form1.Left + X - X1;
Form1.Top := Form1.Top + Y - Y1;
end;
end;


 
BetMaster   (2003-04-08 08:25) [2]

А при использовании SkinEngine это к сожелению не прокатывает
Может кто знает как перетаскивать форму не за заголовок, и при этом иснользовать компонент SkinEngine.


 
Separator   (2003-04-08 08:37) [3]

Изменяй Form.Left и Form.Top


 
Бобко Сергей   (2003-04-08 11:27) [4]

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



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

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

Наверх





Память: 0.46 MB
Время: 0.008 c
3-54505
Filmax
2003-03-31 14:45
2003.04.17
Dbgrid-проверка на заполнение


1-54551
Опус
2003-04-06 10:23
2003.04.17
Отчеты. Подскажите как поместить CheckBox или ...


9-54387
JB
2002-11-15 09:14
2003.04.17
Спрайты для игр


1-54688
AlexC
2003-04-04 14:41
2003.04.17
Освобождение неиспользуемой памяти....как?


14-54881
Дмитрий К.К.
2003-04-02 06:30
2003.04.17
Именинники 2 апреля





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