Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
ВнизWith Tpanel.Create(scroolbox).... Найти похожие ветки
← →
Ragazor (2005-09-09 11:37) [0]Делается следующее, n количетво раз:
With Tpanel.Create(scroolbox) do .....
на созданной панели нужно создать таким же макаром 2 едита
With TEdit.Create(???)
Как это сделать?
← →
Плохиш © (2005-09-09 11:44) [1]Что, религиозный запрет на временные переменные?
← →
Dilmo (2005-09-09 11:56) [2]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;
← →
Ragazor (2005-09-09 11:57) [3]сказал же n количество раз... и без free!
← →
Ragazor (2005-09-09 11:59) [4]Мне нужно их создавать динамически по нажатию кнопки. Причем много, N штук.
Никаких переменных тут быть не может.
← →
Плохиш © (2005-09-09 12:02) [5]
> Ragazor (09.09.05 11:59) [4]
> Мне нужно их создавать динамически по нажатию кнопки. Причем
> много, N штук.
> Никаких переменных тут быть не может.
Понятно. Обсуждение вопросов религии производится в конференции "Потрепаться".
PS. Книжки бы что ли почитал.
← →
Ragazor (2005-09-09 12:11) [6]const
maxPanel = n;
maxEdit = m;
не катит.
n - в смыле неизвестное количество, предположим, бесконечно
← →
Digitman © (2005-09-09 12:13) [7]
> Ragazor (09.09.05 11:57) [3]
> Причем много, N штук
> и без free
ценнейшие комментарии
> Никаких переменных тут быть не может
мыль веревку.
ибо при таких претензиях задача не имеет решения.
← →
Dilmo (2005-09-09 12:14) [8]ну блин, не используй константу, подставляй переменное значение в цикл, смысл то не меняется
← →
Ragazor (2005-09-09 12:23) [9]нашел решение
...
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:26) [10]Чтото не понял я чем тебя мой вариант не устроил, но в принципе главное чтобы работало ;)
← →
Ragazor (2005-09-09 12:29) [11]для Dilmo
ну твой вариант подразумевает создание всего сразу в цикле столько сколько указать в константах.
а мой вариант пихается в процедуру и по нажатии кнопки вызывается криэйт. Таким образом я могу насоздавать туеву хучу панелек и эдитов, а не фиксированное число
← →
Digitman © (2005-09-09 12:29) [12]
> Никаких переменных тут быть не может
а Cidx, по-твоему, - это не переменная ?
← →
Digitman © (2005-09-09 12:31) [13]
> Ragazor (09.09.05 12:29) [11]
а переменные-то тут причем ?!
← →
Ragazor (2005-09-09 12:37) [14]имеются ввиду переменные для Tpanel & Tedit
← →
Плохиш © (2005-09-09 12:38) [15]
> Digitman © (09.09.05 12:31) [13]
> а переменные-то тут причем ?!
Человек просто не знает про локальные переменные и ООП для него тёмный лес :-(
← →
Digitman © (2005-09-09 12:42) [16]
> Ragazor (09.09.05 12:37) [14]
> имеются ввиду переменные для Tpanel & Tedit
и что ?
ЧТО мешает создать переменную типа TComponent ?
← →
Ragazor (2005-09-09 13:01) [17]Ничто не мешает, просто это делать не нужно по требованию.
Вот ещё лучший вариант:(Никаких переменных панел и эдит)
procedure CreatePnlEdt(APanel: Tpanel; ATTxt, ADtxt: Widestring);
begin
with TTntEdit.Create(APanel) do begin
Parent := APanel;
Left := 40;
Top := 5;
Text := ATTxt;
end;
//тут можно насоздавать всего что хочешь, и все будет на панели.
end;
function CreatePanel: TPanel;
begin
Result := TPanel.Create(ScrBx);
with Result do begin
Parent := ScrBx;
Align := alTop;
Width := 30;
BevelOuter := bvLowered;
BevelInner := bvRaised;
end;
end;
И теперь, скажем, в Button1Click пишем
CreatePnlEdt(CreatePanel,"some text", "sometext");
и кликаем наздоровье (а не const
maxPanel = n;
maxEdit = m;) ...
← →
Ragazor (2005-09-09 13:03) [18]А Digitman и кто там ещё, со своими переменными попробуйте реализуйте красиво на переменных. Интересно сколько строк кода добавится в программу...
← →
Digitman © (2005-09-09 13:05) [19]
> это делать не нужно по требованию
по какому такому "требованию" ?
кто и на каком основании мог потребовать от тебя не использовать переменные ?!
← →
Alexander Panov © (2005-09-09 13:05) [20]Ragazor (09.09.05 13:03) [18]
Интересно сколько строк кода добавится в программу...
Ни одной. Только уменьшится.
← →
Плохиш © (2005-09-09 13:08) [21]1. Ты просил 2 едита.
2. Result - это переменная.
3. Гланды можно вырезать по-разному.
← →
Digitman © (2005-09-09 13:12) [22]
> Ragazor (09.09.05 13:03) [18]
var Comp: TComponent;
..
Comp := Tpanel.Create(..);
with Tpanel(Comp) do
begin
..
end;
..
for .. to .. do
with TEdit.Create(Comp) do
begin
..
end;
← →
Dilmo (2005-09-09 13:13) [23]не уверен что TEdit.Create(Comp) это как раз то, что нужно
потому как таким макаром Owner выставляется, а ему нужен парент
owner"ом в полне может быть форма на которую все ложится.. и этого будет достаточно
← →
Игорь Шевченко © (2005-09-09 13:16) [24]
> А Digitman и кто там ещё, со своими переменными попробуйте
> реализуйте красиво на переменных
Красота вообще убийственная сила.
Мой совет по теме красоты - почитай исходники VCL, там достаточно красиво и без извратов.
← →
Digitman © (2005-09-09 13:17) [25]
> Dilmo (09.09.05 13:13) [23]
да по колено, нужно или не нужно !)
суть не в этом ..
суть - в использовании переменной
← →
Ragazor (2005-09-09 13:20) [26]для Digitman ©
>>по какому такому "требованию" ?
>>кто и на каком основании мог потребовать от тебя не >>использовать переменные ?!
Такому, есть требования "красивости", неписаные. Я ж не шутки
пишу, для моей конкретной цели нужно только так и никак более и точка. Что за вопрос вообще. Нужно мне и все, зачем тебе знать знать кто от меня и что требует?. Можешь помочь помоги, не можешь не трепи нервы.
При твоих раскладах код будет множится как тараканы.
А то что ты написал попробуй запусти в делфи прежде чем сюда парить.
← →
Digitman © (2005-09-09 13:24) [27]
> Ragazor (09.09.05 13:20) [26]
> есть требования "красивости", неписаные
какие такие требования ?!
просвети уж меня, тундру ..
← →
Ragazor (2005-09-09 13:26) [28]для Digitman ©
я так понял, что ты не понял что мне нужно, а я соответственно не пойму что ты мне доказываешь...
← →
Alexander Panov © (2005-09-09 13:28) [29]Ragazor (09.09.05 13:20) [26]
Твоя задачка для всех здесь может представлять только теоретический интерес, да и он будет весьма сомнительным.
С практической точки зрения твои условия абсолютно не имеют смысла.
Лучше бы сказал, чего добиться хочешь от такой "оптимизации".
← →
Игорь Шевченко © (2005-09-09 13:29) [30]
> Такому, есть требования "красивости", неписаные.
Есть только два требования - программа должна работать и быть удобочитаемой. Все остальные "требования" - ламерство.
← →
Ragazor (2005-09-09 13:29) [31]Закинь вот тот код, что я написал последним, в делфи и посмотри что он делает. Если то, что ты писал делает тоже самое и меньше писанины, тебе + мне -, а нет, тогда тебе - мне + :)
← →
Tonich © (2005-09-09 13:30) [32]ндааа сам задал вопрос, сам ответили сам же себя и похвалил за такое обалденный код который написал))
← →
Alexander Panov © (2005-09-09 13:31) [33]Ragazor (09.09.05 13:29) [31]
Закинь вот тот код, что я написал последним, в делфи и посмотри что он делает. Если то, что ты писал делает тоже самое и меньше писанины, тебе + мне -, а нет, тогда тебе - мне + :)
Тебе дана рабочая, опробованная не одну тысячу раз схема.
← →
Ragazor (2005-09-09 13:32) [34]для Игорь Шевченко ©
... удобна для пользователей, и обеспечивать тот уровень возможностей который они требуют ( для того чтобы её покупали, а не конкурентов).
← →
Игорь Шевченко © (2005-09-09 13:35) [35]Ragazor (09.09.05 13:32) [34]
Это все первое требование. Для этого извратов в исходном тексте не требуется - пользователи не покупают исходный код.
← →
Ragazor (2005-09-09 13:36) [36]для Tonich
Столкнулся с проблемой, тут начали умничать всякие умники а зечем тебе а почему так а давай по другому задачу тебе изменю...
Потом сам походу нашел решение...и себя не хвалю.
Если у кого-то есть лучшее и проверенное решение то давайте,я только ЗА, я ж для этого и написал свой пост! Так нет же, сначала обосрать, а потом поумничать...
← →
Ragazor (2005-09-09 13:39) [37]для Игорь Шевченко
Ну по твоим правилам тогда можно просто "в ЛОБ" программировать... И когда в проекте уже более 150 форм и юнитов уже никто ничего не спасет...
← →
Игорь Шевченко © (2005-09-09 13:42) [38]Ragazor (09.09.05 13:39) [37]
> Ну по твоим правилам тогда можно просто "в ЛОБ" программировать.
Кстати да, рекомендую. Результат обычно достигается наиболее оптимальный.
> И когда в проекте уже более 150 форм и юнитов уже никто
> ничего не спасет...
Это мало. Я понимаю, 500-1000
← →
Ragazor (2005-09-09 13:42) [39]для Alexander Panov ©
Нет здесь никакой оптимизации...
Просто это единственное решение которое я нашел, без лишнего кода(это конечно на мой взгляд)...
Пока никто ничего альтернативного не предоставил, кроме Dilmo, который несовсем правильно понял задачу.
← →
Digitman © (2005-09-09 13:43) [40]да что ж ты за олух-то царя небесного, а ?)
ведь ты ж спросил, ЧТО подставить вместо ???? !
тебе ж и был ответ - вместо ???? подставить идентификатор любой переменной, в которой следовало зафиксировать ссылку на только что созданный объект класса-наследника TComponent, который в соответствии с логикой метода Create должен стать владельцем TEdit-компонентов, далее по тексту тобой создаваемых ..
Страницы: 1 2 3 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.041 c