VR
Virtual Reality On-line   Без рамки
Новости   |     Журнал    |    Хаkер   |     Магазин   |   Проекты
[   Вход    ]
[Kарта сайтa]
[ Download  ]
[  Конкурс  ]
[  Анекдоты ]
[  Ссылки   ]
[  Реклама  ]
[ Почтальон ]
[ О проекте ]






TopList
Delphi.
TSTATUSBAR, TCHECKBOX, TRADIOBUTTON
и TBUTTON с другим лицом.
:

SICOZ Sicoz@narod.ru

Исследуя хелпы по Delphi и сопутствующую литературу, я нарыл несколько приколов, которые могут приятно разнообразить внешний вид стандартных компонентов.

Многострочный TBUTTON.
Logo
Рис 1.

Т.к. лучший рассказ о программном коде это сам программный код, смотрим нижеследующий фрагмент:

procedure TForm1.FormCreate(Sender: TObject);
begin
 Button1.Caption:='Многострочная'#13'кнопка';
 SetWindowLong(Button1.Handle,GWL_STYLE,
 GetWindowLong(Button1.Handle,GWL_STYLE) or BS_MULTILINE);
end;

Просто и сердито. Строки обязательно, нужно разделять #13(символ возврата каретки, т.е. переход на новую стоку). Ну и само собой разумеется строк может быть много, главное каретку переводить:).

Выравнивание надписей в TBUTTON.
Logo
Рис 2.

Продвигаясь путем предыдущей главы:

procedure TForm1.FormCreate(Sender: TObject);
begin
 SetWindowLong(Button1.Handle,GWL_STYLE,
 GetWindowLong(Button1.Handle,GWL_STYLE) or BS_RIGHT or BS_TOP);
end;

Ну здесь и так все ясно. Единственное, что нужно добавить, так это сообщения, которыми можно равнять надписи.

Выравнивание по горизонтали – BS_RIGHT BS_CENTER BS_LEFT

Выравнивание по вертикали – BS_TOP BS_VCENTER BS_BOTTOM.

Комбинируя через дизъюнкцию, текст можно загнать в какой-нибудь угол(как в примере).

Не TCHECKBOX и TRADIOBUTTON, а кнопочки.
Logo
Рис 3.
Logo
Рис 4.

Во многих апликушках такие кнопочки используются, но в стандартных компонентах такое не предусмотрено:( Зараз мы это исправим.

procedure TForm1.FormCreate(Sender: TObject);
begin
 SetWindowLong(CheckBox1.Handle,GWL_STYLE,
 GetWindowLong(CheckBox1.Handle,GWL_STYLE) or BS_PUSHLIKE);
end;

Теперь у нас есть прикольный Чекбоксик. Работать с ним надо так же, как и с обычным. Вставив в это сообщение хэндлы РадиоБатона вместо Чекбоксовских, получим все тот же РадиоБатон в виде кнопки.

Простейший способ вставить картинки в TSTATUSBAR.
Logo
Рис 5.

1. Кидаем на форму StatusBar и ImageList.

2. В ImageList забивается одна и более картинок.

3. При создании формы посылаем вот такое сообщение:

procedure TForm1.FormCreate(Sender: TObject);
begin
 SendMessage(Statusbar1.Handle,SB_SETICON,0,
   ImageList_GetIcon(ImageList1.Handle,0,0));
end;

4. В раздел uses добавляем модуль CommCtrl. И вообще, если у нашего Бара несколько панелей, то в N-ую панель картинка заливается следующим образом:

SendMessage(Statusbar1.Handle,SB_SETICON,N,ImageList_GetIcon(ImageList1.Handle,M,0));

где N - номер панели в Statusbar;

M - номер картинки в ImageList.

Необходимо отметить то, что нумерация панелей и картинок начинается с нуля. Компилируем и радуемся красивому Бару. Единственно, что нужно добавить, так это то, что при разрушении формы не мешало бы удалить объект следующим образом:

procedure TForm1.FormDestroy(Sender: TObject);
begin
 DeleteObject(SendMessage(StatusBar1.Handle,SB_GETICON,N,0));
end;

где N - номер панели в Statusbar в которой удаляем объект.


Copyright©: Horrific aka Флёнов Михаил
Design by FMk group©