Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.084 c
14-1127681502
NewWonder
2005-09-26 00:51
2005.10.16
Посоветуйте плиз. модель принтера


1-1126647870
saNat
2005-09-14 01:44
2005.10.16
Сообщение ОС при обращении к недоступному диску


4-1124192100
BFG9k
2005-08-16 15:35
2005.10.16
Звонить в импульсном режиме


3-1125947025
sergey007
2005-09-05 23:03
2005.10.16
BDE и alias ы


1-1127819167
Jioniro
2005-09-27 15:06
2005.10.16
Dll как хранилище иконок