Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
6-1130155121
irishka001
2005-10-24 15:58
2006.02.05
Удалить письмо с почты


15-1137182489
LordOfRock
2006-01-13 23:01
2006.02.05
Total Commander Plugin


2-1137831504
Laymer
2006-01-21 11:18
2006.02.05
Дерево


6-1130344439
cerber
2005-10-26 20:33
2006.02.05
Запуск скрипта в HTML документе, загруженном в WebBrowser?


2-1137497664
Virtukon
2006-01-17 14:34
2006.02.05
Сервисы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский