Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Вопрос о Skin'e


Автор: Deiv 28.8.2007, 16:11
Программа Registry Mechanic   http://www.pctools.com/registry-mechanic/ 
Это имеет График или Skin в его Бруске Заглавия?  
Мне обратилось внимание, что на лебои части Бруска Заглавия это тянется по направлению к ниже графика, и когда окно Максимизировано покаэивается мундир без того, что изменили другие кнопки включенные в "Брусок Заглавия."  
Если это Skin, С какой Программой был это сделано?: VCLSkin, BussinessSkinForm, DynamicSkinForm, SuiSkin, SkinCrafter, другой?

Asks on Skin  
The program Registry Mechanic http://www.pctools.com/registry-mechanic/ 
Does it have a Graph or a Skin in its Bar of Title?  
What gets me the attention is in the left part of the Bar of Title it is drawn toward below the graph, and when the window is maximized it makes it uniform without altering the other buttons included in the "Bar of Title."  
If it is a Skin, With which it Programs was it made?: VCLSkin, BussinessSkinForm, DynamicSkinForm, SuiSkin, SkinCrafter, another?

Автор: Snowy 28.8.2007, 16:26
ИМХО, никакого скина там нет.
Просто сами сделали форму-прототип с таким заголовком и от неё пронаследовали все остальные.

Автор: pseud 28.8.2007, 16:36
может и скины, а может и не скины
1. убираем стандартный заголовок и бордюры
2. в заголовок = Рисунок1(с логотипом) + Рисунок2(однородный/растягиваемый) + Рисунок 3(с загагулиной и местом под кнопки)
3. наследуем все формы от базовой

Автор: Snowy 28.8.2007, 18:04
Цитата(pseud @  28.8.2007,  16:36 Найти цитируемый пост)
в заголовок = Рисунок1(с логотипом) + Рисунок2(однородный/растягиваемый) + Рисунок 3(с загагулиной и местом под кнопки)
Ну там сделано не так.
В скиновых движках обычно делается что-то вроде этого:
Код
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    bmp: TBitMap;
    procedure WMNCPaint(var Msg: TWMNCPaint); message WM_NCPAINT;
  end;

var Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  bmp := TBitmap.Create;
  bmp.LoadFromFile('C:\1.bmp');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  bmp.Free;
end;

procedure TForm1.WMNCPaint(var Msg: TWMNCPaint);
var
  h: HDC;
begin
  //inherited;
  h := GetWindowDC(Handle);
  Rectangle(h, 0, 0, Width, Height);
  StretchBlt(h, 0, 0, Width, GetSystemMetrics(SM_CYCAPTION)+ GetSystemMetrics(SM_CXBORDER),
  bmp.Canvas.Handle, 0, 0, bmp.Width, bmp.Height, SRCCOPY);
  ReleaseDC(Handle, h);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Invalidate;
end;

end.
Естественно это ещё нужно дорабатывать напильником.
Но основной принцип это демонстрирует.

Автор: Deiv 29.8.2007, 16:13
Cпасибо,
Цитата(Snowy)
Просто сами сделали форму-прототип с таким заголовком

Такого форма-прототип, тогда можно сказать, что то График (TIMage) включен в TPanel?
Если это так, включенный TPanel во внутри ВО ВСЕЙ Формы? Или TPanel только включен в превосходящей части Формы?
Как вообразить? Какоe правильно?

Is such a Form-prototype then a Graph (TIMage) included in a TPanel?, truth?
If it is this way, and the TPanel is included inside the WHOLE Form? or is it only included in the superior part of the Form?
Which it is correct?

Автор: Snowy 29.8.2007, 16:38
Можно отключить рамку формы - BorderStyle = bsNone
Но тогда нужно класть панель, рисовать заголовок и рамочки, а также управлять изменением позиции и размерами формы.
Оба пути непростые. Но второй проще для реализации, если у вас нет глубоких познаний.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)