Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Направление ввода в TEdit   Найти похожие ветки 

 
rotor   (2006-07-22 20:09) [0]

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


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

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;


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


 
palva ©   (2006-07-22 20:58) [2]

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


 
Zeqfreed ©   (2006-07-22 21:23) [3]

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

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


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


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


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


 
Ketmar ©   (2006-07-22 22:18) [5]

говорится.


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

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


 
Palladin ©   (2006-07-22 23:35) [7]


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

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


 
Palladin ©   (2006-07-22 23:36) [8]


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

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


 
Джо ©   (2006-07-23 06:44) [9]

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


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

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


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

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

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


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

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


 
Zeqfreed ©   (2006-07-23 12:31) [13]

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

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


 
default ©   (2006-07-23 12:31) [14]

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

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


 
Fay ©   (2006-07-23 12:58) [15]

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

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


 
Anatoly Podgoretsky ©   (2006-07-23 13:23) [16]

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


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

после 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...


 
Джо ©   (2006-07-23 22:02) [18]

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

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


 
GrayFace ©   (2006-07-24 01:12) [19]

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



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.044 c
3-1149236558
elena_pp
2006-06-02 12:22
2006.08.13
Помогите правльно организовать таблицы


3-1148636331
Fer
2006-05-26 13:38
2006.08.13
Не могу расставить кавычки в delete


15-1151906106
Кручен-Верчен
2006-07-03 09:55
2006.08.13
Появилась куча свободного времени.


3-1149675776
RDA
2006-06-07 14:22
2006.08.13
Помогите составить запрос


15-1153191625
tButton
2006-07-18 07:00
2006.08.13
support