![]() |
|
|
#1
|
|||
|
|||
|
Всем привет =) Короче, вот я решил сделать прогу, и срочно надо сделать плавающее окошко, так как программа без него уже не программа. Долго думал как реализовать это окошко, на так и недоходит. Подскажите как его можно реализовать =)
Если кто непонял, то я говорю о плавающем окошке, подобно как в программах qip, ICQ, Download Master и .т.д. Заранее спасиб =) |
|
#2
|
||||
|
||||
|
Сделай форму с BorderStyle = bsNone
|
|
#3
|
|||
|
|||
|
Неочень получится, я видел компоненты, при помощи которых организовываются плавоющие окошки, но эти компоненты планые и без инходников =( Подскажите, как можно создать окно программно (при помощи кода)...
|
|
#4
|
||||
|
||||
|
Код:
var xx,yy:integer; bool:boolean; ... procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin bool:=true; xx:=x; yy:=y; end; procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if bool then begin form1.left:=form1.left+x-xx; form1.top:=form1.top+y-yy; end; end; procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin bool:=false; end; Теперь на том объекте, с помощью которого ты собираешься перетаскивать окно, в Events сделай так: MouseDown=FormMouseDown MouseMove=FormMouseMove MouseUp=FormMouseUp И всё, теперь запускай прогу и перетаскуй себе на здоровье. Последний раз редактировалось <<D>>, 19.07.2007 в 19:40. |
|
#5
|
|||
|
|||
|
<<D>> я тоже так раньше делал, но лучше вот так
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const SC_DragMove = $F012; { магический номер } begin ReleaseCapture; perform(WM_SysCommand, SC_DragMove, 0); end; |
|
#6
|
||||
|
||||
|
Можно без констант, сразу вот так:
Код:
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
perform(WM_SysCommand, $F012 {тот же магический номер}, 0);
end; |
|
#7
|
||||
|
||||
|
А как насчет этого?
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure HITTEST(var Msg: TMessage); message WM_NCHITTEST;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=WS_POPUP or WS_THICKFRAME;
end;
procedure TForm1.HITTEST(var Msg: TMessage);
begin
Msg.Result:=HTCAPTION;
end;
end. |