![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание объектов
Washington © (2007-03-10 21:04:00)Существует компонент Edit1. Пользователь вписывает в него что-либо идолжен в этот момент создаться новый Edit и так далее. Как это сделать?
RASkov (2007-03-13 23:03:00) [1]> [19] Washington (13.03.07 17:03)
....
> Да, stringgrid не подходит, мне надо отдельные label'ы
Ну ты определись в конец, что тебе надо... в вопросе(на который я тебе вполне ответил в [11]) - тебе надо было с Едитом...
StringGrid тебе не подходит...
В Лэйблы вводить что-то с клавиатуры(из вопроса [0]) просто так не получится.
> Сами вы дубовые, если не можете понять чо яхочу.
Что ты хочешь-то? :)))) Если толпой не могут понять одного, то - кто дубовый? :)
MsGuns (2007-03-13 21:46:00) [2]Засстрелиться..
Прям как в том анекдоте, где новый русский решил приобрести новый мерс только потому, что у купленного накануне пепельница переполнилась.
Нуб (2007-03-13 18:12:00) [3]
> 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;
удачи тебе или Вам , но я сомневаюсь насчет Вам :), дерзай ...
Нуб (2007-03-13 18:09:00) [4]
> Washington
ты сначала научись выводить на экран сумму двух чисел, которые в Label'ах записаны, а потом уже по-тихоньку увеличивай изогнутость своих извелин в серой жидкости, а не обижаться сразу, обижаться все умеют, а вот творить :)
Washington (2007-03-13 18:05:00) [5]with TButton.Create (form1) do
begin
Left := 10;
Top := 10;
Caption := 'cap';
Parent := form1;
Visible := True;
@OnClick := @NewBtnProc
Используя это, откуда я возьму это ваше "e"???!!!!!!!!!!!!!
Сами вы дубовые, если не можете понять чо яхочу.
Нуб (2007-03-13 17:11:00) [6]он имел ввиду наверное
Left:=e.Left;
Top:=e.Top+e.Height+5; // вашингтон дубовее меня в 2 раза :)
Width:=e.Width;
Сергей М. (2007-03-13 17:07:00) [7]
> Washington (13.03.07 17:03) [19]
Ах вон оно что !!
ну так и кто кроме тебя задаст значение св-ва Label2.top ?
Оно ж не с луны свалится, оно, как ты сказал, зависит от Label1.top+Label1.height+n
..
Washington (2007-03-13 17:03:00) [8]это значит что
Label1.left=Label2.left
Label2.top=Label1.top+Label1.height+n,
где n-некоторое число.
Да, stringgrid не подходит, мне надо отдельные label'ы
Сергей М. (2007-03-13 16:59:00) [9]
> Washington (13.03.07 16:55) [17]
>
> Под - это значит ниже.
Гениально.
И что же при этом значит фраза "объект2 нижеобъект1" ?
Washington (2007-03-13 16:55:00) [10]Под - это значит ниже.
А stringgrid'ом как пользоваться?
Elen (2007-03-13 13:18:00) [11]
> Washington (10.03.07 21:04)
А что StringGrid не кактит?
Сергей М. (2007-03-13 13:08:00) [12]
> созданный объект помещать под предыдущим
Что значит "под" ?
Объект он и в Африке объект, для него не существуют понятий "под", "над", "на", "за" ...
> эти ужосы
Какие такие "уж осы" ?!
Washington (2007-03-13 13:02:00) [13]Что-то совсем уж "изврат" пошёл! Мне осталось только узнать как вновь созданный объект помещать под предыдущим. А так вот-эти ужосы - зачем?
Юрий Зотов (2007-03-13 12:52:00) [14]ReadComponent, WriteComponent.
RASkov (2007-03-12 20:46:00) [15]> с сохранением в файл сам подумай:
Скажу, что "сохранение" будет аналогично "загрузке"...
RASkov (2007-03-12 20:43:00) [16]> [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;
Washington (2007-03-12 20:41:00) [17]А как их тогда сохранить?
Юрий Зотов (2007-03-12 20:12:00) [18]> Washington (12.03.07 20:07) [8]
Объекты САМИ вообще никогда не сохраняются. Их должна сохранять та программа, которая их и создала. Либо Delphi, либо наша.
Washington (2007-03-12 20:07:00) [19]А при динамическом создании объектов они не сохраняются, так?
RASkov (2007-03-11 04:39:00) [20]> [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;