Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизНе создается динамически компонент в форме Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.045 c