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

Вниз

Как сделать липкие формы?   Найти похожие ветки 

 
LazyCat ©   (2002-04-02 17:04) [0]

Товариши МАСТЕРА! Научите, как можно сделать липкие формы, как в винампе, чтобы они прилипали друк к другу.


 
Digitman ©   (2002-04-02 17:13) [1]

"друк к другу" - обрати внимание на все, что связано с механизмом drag"n"dock. В хэлпе достаточно инф-ции на эту тему.


 
Nikolay M. ©   (2002-04-02 17:41) [2]

Были, по-моему, на torry такие компоненты.


 
olookin ©   (2002-04-02 17:45) [3]

А нельзя ли просто рассчитывать координаты окон и при некотором значении, меньшем или равном заданному формы просто резко прикасаются.


 
olookin ©   (2002-04-02 17:46) [4]

Т.е. я имел в виду, что прекращает работу обработчик OnMouseMove и позиция передвигаемой формы принимает фиксированные значения.


 
Nikolay ©   (2002-04-02 19:50) [5]

можно


 
Walker ©   (2002-04-03 05:51) [6]

вот простенький пример:


{
Article:

Sticky Windows
http://delphi.about.com/library/weekly/aa070301a.htm
This article shows how to dock your Delphi forms to
the edges of your desktop screen.


********************************************
Zarko Gajic, BSCS
About Guide to Delphi Programming
http://delphi.about.com
email: delphi.guide@about.com
free newsletter: http://delphi.about.com/library/blnewsletter.htm
forum: http://forums.about.com/ab-delphi/start/
advertising: http://delphi.about.com/library/bladvertise.htm
********************************************
}

unit Unit1;

interface

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

type
TfrMain = class(TForm)
edStickAt: TEdit;
Label1: TLabel;
chkTop: TCheckBox;
chkBottom: TCheckBox;
chkRight: TCheckBox;
chkLeft: TCheckBox;
procedure edStickAtKeyPress(Sender: TObject; var Key: Char);
private
procedure WMWINDOWPOSCHANGING (Var Msg: TWMWINDOWPOSCHANGING); message WM_WINDOWPOSCHANGING;
public
{ Public declarations }
end;

var
frMain: TfrMain;

implementation
{$R *.DFM}


procedure TfrMain.WMWINDOWPOSCHANGING (var Msg: TWMWINDOWPOSCHANGING);
const
Docked: Boolean = FALSE;
var
rWorkArea: TRect;
StickAt : Word;
begin
StickAt := StrToInt(edStickAt.Text);

SystemParametersInfo (SPI_GETWORKAREA, 0, @rWorkArea, 0);

with Msg.WindowPos^ do begin
if chkLeft.Checked then
if x <= rWorkArea.Left + StickAt then begin
x := rWorkArea.Left;
Docked := TRUE;
end;

if chkRight.Checked then
if x + cx >= rWorkArea.Right - StickAt then begin
x := rWorkArea.Right - cx;
Docked := TRUE;
end;

if chkTop.Checked then
if y <= rWorkArea.Top + StickAt then begin
y := rWorkArea.Top;
Docked := TRUE;
end;

if chkBottom.Checked then
if y + cy >= rWorkArea.Bottom - StickAt then begin
y := rWorkArea.Bottom - cy;
Docked := TRUE;
end;

if Docked then begin
with rWorkArea do begin
// no moving out of the screen
if x < Left then x := Left;
if x + cx > Right then x := Right - cx;
if y < Top then y := Top;
if y + cy > Bottom then y := Bottom - cy;
end; {with rWorkArea}
end; {if Docked}
end; {with Msg.WindowPos^}

inherited;
end;

procedure TfrMain.edStickAtKeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ["0".."9"]) then Abort;
end;

end.



а это текст формы (unit1.dfm)

object frMain: TfrMain
Left = 198
Top = 139
Width = 232
Height = 118
Caption = "frMain"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 20
Width = 36
Height = 13
Caption = "Stick at"
end
object edStickAt: TEdit
Left = 8
Top = 36
Width = 65
Height = 21
TabOrder = 0
Text = "20"
OnKeyPress = edStickAtKeyPress
end
object chkTop: TCheckBox
Left = 116
Top = 12
Width = 61
Height = 17
Caption = "chkTop"
Checked = True
State = cbChecked
TabOrder = 1
end
object chkBottom: TCheckBox
Left = 116
Top = 64
Width = 73
Height = 17
Caption = "chkBottom"
Checked = True
State = cbChecked
TabOrder = 2
end
object chkRight: TCheckBox
Left = 148
Top = 36
Width = 65
Height = 17
Caption = "chkRight"
Checked = True
State = cbChecked
TabOrder = 3
end
object chkLeft: TCheckBox
Left = 84
Top = 36
Width = 61
Height = 17
Caption = "chkLeft"
Checked = True
State = cbChecked
TabOrder = 4
end
end


 
LazyCat ©   (2002-04-03 08:41) [7]

Большое спасибо всем ответившим!
Отдельное спасибо для Walker, как раз то, что надо :]



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
1-46304
Locked
2002-03-30 08:15
2002.04.15
как перевести string в widestring?


4-46538
Eraser
2002-02-07 08:57
2002.04.15
Хочу прогамму в Tray положить


6-46461
Vlad__
2002-01-31 15:38
2002.04.15
ICS компоненты ( сокеты )


14-46485
BJValentine
2002-03-06 14:35
2002.04.15
Музыка


3-46237
UncleRu
2002-03-16 19:17
2002.04.15
кэширование данных связанных таблиц