Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2010, 11:17   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию Плаваящая панель(форма) не зависимая от главной формы

привет всем!

Есть программа с 1 формой(TForm) и 1 панелью(Tpanel)
панель удалось сделать что-бы плавала по экрану..

Но когда сворачиваешь программу в панель задач(или в трей) сворачивается и панель..

как свернутьь программу не свернув панель?
Человек_Борща вне форума Ответить с цитированием
Старый 12.08.2010, 11:37   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

а каким кодом делается панель плавающей в данном случае?
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 12.08.2010, 11:40   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

точнее 2 формы , на одной из них панель.. при этом коде:
Код:
procedure TStayForm.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
const
  sc_dragmove = $f012;
begin
  ReleaseCapture;
  StayForm.perform(wm_syscommand, sc_dragmove, 0);
end;

procedure TStayForm.StayTopWindGrMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
  sc_dragmove = $f012;
begin
  ReleaseCapture;
  StayForm.perform(wm_syscommand, sc_dragmove, 0);
end;

procedure TStayForm.TheCurrTimeMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
  sc_dragmove = $f012;
begin
  ReleaseCapture;
  StayForm.perform(wm_syscommand, sc_dragmove, 0);
end;
остаётся только сама панель(Tpanel), форма изначально невидима.
Человек_Борща вне форума Ответить с цитированием
Старый 12.08.2010, 11:58   #4
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Может имеет смысл не извращаться, а использовать только главную форму. На нее панель и свойства: DockSite = true; DragKind = dkDock; DragMde = dmAutomatic ??
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 12.08.2010, 12:08   #5
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Посмотри такой вариант, две формы сворачиваются независимо:
http://programmersforum.ru/showthread.php?t=5872

код от Квэнди:
Код:
type
TForm = class(TForm)
{...}
protected
procedure CreateParams(var Params: TCreateParams); override;
end;

implementation

{...}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := GetDesktopWindow;
end;
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 12.08.2010, 12:19   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

DIgorevich:
Попробовал и это.
Вариант не подошёл, так как:
1. сворачивается вместе с программой
2. Имеет рамку с крестиком и заголовком

ArtInt:
Ваш вариант подошёл=) а как теперь убрать кнопку с панели задач?
Человек_Борща вне форума Ответить с цитированием
Старый 12.08.2010, 12:49   #7
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Может так заменить?
//Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.ExStyle := Params.ExStyle or WS_EX_TOOLWINDOW;

Вот еще интересная статья по данной теме, там обсуждаются также проблемы по данной теме:
http://www.rsdn.ru/forum/delphi/1560585.all.aspx
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 12.08.2010, 12:58   #8
Ins
Форумчанин
 
Регистрация: 29.12.2007
Сообщений: 137
По умолчанию

Цитата:
Имеет рамку с крестиком и заголовком
BorderStyle = bsNone. Отвечая на следующий вопрос (а как ее теперь перетаскивать), такой код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
    procedure WMNCHitTest(var Message: TWMNCHitTest);message WM_NCHITTEST;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
  Message.Result := HTCAPTION;
end;
Ins вне форума Ответить с цитированием
Старый 12.08.2010, 13:02   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Ins спасибо за вариант=)

ArtInt спасибо, это помогло!

Вопрос можно закрывать..
Человек_Борща вне форума Ответить с цитированием
Старый 12.08.2010, 14:44   #10
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Можно было главную форму сделать невидимой
igh0st вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Неглавная форма всегда над главной. Как исправить? TwiX Общие вопросы Delphi 19 03.11.2012 17:17
Заголовок Child формы имеет цвет неактивной формы, хотя форма активна? PrimaryPro Общие вопросы Delphi 0 12.03.2010 11:12
Как программно закрыть все открытые модальные формы перед сворачиванием главной формы в трей? SkAndrew Общие вопросы Delphi 8 27.01.2010 22:44
Форма с авторизацией пользователя после появления главной формы r00xus Общие вопросы Delphi 7 14.01.2010 06:21
Обращение из формы в dll к элементу главной формы (delphi) a_n_n_a Помощь студентам 3 10.05.2009 04:00