Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

borderstyle ->bsnone (нельзя изменить размеры формы)   Найти похожие ветки 

 
Змей ©   (2006-01-19 16:04) [0]

Здравствуйте Мастера!
имеется форма. в инспекторе объектов в borderstyle выбираю значение bsnone все прекрасно, исчезает полоска с крестиком, но нельзя изменить размеры формы, ну мышкой растягивать и назад!
как это исправить?
СПАСИБО!


 
EvS   (2006-01-19 20:54) [1]

Если тебе нужно убрать крестик то в BorderIcons установи biSystemMenu=false.


 
Змей ©   (2006-01-20 00:23) [2]

в том то и дело что я хочу свою полоску разместить сбоку! и за нее передвигать форму. и на ней там свои кнопочки закрытия сворачивания.


 
Юрий Зотов ©   (2006-01-20 00:41) [3]

Все очень просто - надо обрабатывать сообщение WM_NCHITTEST.


 
Змей ©   (2006-01-20 01:08) [4]

а не подскажете плз? у меня просто с этими делами туговато все эти АПИ
стыдно аж както:)


 
Yegorchic ©   (2006-01-20 02:32) [5]

unit DragMain;

interface

uses
 SysUtils, WinTypes, WinProcs,  Messages,
 Classes, Graphics, Controls, Forms, Dialogs, StdCrtls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure ButtonClick(Sender: TObject);
 private    
   procedure WMNCHitTest(var M: TWMNCHitTest);
                message wm_NCCHitTest;
 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1. WMNCHitTest(var M: TWMNCHitTest);  

begin
 inherited;
 if M.Result = htClient then
   M.Result := htCaption;
end;

procedure TForm1.Button1Click(Sender: TObject);

begin
 Close;
end;

end.


Delphi Russian Knowledge Base


 
Юрий Зотов ©   (2006-01-20 02:51) [6]


unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject); //OnCreate
   procedure FormPaint(Sender: TObject);  //OnPaint
   procedure FormResize(Sender: TObject); //OnResize
 private
   procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
   procedure PaintLeftCaption(CaptionColor: TColor);
 end;

var
 Form1: TForm1;

implementation

uses Types;

{$R *.dfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject); //OnCreate
begin
 BorderStyle := bsNone
end;

procedure TForm1.FormPaint(Sender: TObject); //OnPaint
begin
 PaintLeftCaption(clRed)
end;

procedure TForm1.FormResize(Sender: TObject); //OnResize
begin
 PaintLeftCaption(Color);
 PaintLeftCaption(clRed)
end;

procedure TForm1.PaintLeftCaption(CaptionColor: TColor);
var
 F, C: integer;
begin
 F := GetSystemMetrics(SM_CXSIZEFRAME);
 C := GetSystemMetrics(SM_CYCAPTION);
 Canvas.Brush.Color := CaptionColor;
 if CaptionColor <> Color then
 begin
   Canvas.FillRect(Rect(F, F, F + C, Height - F))
 end
 else
   Canvas.FillRect(Rect(0, 0, F + C, Height))
end;

procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
var
 F, C: integer;
 P: TPoint;
begin
 F := GetSystemMetrics(SM_CXSIZEFRAME);
 C := GetSystemMetrics(SM_CYCAPTION);
 P := ScreenToClient(SmallPointToPoint(Message.Pos));
 if PtInRect(Rect(0, 0, F, F), P) then
   Message.Result := HTTOPLEFT
 else
   if PtInRect(Rect(F, 0, Width - F, F), P) then
     Message.Result := HTTOP
   else
     if PtInRect(Rect(Width - F, 0, Width, F), P) then
       Message.Result := HTTOPRIGHT
     else
       if PtInRect(Rect(Width - F, F, Width, Height - F), P) then
         Message.Result := HTRIGHT
       else
         if PtInRect(Rect(Width - F, Height - F, Width, Height), P) then
           Message.Result := HTBOTTOMRIGHT
         else
           if PtInRect(Rect(F, Height - F, Width - F, Height), P) then
             Message.Result := HTBOTTOM
           else
             if PtInRect(Rect(0, Height - F, F, Height), P) then
               Message.Result := HTBOTTOMLEFT
             else
               if PtInRect(Rect(0, F, F, Height - F), P) then
                 Message.Result := HTLEFT
               else
                 if PtInRect(Rect(F, F, F + C, Height - F), P) then
                   Message.Result := HTCAPTION
                 else
                   inherited
end;

end.


Это форма без бордюра, которая нормально ресайзится и у которой зона заголовка расположена вертикально вдоль левой границы.

Но когда Вы намучаетесь с прорисовкой иконки, вертикального текста, системных кнопок и тем XP, то, думаю, поймете, что не стоит желать странного.


 
Змей ©   (2006-01-20 04:01) [7]

ой пасиба:)


 
Змей ©   (2006-01-20 04:35) [8]

да работает но когда panel1 растянуто на всю область panel.align:=alclient
не работает:(


 
Юрий Зотов ©   (2006-01-20 05:43) [9]

> Змей ©   (20.01.06 04:35) [8]

И не должно работать - панель закрывает закрашенную область.



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

Текущий архив: 2006.02.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.028 c
15-1137262974
LordOfRock
2006-01-14 21:22
2006.02.05
Проблема :( (Windows XP Sp2)


15-1137079767
Piter
2006-01-12 18:29
2006.02.05
На радость автомобилистам, на горе пешеходам :)


2-1137586905
Dead.MorozZ
2006-01-18 15:21
2006.02.05
mp3 Player


1-1135777318
Shuric
2005-12-28 16:41
2006.02.05
Ни как не соображу, как получить изображение под формой.


2-1137691600
mozgan
2006-01-19 20:26
2006.02.05
Как можно просмотреть весь список функций и процедур