Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизСоздание объектов Найти похожие ветки
← →
Washington (2007-03-10 21:04) [0]Существует компонент Edit1. Пользователь вписывает в него что-либо идолжен в этот момент создаться новый Edit и так далее. Как это сделать?
← →
Leonid Troyanovsky © (2007-03-10 21:09) [1]
> Washington (10.03.07 21:04)
> Существует компонент Edit1. Пользователь вписывает в него
> что-либо идолжен в этот момент создаться новый Edit и так
> далее. Как это сделать?
Использовать TMemo.
--
Regards, LVT.
← →
Washington (2007-03-10 21:19) [2]А если какой-нибудь другой объект - к примеру кнопка?
← →
trubin © (2007-03-10 21:33) [3]
> А если какой-нибудь другой объект - к примеру кнопка?
Создавать нужный объект динамически
← →
Зм1й © (2007-03-10 21:57) [4]with TButton.Create (form1) do
begin
Left := 10;
Top := 10;
Caption := "cap";
Parent := form1;
Visible := True;
@OnClick := @NewBtnProc;
end;
← →
jack128 © (2007-03-10 22:07) [5]Зм1й © (10.03.07 21:57) [4]
@OnClick := @NewBtnProc;
Символ @ - убрать
← →
Юрий Зотов © (2007-03-10 22:17) [6]Visible := True тоже
← →
RASkov (2007-03-11 04:39) [7]> [0] Washington (10.03.07 21:04)
Может это:
Бросить на форму Edit1 и прописать на OnChangeprocedure TForm1.Edit1Change(Sender: TObject);
var e, e1: TEdit;
begin
e:=TEdit(Sender);
if (e.Tag=0) and (e.Text<>"") then begin
e1:=TEdit.Create(Self);
with e1 do begin
Parent:=Self;
Left:=e.Left;
Top:=e.Top+e.Height+5;
Width:=e.Width;
OnChange:=Edit1Change;
e.Tag:=Integer(e1);
end;
end else begin
if (e.Text="") and (e.Tag<>0) then begin
TEdit(e.Tag).Free;
e.Tag:=0;
end;
end;
end;
← →
Washington (2007-03-12 20:07) [8]А при динамическом создании объектов они не сохраняются, так?
← →
Юрий Зотов © (2007-03-12 20:12) [9]> Washington (12.03.07 20:07) [8]
Объекты САМИ вообще никогда не сохраняются. Их должна сохранять та программа, которая их и создала. Либо Delphi, либо наша.
← →
Washington (2007-03-12 20:41) [10]А как их тогда сохранить?
← →
RASkov (2007-03-12 20:43) [11]> [8] Washington (12.03.07 20:07)
На вот продолжение моего изврата.... с сохранением в файл сам подумай:procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then begin
Key:=#0;
SelectNext(Sender as TWinControl, True, True);
end;
end;
procedure TForm1.Edit1Change(Sender: TObject);
var e, e1: TEdit;
begin
e:=TEdit(Sender);
if(e.Tag=0)and(e.Text<>"") then begin
e1:=TEdit.Create(Self);
with e1 do begin
Parent:=Self;
Left:=e.Left;
Top:=e.Top+e.Height+5;
Width:=e.Width;
OnChange:=Edit1Change;
OnKeyPress:=Edit1KeyPress;
e.Tag:=Integer(e1);
end;
end else begin
if(e.Text="")and(e.Tag<>0) then begin
TEdit(e.Tag).Text:="";
TEdit(e.Tag).Free;
e.Tag:=0;
SelectNext(e, False, True);
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var F: TextFile; E: TEdit; S: String;
begin
AssignFile(F, "<Имя файла с текстовыми строками>");
Reset(F);
try
ReadLn(F, S);
Edit1.Text:=S;
E:=TEdit(Edit1.Tag);
while not Eof(F) do begin
ReadLn(F, S);
E.Text:=S;
E:=TEdit(E.Tag);
end;
finally
CloseFile(F);
end;
end;
← →
RASkov (2007-03-12 20:46) [12]> с сохранением в файл сам подумай:
Скажу, что "сохранение" будет аналогично "загрузке"...
← →
Юрий Зотов © (2007-03-13 12:52) [13]ReadComponent, WriteComponent.
← →
Washington (2007-03-13 13:02) [14]Что-то совсем уж "изврат" пошёл! Мне осталось только узнать как вновь созданный объект помещать под предыдущим. А так вот-эти ужосы - зачем?
← →
Сергей М. © (2007-03-13 13:08) [15]
> созданный объект помещать под предыдущим
Что значит "под" ?
Объект он и в Африке объект, для него не существуют понятий "под", "над", "на", "за" ...
> эти ужосы
Какие такие "ужосы" ?!
← →
Elen © (2007-03-13 13:18) [16]
> Washington (10.03.07 21:04)
А что StringGrid не кактит?
← →
Washington (2007-03-13 16:55) [17]Под - это значит ниже.
А stringgrid"ом как пользоваться?
← →
Сергей М. © (2007-03-13 16:59) [18]
> Washington (13.03.07 16:55) [17]
>
> Под - это значит ниже.
Гениально.
И что же при этом значит фраза "объект2 ниже объект1" ?
← →
Washington (2007-03-13 17:03) [19]это значит что
Label1.left=Label2.left
Label2.top=Label1.top+Label1.height+n,
где n-некоторое число.
Да, stringgrid не подходит, мне надо отдельные label"ы
← →
Сергей М. © (2007-03-13 17:07) [20]
> Washington (13.03.07 17:03) [19]
Ах вон оно что !!
ну так и кто кроме тебя задаст значение св-ва Label2.top ?
Оно ж не с луны свалится, оно, как ты сказал, зависит от Label1.top+Label1.height+n
..
← →
Нуб (2007-03-13 17:11) [21]он имел ввиду наверное
Left:=e.Left;
Top:=e.Top+e.Height+5; // вашингтон дубовее меня в 2 раза :)
Width:=e.Width;
← →
Washington (2007-03-13 18:05) [22]with TButton.Create (form1) do
begin
Left := 10;
Top := 10;
Caption := "cap";
Parent := form1;
Visible := True;
@OnClick := @NewBtnProc
Используя это, откуда я возьму это ваше "e"???!!!!!!!!!!!!!
Сами вы дубовые, если не можете понять чо яхочу.
← →
Нуб (2007-03-13 18:09) [23]
> Washington
ты сначала научись выводить на экран сумму двух чисел, которые в Label"ах записаны, а потом уже по-тихоньку увеличивай изогнутость своих извелин в серой жидкости, а не обижаться сразу, обижаться все умеют, а вот творить :)
← →
Нуб (2007-03-13 18:12) [24]
> Washington (13.03.07 18:05) [22]
> with TButton.Create (form1) do
> begin
> Left := 10;
> Top := 10;
> Caption := "cap";
> Parent := form1;
> Visible := True;
> @OnClick := @NewBtnProc
> Используя это, откуда я возьму это ваше "e"???!!!!!!!!!!
> !!!
> Сами вы дубовые, если не можете понять чо яхочу.
RASKov же написал тебе все !!!
RASkov (11.03.07 04:39) [7]
> [0] Washington (10.03.07 21:04)
Может это:
Бросить на форму Edit1 и прописать на OnChange
procedure TForm1.Edit1Change(Sender: TObject);
var e, e1: TEdit;
begin
e:=TEdit(Sender);
if (e.Tag=0) and (e.Text<>"") then begin
e1:=TEdit.Create(Self);
with e1 do begin
Parent:=Self;
Left:=e.Left;
Top:=e.Top+e.Height+5;
Width:=e.Width;
OnChange:=Edit1Change;
e.Tag:=Integer(e1);
end;
end else begin
if (e.Text="") and (e.Tag<>0) then begin
TEdit(e.Tag).Free;
e.Tag:=0;
end;
end;
end;
комбинацией клавиш ctrl + c и ctrl + v вставляешь все это добро , "это" смотри ниже в новую application бросаешь на нее один компонент класса TEdit и у тебя все заработает
"это" =
procedure TForm1.Edit1Change(Sender: TObject);
var e, e1: TEdit;
begin
e:=TEdit(Sender);
if (e.Tag=0) and (e.Text<>"") then begin
e1:=TEdit.Create(Self);
with e1 do begin
Parent:=Self;
Left:=e.Left;
Top:=e.Top+e.Height+5;
Width:=e.Width;
OnChange:=Edit1Change;
e.Tag:=Integer(e1);
end;
end else begin
if (e.Text="") and (e.Tag<>0) then begin
TEdit(e.Tag).Free;
e.Tag:=0;
end;
end;
end;
удачи тебе или Вам , но я сомневаюсь насчет Вам :), дерзай ...
← →
MsGuns © (2007-03-13 21:46) [25]Засстрелиться..
Прям как в том анекдоте, где новый русский решил приобрести новый мерс только потому, что у купленного накануне пепельница переполнилась.
← →
RASkov (2007-03-13 23:03) [26]> [19] Washington (13.03.07 17:03)
....
> Да, stringgrid не подходит, мне надо отдельные label"ы
Ну ты определись в конец, что тебе надо... в вопросе(на который я тебе вполне ответил в [11]) - тебе надо было с Едитом...
StringGrid тебе не подходит...
В Лэйблы вводить что-то с клавиатуры(из вопроса [0]) просто так не получится.
> Сами вы дубовые, если не можете понять чо яхочу.
Что ты хочешь-то? :)))) Если толпой не могут понять одного, то - кто дубовый? :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.056 c