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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
1-46426
dimonf
2002-04-02 21:13
2002.04.15
Как сделать, чтобы QuickReport-а не было видно на моей форме?


1-46453
P.
2002-04-03 12:28
2002.04.15
MouseMove


1-46315
Сатир
2002-04-03 15:57
2002.04.15
Получение составляющих цвета


3-46259
MixVictor
2002-03-25 20:37
2002.04.15
Бд на машине без Delphi


1-46420
V_Nik
2002-04-02 12:12
2002.04.15
Переключение между формами





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