Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать сплиттер с линией в 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/


Наверх

Титульная страница Поиск, карта сайта Написать письмо