Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 6
Всего онлайн: 6
Зарегистрировано юзеров: 7648
Комментариев на сайте: 674
Новый юзер: rewefa3598@mailmyrss



Последние комментарии
c
Eugeneidory прокомментировал "Урок 2 - Переменные и их типы":
http://fedorovkarb.ru - В слуховом аппарате Cyber Sonic используется инновационная запатентованная технология. Она сочетает в себе преимущества двух методов усиления нелинейного и линейного, что позволяет сохранить тонкие детали, делая звуки слышимыми, комфортными и ясными. В сочетании с цифровой обработкой звука в мощном современном процессоре, установленном в Cyber Sonic, технология BrainHearing обеспечивает лучшую разборчивость звуков с минимальными усилиями при прослушивании. Звуки получаются объемными и четкими, что позволяет лучше ориентироваться в пространстве с учетом расположения источников звука. - http://fedorovkarb.ru
rashpell прокомментировал "Урок 69 - Реестр Windows, (часть 2/2)":
Заказать seo поисковую оптимизацию сайта, Заказать услуги по продвижению сайта По всем возникшим вопросам Вы можете обратиться в скайп логин [b]pokras7777[/b]Раскрутка сайта под ключ .Так же собираем базы

Как нарисовать рамку фокуса

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

Как нарисовать рамку фокуса вокруг активного компонента Для начала нужно создать объект TShape в событии OnCreate формы и придать ему свойства:

uses
    { ... }, ExtCtrls;
	
var
  Form1: TForm1;
  focusRect: TShape;

{ ... }

procedure TForm1.FormCreate(Sender: TObject);
begin
  focusRect := TShape.Create(self) ;
  focusRect.Shape := stRectangle;
  focusRect.Visible := false;
  focusRect.Brush.Style := bsClear;
  focusRect.Pen.Style := psDot;
  focusRect.Pen.Color := clRed;
  focusRect.Pen.Width := 1;

  Screen.OnActiveControlChange:= ActiveControlChange;
end;
Примечание: переменная focusRect типа TShape объявляется в объявлении переменной формы. Теперь, когда фокус переходит от одного управления к другому, мы также передвигаем рамку фокуса.

Мы будем использовать процедуру ActiveControlChange, обрабатывая событие OnActiveControlChange глобального объекта Screen.
  private
    { Private declarations }
    procedure ActiveControlChange(Sender: TObject);
	
{ ... }

procedure TForm1.ActiveControlChange(Sender: TObject);
begin
with focusRect do
 begin
    Parent := Screen.ActiveControl.Parent;

    Top := Screen.ActiveControl.Top - 2;
    Height := Screen.ActiveControl.Height + 4;
    Left := Screen.ActiveControl.Left - 2;
    Width := Screen.ActiveControl.Width + 4;

    Visible := true;
   end;
end;
Размеры объекта focusRect подстраиваются под размеры активного управления, как мы и написали выше в коде.

Ну и наконец, нужно освободить память при закрытии приложения. Никогда не забывайте делать это!
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Screen.OnActiveControlChange:= nil;
  focusRect.Free;
end;

Вот и всё, Удачи!

Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 23 Июня 2014
Просмотров:


Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): Sancho [Новичок] Дата: 2014-06-29
Источник: www.thedelphi.ru Автор: Савельев Александр Опубликовано: 22 Июля 2014-------------------->ИЮЛЬ ЕЩЕ НЕ НАСТАЛ!!!!!!-----------))))))))))))) Просмотров: 7966




аватар Добавил: Admin [Сэнсэй] vk.com/savelev_a_y Дата: 2014-07-06
Sancho, спасибо, исправил ошибку