|
#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. Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |