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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2010, 18:36   #1
Gregor
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 208
Вопрос Panel треугольник справа снизу

Добрый вечер! Как сделать треугольник для перетаскивания у Panel(TPanel) как у форм снизу справа? Заранее спасибо!
интенсивно гуглю прежде чем задать вопрос
Gregor вне форума Ответить с цитированием
Старый 17.12.2010, 21:55   #2
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

Думаю тебе поможет стандартный StatusBar с закладки win32


Или взять сторонний компонент (пример: StatusBar из набора RAIZE на него можно и компоненты навесть)

Последний раз редактировалось Noor; 17.12.2010 в 22:18.
Noor вне форума Ответить с цитированием
Старый 18.12.2010, 18:58   #3
Gregor
Форумчанин
 
Регистрация: 24.10.2007
Сообщений: 208
По умолчанию

Твой вариант хорош, но если StatusBar кинуть на панель и попробовать изменить её размер, то изменяется размер формы а не панели.
Разобрался сам. сделал следующее:
Код:
unit Unit1;

interface

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

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

  TSizeGrip = class(TWinControl)
  private
   FMouseDown: boolean;
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure CreateWnd; override;
    procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
    procedure WMNCLButtonDown(var Message: TWMNCLButtonDown); message WM_NCLBUTTONDOWN;
  public
    constructor Create(aOwner: TComponent); override;
    end;

  TGripPanel = class(TPanel)
  private
    procedure CreateParams(var Params: TCreateParams); override;
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}
{ TForm1 }
//------------------------------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
var
  zPanel: TGripPanel;
  zGrip: TSizeGrip;
  zList: TListBox;
begin
  zPanel := TGripPanel.Create(Self);
  zPanel.Parent := Self;
  zPanel.Height := 100;
  zGrip := TSizeGrip.Create(zPanel);
  zGrip.Parent := zPanel;
  zList := TListBox.Create(zPanel);
  zList.Ctl3D := false;
  zList.Parent := zPanel;
  zList.Height := zPanel.Height - 20;
  zList.Align := alTop;
  zList.Anchors := zList.Anchors + [akRight, akBottom];
end;
//-------------------------------------------
//------------------------------------------------------------------------------
{ TForm1}

{ TGripPanel }
//------------------------------------------------------------------------------
procedure TGripPanel.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.Style :=  Params.Style or WS_CLIPSIBLINGS;
end;
//-------------------------------------------
//------------------------------------------------------------------------------
{ TGripPanel }

{ TSizeGrip }
//------------------------------------------------------------------------------
constructor TSizeGrip.Create(aOwner: TComponent);
begin
  inherited;
  FMouseDown := false;
  ControlStyle := [csOpaque, csFixedWidth, csFixedHeight];
  Anchors := [akRight, akBottom];
  Height  := 11;
  Width   := 11;
end;
//-------------------------------------------

procedure TSizeGrip.CreateParams(var Params: TCreateParams);
begin
  inherited;
  CreateSubClass(Params, 'SCROLLBAR');
  Params.Style := Params.Style or WS_CLIPSIBLINGS or SBS_SIZEGRIP;
end;
//-------------------------------------------

procedure TSizeGrip.CreateWnd;
begin
  inherited;
  Left := Parent.ClientWidth - Width - 1;
  Top  := Parent.ClientHeight - Height - 1;
  SendToBack;
end;
//-------------------------------------------

procedure TSizeGrip.WMNCHitTest(var Message: TWMNCHitTest);
const
  sc_DragSize = 61448;
begin
  if FMouseDown then
  begin
    Parent.Perform(wm_SysCommand, sc_DragSize, 0 );
    FMouseDown := false;
  end;
  inherited;
end;
//-------------------------------------------

procedure TSizeGrip.WMNCLButtonDown(var Message: TWMNCLButtonDown);
begin
  FMouseDown := true;
end;
//-------------------------------------------
//------------------------------------------------------------------------------
{TSizeGrip}
end.
интенсивно гуглю прежде чем задать вопрос
Gregor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TEdit курсор справа Yuran Общие вопросы Delphi 5 13.05.2010 13:07
Дорисовать к image 1 пиксель снизу TwiX Общие вопросы Delphi 1 06.10.2009 09:34
Excel снизу или сверху minicoder Microsoft Office Excel 1 09.11.2008 14:10
Сверху\снизу Marsik Помощь студентам 11 03.11.2007 13:33