Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.034 c
14-1127760566
Piter
2005-09-26 22:49
2005.10.16
Ковырялся я тут в VCL...


14-1127366703
Starcom
2005-09-22 09:25
2005.10.16
Определение Noname Материнки?


2-1127384201
Tirops
2005-09-22 14:16
2005.10.16
Variant в PChar или String в PChar


2-1126175995
Vasi
2005-09-08 14:39
2005.10.16
Удаление значения из массива


14-1127730098
boriskb
2005-09-26 14:21
2005.10.16
Кто здесь спорит об антивирусах?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский