|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите исправить модуль обводки текста (Label)
Здравствуйте уважаемые программисты.
Спасибо за ваш форум, очень толковый, и хорошо объясняют! Вот решил обратиться к вам, так как автор модуля помочь не может. Есть модуль LabelShadowUnit, который делает обводку(контур) текста Label. Но если поставить св-ва у Label: Alignment - taCenter, то обводка остаётся слева, если WordWrap, то тоже не переносится как надо. Как унаследовать эти св-ва(Alignment и WordWrap), посмотрите пожалуйста, выкладываю код модуля и проект: Код:
unit LabelShadowUnit; interface uses SysUtils, Classes, Controls, StdCtrls; type TLabel2 = class(TLabel); TLabel = class(TLabel2) procedure AddShadow(x: integer = 3; y: integer = 1; colorr : integer = 0); procedure AddShadowText(widthh : byte = 1; colorr : integer = 0); procedure ClearShadow; end; implementation { TLabel } procedure TLabel.AddShadow(x: integer = 3; y: integer = 1; colorr : integer = 0); begin with TLabel.Create(self) do begin parent:=self.Parent; font:=self.Font; Top:=self.Top+y; Left:=self.Left+x; Font.Color:=colorr; caption:=self.Caption; transparent:=true; end; self.Transparent:=true; self.BringToFront; end; procedure TLabel.AddShadowText(widthh: byte; colorr: integer); begin ClearShadow; // прямоугольник self.AddShadow(widthh,0, colorr); self.AddShadow(-1*widthh,0, colorr); self.AddShadow(0,widthh, colorr); self.AddShadow(0,-1*widthh, colorr); // по бокам self.AddShadow(widthh,widthh, colorr); self.AddShadow(-1*widthh,-1*widthh, colorr); self.AddShadow(-1*widthh,widthh, colorr); self.AddShadow(widthh,-1*widthh, colorr); end; procedure TLabel.ClearShadow; begin self.DestroyComponents; end; end. Если свойство Alignment у Label1 поставить taLeftJustify(слева), то всё работает. Последний раз редактировалось Ankor, 24.12.2011 в 01:57. |