Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.10.2011, 13:58   #11
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

все это конец исходник торри глючит.
все удаляю.
Lesha вне форума Ответить с цитированием
Старый 01.10.2011, 14:12   #12
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

торри в топку! пересобранный модуль теней

модуль теней для TLabel

Модуль позволяет устанавливать неограниченное количество теней для Надписей.
Также есть возможность выделить весь текст рамкой.

подключив модуль теней после модуля StdCtrls , класс TLabel изменит свои свойтва, и можно управлять его тенью, и рамкой вокруг текста. Все тени сохраняются в внутри компонента в внутри TList. Поэтому при запуске дексруктора все подчищается.

текст модуля

Код:
unit LabelShadowUnit;

interface
uses
   SysUtils, Classes, Controls, StdCtrls;
type
  TLabel2 = class(TLabel);
  TLabel = class(TLabel2)
    constructor Create(own : TComponent); override;
    destructor Destroy; override; //запуск деструктора
    procedure AddShadow(x: integer = 3; y: integer = 1; colorr : integer = 0);
    procedure AddShadowText(widthh : byte = 1; colorr : integer = 0);
    procedure ClearShadow;
    private
      shad: TList;
  end;

implementation

{ TLabel }

procedure TLabel.AddShadow(x: integer = 3; y: integer = 1; colorr : integer = 0);
var sh: TLabel;
begin
  sh:=TLabel.Create(self.Owner);
  with sh do begin
    parent:=TWinControl(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;
  shad.Add(sh);
end;

procedure TLabel.AddShadowText(widthh: byte; colorr: integer);
begin
  // прямоугольник
  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;
var i:integer;
begin
  for i := 0 to shad.Count - 1 do
    TLabel(shad[i]).Destroy;
  shad.Clear;
end;

constructor TLabel.Create(own: TComponent);
begin
  inherited Create(own);
  shad:=TList.Create;
end;

destructor TLabel.Destroy;
var i:integer;
begin
  for i := 0 to shad.Count - 1 do
    TLabel(shad[i]).Destroy;
  shad.Destroy;
  inherited Destroy;
end;

end.


http://jqbook.narod.ru/works/DelphiLabelShadow.zip - программа-пример

Последний раз редактировалось Lesha; 01.10.2011 в 22:50. Причина: поддержка панелей
Lesha вне форума Ответить с цитированием
Старый 01.10.2011, 18:37   #13
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Lesha Посмотреть сообщение
то есть то что Label создается внутри другого это нормально?

А где он рисуется? на форме или в компоненте?

PS сам то пробовал?
1) То, что компонент принадлежит другому компоненту - нормально, и то, что компонент-владелец (свойство Owner) уничтожает все ему принадлежащие - нормально.

2) Где он рисуется определяет свойство Parent

3) Пользуюсь регулярно - например уничтожаю форму, а она сама уничтожает все свои компоненты

Последний раз редактировалось Silver_S; 01.10.2011 в 20:04.
Silver_S вне форума Ответить с цитированием
Старый 01.10.2011, 19:52   #14
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

Цитата:
Где он рисуется определяет свойство Parent
ыы прикольно
Lesha вне форума Ответить с цитированием
Старый 01.10.2011, 20:14   #15
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Цитата:
Сообщение от Lesha Посмотреть сообщение
ыы прикольно
Подредактировал свой предыдущий коммент, а то каламбур какой-то получился с "родительский компонент" и Parent

Последний раз редактировалось Silver_S; 01.10.2011 в 20:42.
Silver_S вне форума Ответить с цитированием
Старый 01.10.2011, 22:18   #16
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Lesha, подскажите пожалуйста:

Если я помещаю Label на Panel, то они перестают работать, в чём может быть проблема или как правильно сделать?
werrey вне форума Ответить с цитированием
Старый 01.10.2011, 22:46   #17
Lesha
Форумчанин
 
Аватар для Lesha
 
Регистрация: 30.01.2009
Сообщений: 418
По умолчанию

следуя рекомендациям Silver_S

переделанный модуль, теперь работает и на панелях.

скачиваем заново

http://jqbook.narod.ru/works/DelphiLabelShadow.zip

скриншот


Последний раз редактировалось Lesha; 01.10.2011 в 22:51.
Lesha вне форума Ответить с цитированием
Старый 14.12.2011, 18:42   #18
werrey
Форумчанин
 
Регистрация: 01.02.2011
Сообщений: 105
По умолчанию

Уважаемый Lesha или другие программисты, которые смотрели этот пример, или могут посмотреть:

Подправьте пожалуйста модуль, чтобы свойства Label - Alignment и WordWrap работали корректно, а то почему-то обводка смещается неправильно, при установки этих свойств!
Например если установить св-во Alignment - taCenter, то обводка остаётся слева, если WordWrap, то тоже не переносится как надо.

Заранее благодарю.

Последний раз редактировалось werrey; 14.12.2011 в 18:49.
werrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рассчитать контур заземления HellMercenariess Компьютерное железо 10 22.05.2013 11:25
автоматическое изменение размер текста в label bbk_serg Компоненты Delphi 15 04.02.2011 00:46
Вывод текста в компонент Label aleksandr278 Помощь студентам 10 20.12.2010 11:50
Проблема с правильным выводом текста в label Bigtyoma Помощь студентам 2 09.11.2010 00:01
замкнутый произвольный контур Лубышев Общие вопросы Delphi 6 14.01.2010 18:51