![]()  | 
	
 
  | 
| 
		 
			 
			#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. |