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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.11.2009, 20:20
Roman2807 Roman2807 вне форума
Прохожий
 
Регистрация: 29.10.2009
Сообщения: 14
Репутация: 10
Восклицание Вопрос!

По делфи. Можно ли сделать кнопку формы maximize невидимой или убрать вообще, не убирая minimize? если можно, то как?
Ответить с цитированием
  #2  
Старый 05.11.2009, 20:49
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

2 способа
1. В Object Inspector твоей формы есть поле BorderIcons...там напротив Maximize ставишь false
2. Или так в коде на нужное событие (Create, Click, Move и т.д.), только убери тот параметр который не нужен...
Код:
  Form_Main.BorderIcons := [biSystemMenu, biMinimize, biMaximize, biHelp];
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #3  
Старый 05.11.2009, 21:32
Roman2807 Roman2807 вне форума
Прохожий
 
Регистрация: 29.10.2009
Сообщения: 14
Репутация: 10
По умолчанию

Это все понятно, но в обоих вариантах кнопка maximize остается, но как не активная, а нужно что бы она вообще с окна исчезла, а minimize осталась.
Ответить с цитированием
  #4  
Старый 05.11.2009, 22:16
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Думаю только убрав все и нарисовав свои...
Код:
Четвёртая кнопка на заголовочной полосе окна 
--------------------------------------------------------------------------------
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, StdCtrls;

const
  wm_BtnClk = wm_User + 111;{Определяем своё сообщение}

type
  TForm1 = class(TForm)
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    R: TRect;{Переменная для обозначения прямоугольной области кнопки}
    Press: Boolean;
    procedure WmNcPaint(var Msg: TWmNcPaint); message wm_NcPaint;
    procedure WMNcActivate(var msg: TwmncActivate); message wm_NcActivate;
    procedure WmNcLButtonDown( var Msg: TWMNCLBUTTONDOWN); message Wm_NCLbuttonDown;
    procedure wmnchittest(var Msg: TWMncHITTEST); message wm_NcHittest;
    procedure wmSize(var Msg: TMessage); message wm_Size;
    procedure wmncLButtonUp(var msg: TWMncLBUTTONUP); message wm_NclButtonUp;
    procedure wmLbuttonUp(var Msg: TMessage); message wm_LbuttonUp;
    procedure wmBtnClk(var msg: TMessage); message wm_BtnClk;
  public
    { Public declarations }
    procedure DrawBtn;
end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.WmNcPaint(var Msg: TWmNcPaint);
begin
  inherited;
  Drawbtn;{При перерисовке окна прорисовываем кнопку}
end;

procedure TForm1.DrawBtn;{Код прорисовки кнопки}
var
  WDc: HDc;
  Cx, Cy: Integer;
  XFrame, Yframe: Integer;
begin
  {Получаем контекст нашего окна, снимаем мерки с оконных размеров, 
  вычисляем положение нашей кнопки и прорисовываем её в зависимости 
  от того нажата ли кнопка мыши над ней}
  WDc := GetWindowDc(Handle);
  Cx := GetSystemMetrics(SM_CXSize);
  Cy := GetSystemMetrics(SM_CYSize);
  xFrame := GetSystemMetrics(SM_CXFrame);
  yFrame := GetSystemMetrics(SM_CYFrame);
  R := Bounds(Width - xFrame - 4*Cx + 2, yFrame + 2, Cx - 2, Cy - 4);
  if Press then
    DrawFrameControl(WDc,R,DFC_BUTTON,DFCS_ButtonPUSH or DFCS_PUSHED)
  else
    DrawFrameControl(WDc,R,DFC_BUTTON,DFCS_ButtonPUSH);
  ReleaseDc(Handle,WDC);
end;

procedure TForm1.WMNcActivate(var msg: TwmncActivate);
begin
  inherited;
  DrawBtn;
end;

procedure TForm1.WmNcLButtonDown(var Msg: TWMNCLBUTTONDOWN);
var
  pt: TPoint;
begin
  inherited;
  drawbtn;
  pt := Point(msg.XCursor - Left,msg.YCursor - top);
  if PtInRect(R,pt) then
  begin
    Press := True;
    drawbtn;
  end;
end;


procedure TForm1.wmnchittest(var Msg: TWMncHITTEST);
var
  pt: tpoint;
begin
  inherited;
  pt :=Point(msg.XPos - Left, msg.YPos - Top);
  if PtinRect(r,pt) then
    msg.Result := htBorder;
end;

procedure TForm1.wmSize(var Msg: TMessage);
begin
  inherited;
  RedrawWindow(Handle, PRect(0), 0, RDW_FRAME or RDW_NOINTERNALPAINT
    or RDW_INVALIDATE);
end;

procedure TForm1.wmncLButtonUp(var msg: TWMncLBUTTONUP);
var
  pt: TPoint;
begin
  inherited;
  pt := Point(msg.XCursor - Left,msg.YCursor - top);
  if PtInRect(R,pt) then
  begin
    Press := False;
    drawbtn;
    PostMessage(Handle,wm_btnClk,0,0);
  end;
end;

procedure TForm1.wmLbuttonUp(var Msg: TMessage);
begin
  inherited;
  if Press then
  begin
    Press := False;
    DrawBtn;
  end;
end;

procedure TForm1.wmBtnClk(var msg: TMessage);
begin
  {Объявили константу своего сообщения, 
  посылаем его своему окну при отпускании кнопки мыши над новой кнопкой, 
  а здесь обрабатываем своё сообщение}
  ShowMessage('О, круто, наша кнопка нажимается! Спасибо проекту Delphi World!');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  RedrawWindow(Handle, PRect(0), 0, RDW_FRAME or RDW_NOINTERNALPAINT
    or RDW_INVALIDATE);
end;

end.

 
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter