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

Вниз

Не создается динамически компонент в форме   Найти похожие ветки 

 
tf_kiev ©   (2004-11-27 19:57) [0]

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

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


 
ssk ©   (2004-11-27 19:59) [1]

myEdit := TNkEdit.Create(Form1);
myEdit.Parent := Form1;


 
OneFragLeft ©   (2004-11-27 20:00) [2]

А есть такая строчка:
myEdit:TNkEdit;?


 
OneFragLeft ©   (2004-11-27 20:01) [3]

var myEdit:TEdit;
begin
myEdit := TEdit.Create(self);
myEdit.Parent := self;
myEdit.Left := 8;
myEdit.Top := 64;
end;
Так работает.


 
Anatoly Podgoretsky ©   (2004-11-27 20:34) [4]

А значение Height и width чему равны?


 
begin...end ©   (2004-11-27 20:36) [5]


> [4] Anatoly Podgoretsky ©   (27.11.04 20:34)

Тогда уж можно спросить, чему равно значение Visible :-)


 
tf_kiev ©   (2004-11-27 20:44) [6]

unit NkEdit1;

interface

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

type
 TNkEdit = class(TEdit)
 private
   FNumb: single;
   function GetNumb: single;
   procedure SetNumb(value: single);
 protected
   procedure KeyPress(var Key: Char);
   override;
 public
   { Public declarations }
 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
   inherited Create(AOwner);
 end;

function TNkEdit.GetNumb: single;
 begin
   try
     Result:=StrToFloat(text); except
       on EConvertError do begin
     Result:=0; text:=" ";
   end;
 end;
end;

procedure TNkEdit.SetNumb(Value: single);
 begin
   FNumb:=Value;
   Text:=FloatToStr(value);
 end;

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);
end;

end.


 
Anatoly Podgoretsky ©   (2004-11-27 20:47) [7]

Это выкинуть constructor TNkEdit.Create(AOwner: TComponent);, ничего не делает.
Ушел от ответа на вопрос про Height, Width, Visible


 
tf_kiev ©   (2004-11-27 20:55) [8]

Height, Width, Visible указаны, но не помагает


 
Anatoly Podgoretsky ©   (2004-11-27 21:04) [9]

В коде это не наблюдается и значения не известны.


 
OneFragLeft ©   (2004-11-27 21:04) [10]

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.



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


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

>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:09) [12]

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


 
Anatoly Podgoretsky ©   (2004-11-27 21:09) [13]

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


 
begin...end ©   (2004-11-27 21:10) [14]


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

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


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

Ну да...


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

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

да. в чат. ;-)


 
OneFragLeft ©   (2004-11-27 21:15) [17]

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


 
begin...end ©   (2004-11-27 21:17) [18]


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

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


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

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


 
tf_kiev ©   (2004-11-27 21:22) [20]

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


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


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

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


 
tf_kiev ©   (2004-11-27 21:24) [22]

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


 
begin...end ©   (2004-11-27 21:26) [23]


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

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


 
OneFragLeft ©   (2004-11-27 21:29) [24]

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


 
ssk ©   (2004-11-27 21:36) [25]

>tf_kiev

смотри почту


 
KSergey ©   (2004-11-28 13:43) [26]

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

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

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

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

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


 
begin...end ©   (2004-11-28 13:47) [27]

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

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

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


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

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

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


 
KSergey ©   (2004-11-28 14:01) [29]

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

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

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

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



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

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

Наверх




Память: 0.54 MB
Время: 0.025 c
4-1098954487
Colonel
2004-10-28 13:08
2004.12.12
Обработчик клавиатуры/мыши


6-1096735381
Хтз
2004-10-02 20:43
2004.12.12
Как включить или выключить сетвевой интерфейс???


14-1100832492
Думкин
2004-11-19 05:48
2004.12.12
С днем рождения! 19 ноября


1-1101352153
Fktrc
2004-11-25 06:09
2004.12.12
Потокобезопасный класс


14-1099344694
Erazser
2004-11-02 00:31
2004.12.12
VoIP и всё что с этим связано