Вниз
Скачать: CL | DM;

Форма без заголовка   Найти похожие ветки 

← →
Евгений Р.   (2007-11-06 20:12) [0]

Хочу создать форму без заголовка в нужном месте экрана.
Если указывается    result.BorderStyle:=bsNone, то форма открывается в левом верхнем углу. Если строка закомментирована, то открывается как положено.

  result:=TfWorkChees_Plan_Hint.Create(application);
  result.BorderStyle:=bsNone;
  rect:=etc.rect;
(etc.chPlanPanel).owner).ClientToScreen(rect.TopLeft);
  rect.TopLeft:=tPanel(etc.chPlanPanel).ClientToScreen(rect.TopLeft);
(etc.chPlanPanel).owner).ClientToScreen(rect.BottomRight);
  rect.BottomRight:=tPanel(etc.chPlanPanel).ClientToScreen(rect.BottomRight);
  result.Left:=rect.Left;
  result.Top:=rect.Bottom;


← →
Dib@zol ©   (2007-11-06 20:36) [1]

Данный выдранный фрагмент не даёт полного представления о том, что ты хочешь сделать. Конкретизируй.
А пока что ограничусь общим советом: юзай MoveWindow.


← →
Евгений Р.   (2007-11-06 20:59) [2]

строка frm.left=100 - перемещает форму в точку с координатой 100.

Если ей предшествует строка
frm.BorderStyle:=bsNone,
то перемещение не работает.
Почему?


← →
Dib@zol ©   (2007-11-06 21:23) [3]

У меня всё работает (в FormCreate). Ты где это обрабатываешь? Если можешь, приведи простенький пример, где етот окоянный еррор появляется. По тому коду, что ты выкладываешь, понять этого нельзя.


← →
Евгений Р.   (2007-11-06 22:39) [4]

О каком ерроре идет речь? Я говорю, что форма не перемещается по экрану при изменении Top и Left!


← →
{RASkov}   (2007-11-07 01:33) [5]

> [4] Евгений Р.   (06.11.07 22:39)
> Я говорю, что форма не перемещается по экрану при изменении Top и Left!

Наверное только у тебя этот "косяк".)
Вот так вот перемещается:
procedure SF;
begin
 with TForm.Create(Application) do begin
  Show;
  BorderStyle:=bsNone;
  Left:=(Screen.Width-Width) div 2;
  ShowMessage("До перемещения");
  Left:=Left-100;
  ShowMessage("После перемещения");
  Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SF;
end;

..да и в чем сомнения могут быть?
В прочем что у тебя тут....

>  rect:=etc.rect;
> (etc.chPlanPanel).owner).ClientToScreen(rect.TopLeft);
>  rect.TopLeft:=tPanel(etc.chPlanPanel).ClientToScreen(rect.TopLeft);
> (etc.chPlanPanel).owner).ClientToScreen(rect.BottomRight);
>  rect.BottomRight:=tPanel(etc.chPlanPanel).ClientToScreen(rect.BottomRight);
>  result.Left:=rect.Left;
>  result.Top:=rect.Bottom;

...происходит, я не вникал.)


← →
Евгений Р.   (2007-11-07 12:21) [6]

Спасибо, RASkov!

Свел проблему в пробный проект.

Форму создаю динамически.
Под Д5 работает и button1 и button2.
Под Д2005 правильно работает только button2, т.е. при удалении заголовка на изменение положения реагирует только после показа формы.
В принципе не существенно, но дойти нужно было.

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button2Click(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 private
   frm:tForm;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  frm:=tFOrm.Create(application);
  frm.Left:=100;
  frm.top:=100;
  frm.BorderStyle:=bsNone;

  frm.show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  frm:=tFOrm.Create(application);
  frm.BorderStyle:=bsNone;
  frm.show;
  frm.Left:=100;
  frm.top:=100;
end;

end.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
1-1194445289
Ирина
2007-11-07 17:21
2008.02.17
Работа с Excel через делфи


4-1183499419
AllDontFire
2007-07-04 01:50
2008.02.17
Как прочитать CD-Text компакт-диска?


2-1201007194
Riply
2008-01-22 16:06
2008.02.17
Работа с битовыми масками.


15-1200319830
vajo
2008-01-14 17:10
2008.02.17
Проблема работы принера HP 1018 на WinVista Busines.


2-1201472469
Саня Голиков
2008-01-28 01:21
2008.02.17
Что происходит с выделнной памятью New(NewRec)




   Наверх