Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Направление ввода в TEdit


rotor ©   (2006-07-22 20:09:00) 

Возможно ли без API-изгибов осуществить ввод ч.-л. в TEdit или TCustomEdit справа (как в калькуляторе)?


GrayFace   (2006-07-24 01:12:00) [1]

А зачем TEdit = class(TRightEdit), а не TEdit = TRightEdit?


Джо   (2006-07-23 22:02:00) [2]

> [14] default ©   (23.07.06 12:31)

А, понятно, спасибо. Однако, опасно, ИМХО. Хоть и удобно иногда.


default   (2006-07-23 17:46:00) [3]

после TClass2 = class(TClass1) верно TClass2=TClass1
но если надо вернуть прежний смысл имени класса?
можно использовать промежуточную "переменную"
TBuffClass = class(TClass2);
TClass2 = class(TClass1);
TClass2 = class(TBuffClass) - всё вернулось на прежние позиции
забавно, но запутать код этим можно дай боже!

 TMemo = class(TEdit);

 TTest = class
   FObj: TMemo;
   constructor Create;
 end;

var
 Form1: TForm1;
 O: TTest;

implementation

{$R *.dfm}

constructor TTest.Create;
begin
 FObj := TMemo.Create(Form1);
 FObj.Left := 50;
 FObj.Top := 50;
 FObj.Parent := Form1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 O := TTest.Create  // вылезит TEdit:)
end;

жалко, что работает только в пределах модуля:(
то есть если я поменяю какой-нибудь TCustomForm на TEdit
а этот CustomForm использует компонент из другого модуля, но будет юзаться всё-таки TCustomForm...


Anatoly Podgoretsky   (2006-07-23 13:23:00) [4]

В ТНТ таких мест много, сначала сбивает с толку.


Fay   (2006-07-23 12:58:00) [5]

TRightEdit = class(TEdit)
...
TEdit = class(TRightEdit);

Проверил.
Никогда не думал, что такой финт прокатит. 8)


default   (2006-07-23 12:31:00) [6]

Джо ©   (23.07.06 06:44) [9]
TEdit = class(TRightEdit);
означает в принципе тоже что и написано -
TEdit отныне и навсегда есть потомок TRightEdit
эта запись эквивалента записи
TEdit = class(TRightEdit)
end;

если потом создавать экземпляры TEdit они будут фактически экземплярами TRightEdit
то есть если была бы у нас написана куча кода с TEdit и потребовалось изменить функциональность TEdit, нам не пришлось бы везде TEdit править на TRightEdit


Zeqfreed   (2006-07-23 12:31:00) [7]

> [12] Fay ©   (23.07.06 12:25)

Ну если кинуть на форму несколько эдитов и вписать код из [1] над объявлением формы, то все эдиты станут с правым выравниванием.


Fay   (2006-07-23 12:25:00) [8]

2 Zeqfreed ©   (23.07.06 11:29) [11]
> А TEdit = class(TRightEdit) это чтобы не создавать новый
> компонент, а изменять стандартные, объявленые ниже.
Не понял


Zeqfreed   (2006-07-23 11:29:00) [9]

> [9] Джо ©   (23.07.06 06:44)

В паблик это я на «автомате», виноват. А TEdit = class(TRightEdit) это чтобы не создавать новый компонент, а изменять стандартные, объявленые ниже.


Fay   (2006-07-23 08:08:00) [10]

2 Джо ©   (23.07.06 6:44) [9]
Точно, прикольно! 8)


Джо   (2006-07-23 06:44:00) [11]

Ребят, специально для люмпенов вроде меня: зачем его тащить в паблик и зачем
TEdit = class(TRightEdit);
?


Palladin   (2006-07-22 23:36:00) [12]


>  определен виртуально

еклмн... определен виртуальным, конечно... :)


Palladin   (2006-07-22 23:35:00) [13]


> palva ©   (22.07.06 20:58) [2]

Хм. Ну о наследовании в документации очень даже говорится. А метод TWinControl.CreateParams определен виртуально отнюдь не двусмысленно.


rotor   (2006-07-22 23:20:00) [14]

Zeqfreed_   (22.07.06 20:25) [1]
Слов нет - круто.
Данке!


Ketmar   (2006-07-22 22:18:00) [15]

говорится.


Мефисто   (2006-07-22 21:42:00) [16]


> palva ©   (22.07.06 20:58) [2]


В исходниках VCL сплошь и рядом, где необходимо изменить стили окон/контролов :)


Zeqfreed   (2006-07-22 21:23:00) [17]

> [2] palva ©   (22.07.06 20:58)

Не буду лукавить, способ я подсмотрел у Игоря Шевченко. Надо у него спросить :)


palva   (2006-07-22 20:58:00) [18]

Zeqfreed_   (22.07.06 20:25) [1]
Блеск!
А интересно, где-то в документации говорится о таком способе наследования?


Zeqfreed_   (2006-07-22 20:25:00) [19]

type
 TRightEdit = class(TEdit)
 public
  procedure CreateParams(var Params : TCreateParams); override;
 end;

 TEdit = class(TRightEdit);

. . .

implementation

{$R *.dfm}

{ TRightEdit }

procedure TRightEdit.CreateParams(var Params: TCreateParams);
begin
 inherited;
 Params.ExStyle := Params.ExStyle or WS_EX_RIGHT;
end;


Не такой уж и «изгиб».


Наверх

Титульная страница Поиск, карта сайта Написать письмо