Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.07.2007, 15:42
zNk zNk вне форума
Прохожий
 
Регистрация: 16.01.2007
Сообщения: 39
Репутация: 10
Восклицание Плавающее окошко

Всем привет =) Короче, вот я решил сделать прогу, и срочно надо сделать плавающее окошко, так как программа без него уже не программа. Долго думал как реализовать это окошко, на так и недоходит. Подскажите как его можно реализовать =)
Если кто непонял, то я говорю о плавающем окошке, подобно как в программах qip, ICQ, Download Master и .т.д.

Заранее спасиб =)
Ответить с цитированием
  #2  
Старый 19.07.2007, 16:52
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Сделай форму с BorderStyle = bsNone
Ответить с цитированием
  #3  
Старый 19.07.2007, 17:04
zNk zNk вне форума
Прохожий
 
Регистрация: 16.01.2007
Сообщения: 39
Репутация: 10
По умолчанию

Неочень получится, я видел компоненты, при помощи которых организовываются плавоющие окошки, но эти компоненты планые и без инходников =( Подскажите, как можно создать окно программно (при помощи кода)...
Ответить с цитированием
  #4  
Старый 19.07.2007, 19:33
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

Код:

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  
Старый 05.10.2007, 12:52
Spider13 Spider13 вне форума
Прохожий
 
Регистрация: 03.10.2007
Сообщения: 20
Репутация: 10
По умолчанию

<<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  
Старый 05.10.2007, 13:48
Аватар для Winny
Winny Winny вне форума
Продвинутый
 
Регистрация: 26.05.2007
Адрес: Планета земля, Россия, Москва
Сообщения: 620
Репутация: 30
По умолчанию

Можно без констант, сразу вот так:
Код:
procedure TForm1.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
perform(WM_SysCommand, $F012 {тот же магический номер}, 0);
end;
Хотя разницы никакой )))
__________________

Ответить с цитированием
  #7  
Старый 24.10.2007, 16:44
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

А как насчет этого?
Код:
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. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:16.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter