![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать сплиттер с линией в 1пикс.?
Kolan © (2008-01-09 09:00:00)Здравствуйте,
в гайдлайнах висты сказано, что сплиттер(видимая часть) должен быть толшиной в пиксель. Как такое сделать? Стандартный крутил, вертел неполучаецца
{RASkov} (2008-01-09 17:44:00) [1]....Да, и все остальные свойства сплитера по умолчанию, т.е. (Beaveled = False)
{RASkov} (2008-01-09 17:41:00) [2]> [6] Kolan © (09.01.08 17:27)
> Надо попробовать…
В качестве "рисования линии" можно попробывать DrawEdge
Я вот так на скорую руку набросал, вроде бы ничего:
procedure TForm1.Splitter1Paint(Sender: TObject);
var R: Trect;
begin
with Splitter1, Splitter1.Canvas do begin
{ MoveTo(Width div 2, 0);
LineTo(Width div 2, Height);}
R:=ClipRect; Dec(R.Right, (Width-2) div 2);
Inc(R.Top, 10); Dec(R.Bottom, 10);
DrawEdge(Handle, R, EDGE_ETCHED, BF_RIGHT);
end;
end;
При вертикальном расположении сплитера и его высоте более 30 и ширине 5
Понятно, что предоставленный код "идиотский", но я только чтоб посмотреть как это будет выглядеть :)
Все эти константы "методом тыка"....)
Kolan (2008-01-09 17:27:00) [3]> Так не прокатит?
Надо попробовать
{RASkov} (2008-01-09 17:21:00) [4]> [3] Kolan © (09.01.08 15:40)
procedure TForm1.Splitter1Paint(Sender: TObject);
begin
with Splitter1.Canvas do begin
MoveTo(Splitter1.Width div 2, 0);
LineTo(Splitter1.Width div 2, Splitter1.Height);
end;
end;
Так не прокатит?
Kolan (2008-01-09 15:50:00) [5]Вот сам гайдлайн:
http://msdn2.microsoft.com/en-us/library/aa511281.aspx
ЗЫ
насилу нашел где он
Kolan (2008-01-09 15:40:00) [6]> И при выполнении программы, сплитер именно 1 пикс
Нет толшина самого контрола норамально, я хочу сделать его 5 пикс толшиной, но пользователю показывать линию в 1 пикс. Что-то типа свойства сплиттера Beaveled но только такое, чтобы рисовало просмто линию 1 пикс
{RASkov} (2008-01-09 15:28:00) [7]> [1] Kolan © (09.01.08 13:30)
> Чет вы меня игнорируете :(
Это тебе так кажется)
> должен быть толшиной в пиксель. Как такое сделать? Стандартный
> крутил, вертел — неполучаецца…
Просто "смутно все это" (
В D7 нормально все.... фик знает.... Вот:
object Form1: TForm1
Left = 192
Top = 114
Width = 870
Height = 640
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Splitter1: TSplitter
Left = 185
Top = 0
Width = 1
Height = 606
end
object Panel1: TPanel
Left = 0
Top = 0
Width = 185
Height = 606
Align = alLeft
Caption = 'Panel1'
TabOrder = 0
end
object Panel2: TPanel
Left = 186
Top = 0
Width = 676
Height = 606
Align = alClient
Caption = 'Panel2'
TabOrder = 1
end
end
И при выполнении программы, сплитер именно 1 пикс...
Kolan (2008-01-09 13:30:00) [8]Чет вы меня игнорируете :(
Например тут такой сепаратор:
http://www.rsdn.ru/