Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.11.2012, 06:31
Rabid Coyote Rabid Coyote вне форума
Прохожий
 
Регистрация: 08.06.2012
Сообщения: 32
Версия Delphi: 10 Lite, 2007
Репутация: 10
По умолчанию Объединение EditLetNum и AlignEdit

Здравствуйте, уважаемые! Нужна ваша помощь в таком деле: есть два компонента на основе TEdit - первый EditLetNum дает возможность вводить в поле только цифры либо только буквы. Второй выравнивает текст по центру, либо по краям. Нужно объединить два этих компонента в один, который бы обладал всеми заданными свойствами.

EditLetNum:

Код:
unit EditLetNum;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
TEditLetNum = Class(TEdit)
private
{private declarations}
FClear:TNotifyEvent;{Поля события OnClear}
FEnableNum:boolean;
FenableLet:boolean;
FModified:boolean;
protected
{protected declarations}
procedure SetEnableNum(Value:boolean);{Процедура записи}
procedure SetEnableLet(Value:boolean);{Процедура записи}
procedure KeyPress(var Key:Char);override;
public
{public declarations}
property Modified:boolean read FModified default true;
constructor create(AOwner:TComponent);override;{Конструктор}
procedure Clear;override;
published
{published declarations}
property OnClear:TNotifyEvent read FClear write FClear;{событие}
property EnableNum:boolean read FEnableNum write SetEnableNum default true;
property EnableLet:boolean read FEnableLet write SetEnableLet default true;
end;

procedure Register;
implementation

procedure TEditLetNum.SetEnableNum(Value:boolean);
begin
FEnableNum:=Value; {Присвоение значения полю FEnableNum}
{Если значения FEnableNum и FEnableLet =false, то полю FenableLet присваевается true}
if (not Value)
then if (not FEnableLet) then FEnableLet:=true;
end;

procedure TEditLetNum.SetEnableLet(Value:boolean);
begin
FEnableLet :=Value;{присвоение значения полю FEnableLet}
{Если значения FEnableNum и FEnableLet=false, то полю FEnableNum присваевается true}
if (not Value)
then if (not FEnableNum) then FEnableNum:=true;
end;

procedure Register;
begin
RegisterComponents('MyComponents',[TEditLetNum]);
end;

constructor TEditLetNum.create(AOwner:TComponent);
begin
inherited create(AOwner);{Вызов конструктора класса родителя}
FEnableNum:=True;
FenableLet:=True;
FModified:=False;
end;

procedure TEditLetNum.KeyPress(var Key:Char);
begin
if (not FEnableNum) and (Key in ['0'..'9'])
then Key:=#0;
if (not FenableLet) and not (Key in ['0'..'9'])
then Key:=#0;
if (Key<>#0) then FModified:=true;
inherited KeyPress(Key);
end;

procedure TEditLetNum.Clear;
begin
{Вызов обработчика пользователя}
if assigned(FClear) then OnClear(Self);
{Вызов родительского метода}
inherited Clear;
FModified:=false;
end;
end.


AlignEdit
Код:
unit AlignEdit;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   StdCtrls;

 type

   TAlign = (eaLeft, eaCenter, eaRight);

   TAlignEdit = class(TEdit)
   private
     { Private-Deklarationen }
     FAlign: TAlign;
     procedure SetAlign(const Value: TAlign);
   protected
     { Protected-Deklarationen }
     procedure CreateParams(var Params: TCreateParams); override;
   public
     { Public-Deklarationen }
     constructor Create(AOwner: TComponent); override;
   published
     { Published-Deklarationen }
     property Alignment: TAlign read FAlign write SetAlign default eaLeft;
   end;

 procedure Register;

 implementation

 constructor TAlignEdit.Create(Aowner: TComponent);
 begin
   inherited Create(AOwner);
   FAlign := eaLeft;
 end;

 procedure TAlignEdit.SetAlign(const Value: TAlign);
 begin
   if FAlign <> Value then
   begin
     FAlign := Value;
     RecreateWnd;
   end;
 end;

 procedure TAlignEdit.CreateParams(var Params: TCreateParams);
 begin
   inherited;
   case FAlign of
     eaLeft: Params.Style   := Params.Style or ES_LEFT;
     eaCenter: Params.Style := Params.Style or ES_CENTER;
     eaRight: Params.Style  := Params.Style or ES_RIGHT;
   end;
 end;

 procedure Register;
 begin
   RegisterComponents('MyComponents', [TAlignEdit]);
 end;

 end.


буду благодарен за любую помощь.

Последний раз редактировалось lmikle, 24.11.2012 в 08:57.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025