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

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

Не создается динамически компонент в форме [D7, WinXP]


Страницы:   1 2

tf_kiev ©   (2004-11-27 19:57:00) 

В ходе программы должен динамически создаваться компонент в форме, а именно поле редактирования

procedure TForm1.FormCreate(Sender: TObject);
begin
myEdit := TNkEdit.Create(self);
myEdit.Parent := self;
myEdit.Left := 8;
myEdit.Top := 64;
end;


KSergey   (2004-11-28 14:01:00) [1]

> OneFragLeft ©   (28.11.04 13:49) [28]
> Показали ему FAQ :D

Но что именно?Я никак не могу увидеть проблем в приведенном коде...

> ssk ©   (27.11.04 19:59) [1]
> myEdit := TNkEdit.Create(Form1);
> myEdit.Parent := Form1;

А чем self не прикольно? Вроде тут равнофиолетово должно получаться...


OneFragLeft   (2004-11-28 13:49:00) [2]

>begin...end ©   (28.11.04 13:47) [27]

Показали ему FAQ :D


begin...end   (2004-11-28 13:47:00) [3]

А где, собственно, автор вопроса?

> [25] ssk ©   (27.11.04 21:36)

Что Вы ему там такое отправили, что его до сих пор нет?


KSergey   (2004-11-28 13:43:00) [4]

> OneFragLeft ©   (27.11.04 21:29) [24]
> А вы случаем не запускаете  код из учебника?
> Это же компонент, его устанавливать надо.
> Естественно он работать нге будет.

Если создаем в run-time, а не "кидаем" на форму - нифига регистрировать не надо.

> Anatoly Podgoretsky ©   (27.11.04 21:09) [13]
> Наряду с выше сказаным я также сомневаюсь, что это правомочно
> делать в конструкторе Create формы, она еще не до конца
> сконструирована.

Это что еще за новости???!! ;)

Автору.
Чей-то утаиваете. Судя по коду все должно работать.


ssk   (2004-11-27 21:36:00) [5]

>tf_kiev

смотри почту


OneFragLeft   (2004-11-27 21:29:00) [6]

А вы случаем не запускаете  код из учебника?
Это же компонент, его устанавливать надо.
Естественно он работать нге будет.


begin...end   (2004-11-27 21:26:00) [7]


> [22] tf_kiev ©   (27.11.04 21:24)

Вот я и спрашиваю: у Вас получается динамически создать обычный экземпляр TEdit на форме?


tf_kiev   (2004-11-27 21:24:00) [8]

динамически создать компонент на форме...


begin...end   (2004-11-27 21:23:00) [9]


> [20] tf_kiev ©   (27.11.04 21:22)

Так а обычный TEdit у Вас получается создать?


tf_kiev   (2004-11-27 21:22:00) [10]

Да, это из учебника, просто интересует именно такой принцип работы программы, а у меня почему то не выходит...


ssk   (2004-11-27 21:18:00) [11]

тоже на первый


begin...end   (2004-11-27 21:17:00) [12]


> То ли он пытался динамически создать компонент на форме,
> то ли вообще создать компонент на основе TEdit.

Ставлю на первый вариант.


OneFragLeft   (2004-11-27 21:15:00) [13]

Я так и не понял, что хотел сделать автор вопроса.
То ли он пытался динамически создать компонент на форме, то ли вообще создать компонент на основе TEdit.


ssk   (2004-11-27 21:14:00) [14]

>OneFragLeft
>А вы куда-то выходили?

да. в чат. ;-)


OneFragLeft   (2004-11-27 21:13:00) [15]

Ну да...


begin...end   (2004-11-27 21:10:00) [16]


> [12] OneFragLeft ©   (27.11.04 21:09)

Нет, не то же самое, в [3] без uses. Ожидать можно чего угодно.


Anatoly Podgoretsky   (2004-11-27 21:09:00) [17]

Наряду с выше сказаным я также сомневаюсь, что это правомочно делать в конструкторе Create формы, она еще не до конца сконструирована.


OneFragLeft   (2004-11-27 21:09:00) [18]

ssk ©   (27.11.04 21:06) [11]
А вы куда-то выходили?
То же самое: [3];
Только не NkEdit, а Edit


ssk   (2004-11-27 21:06:00) [19]

>tf_kiev

uses NkEdit;

procedure TForm1.FormCreate(Sender: TObject);
var
 myEdit: TNkEdit;
begin
 myEdit := TNkEdit.Create(self);
 myEdit.Parent := self;
 myEdit.Left := 8;
 myEdit.Top := 64;
end;


OneFragLeft   (2004-11-27 21:04:00) [20]

tf_kiev ©   (27.11.04 20:44) [6]

Не, ну сразу надо было сказать, что компонент создаёте.

А я смотрю-код знакомый:)

unit NkEdit;

interface

uses

Windows, Messages, SysUtils,

Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls;

type

TNkEdit = class(TEdit)

private

FNumb: single; // число, находящееся в поле редактирования

// Это описание функции доступа

// и процедуры установки поля FNumb

function GetNumb: single;

procedure SetNumb(value:single);

protected

procedure KeyPress(var Key: Char);

override;

public

published

constructor Create(AOwner:TComponent);

override; property Numb : single

// свойство компонента

read GetNumb write SetNumb;

end;

procedure Register;

implementation

// процедура регистрации компонента

procedure Register;

begin

RegisterComponents('Samples',[TNkEdit]);

end;

// конструктор компонента

constructor TNkEdit.Create(AOwner:TComponent);

begin

// don't forget to call the ancestors' constructor

inherited Create(AOwner);

end;

// функция доступа к полю FNumb

function TNkEdit.GetNumb:single;

begin

try // поле Text может быть пустым Result:=StrToFloat(text); except

on EConvertError do begin

Result:=0; text: =' ' ;

end;

end;

end;

// процедура записи в поле FNumb

procedure TNkEdit.SetNumb(Value:single);

begin

FNumb:=Value;

Text:=FloatToStr(value);

end;

// процедура обработки события KeyPress

procedure TNkEdit.KeyPress(var key:char) ;

begin

case key of

'0'.. '9', #8, #13: ;

'-': if Length(text)<>0 then key:=#0;

else

if not ((key = DecimalSeparator) and

(Pos(DecimalSeparator,text)=0))

then key:= #0;

end;

inherited KeyPress(key);

// вызов процедуры обработки события

// OnKeyPress родительского класса

end;

end.



Это же из учебника по Дельфи.


Страницы:   1 2

Наверх

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