![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
With Tpanel.Create(scroolbox).... [D6, WinXP]
Ragazor © (2005-09-09 11:37:00)Делается следующее, n количетво раз:
With Tpanel.Create(scroolbox) do .....
на созданной панели нужно создать таким же макаром 2 едита
With TEdit.Create(???)
Как это сделать?
Плохиш (2005-09-09 12:38:00) [101]
> Digitman © (09.09.05 12:31) [13]
> а переменные-то тут причем ?!
Человек просто не знает про локальные переменные и ООП для него тёмный лес :-(
Ragazor (2005-09-09 12:37:00) [102]имеются ввиду переменные для Tpanel & Tedit
Digitman (2005-09-09 12:31:00) [103]
> Ragazor (09.09.05 12:29) [11]
а переменные-то тут причем ?!
Ragazor (2005-09-09 12:29:00) [104]для Dilmo
ну твой вариант подразумевает создание всего сразу в цикле столько сколько указать в константах.
а мой вариант пихается в процедуру и по нажатии кнопки вызывается криэйт. Таким образом я могу насоздавать туеву хучу панелек и эдитов, а не фиксированное число
Digitman (2005-09-09 12:29:00) [105]
> Никаких переменных тут быть не может
а Cidx, по-твоему, - это не переменная ?
Dilmo (2005-09-09 12:26:00) [106]Чтото не понял я чем тебя мой вариант не устроил, но в принципе главное чтобы работало ;)
Ragazor (2005-09-09 12:23:00) [107]нашел решение
...
with TPanel.Create(ScrBx) do begin
Parent := ScrBx;
Align := alTop;
Width := 30;
BevelOuter := bvLowered;
BevelInner := bvRaised;
Tag := Aindex; // procedure input param
Pnlhdl := Handle; //var Pnlhdl: HWND
Cidx := ComponentIndex; //var Cidx: integer
end;
CreateEdit(Cidx, 40, ATRGtext);
CreateEdit(Cidx, 260, ADESCRtext);
...
function CreateEdit(ATag, Aleft: integer; Txt: Widestring): boolean;
begin
with TEdit.Create(Components[Atag]) do begin
Parent := FindControl(Pnlhdl);
Left := ALeft;
Top := 5;
Caption := Txt;
end;
end;
Dilmo (2005-09-09 12:14:00) [108]ну блин, не используй константу, подставляй переменное значение в цикл, смысл то не меняется
Digitman (2005-09-09 12:13:00) [109]
> Ragazor (09.09.05 11:57) [3]
> Причем много, N штук
> и без free
ценнейшие комментарии
> Никаких переменных тут быть не может
мыль веревку.
ибо при таких претензиях задача не имеет решения.
Ragazor (2005-09-09 12:11:00) [110]const
maxPanel = n;
maxEdit = m;
не катит.
n - в смыле неизвестное количество, предположим, бесконечно
Плохиш (2005-09-09 12:02:00) [111]
> Ragazor (09.09.05 11:59) [4]
> Мне нужно их создавать динамически по нажатию кнопки. Причем
> много, N штук.
> Никаких переменных тут быть не может.
Понятно. Обсуждение вопросов религии производится в конференции "Потрепаться".
PS. Книжки бы что ли почитал.
Ragazor (2005-09-09 11:59:00) [112]Мне нужно их создавать динамически по нажатию кнопки. Причем много, N штук.
Никаких переменных тут быть не может.
Ragazor (2005-09-09 11:57:00) [113]сказал же n количество раз... и без free!
Dilmo (2005-09-09 11:56:00) [114]const
maxPanel = n;
maxEdit = m;
var
newPanel: TPanel;
newEdit: TEdit;
i, j: integer;
begin
for i:=1 to maxPanel do begin
newPanel := TPanel.Create(MainForm);//MainForm - owner
newPanel.Parent := scroolbox; // если надо чтобы на контрол легла
newPanel.Visible := true; //если надо визибл
newPanel.Alignment := .. //если надо алигн
newPanel.top(Left. Height, Width);//размеры и положение
for j:=1 to maxEdit do begin
newEdit := TEdit.Create(MainForm);
newEdit.Parent := newPanel;//на панель положить
newEdit.Top(Left, Height, Width);//размеры и положение осительно панели
newEdit.Visible := true;//показать
end;
end;
end;
Плохиш (2005-09-09 11:44:00) [115]Что, религиозный запрет на временные переменные?