Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

With Tpanel.Create(scroolbox).... [D6, WinXP]


Страницы:   1 2 3 4 5 6

Ragazor ©   (2005-09-09 11:37:00) 

Делается следующее, n количетво раз:
With Tpanel.Create(scroolbox) do .....

на созданной панели нужно создать таким же макаром 2 едита
With TEdit.Create(???)
Как это сделать?


Digitman   (2005-09-09 14:08:00) [61]


> В моей задаче в ней нет надобности


ты просто "зажал" по недоумию своему каких-то 4 байта в стеке, которые будут жить там всего лишь на протяжении времени жизни п/программы.. не более того


Игорь Шевченко   (2005-09-09 14:07:00) [62]

Alexander Panov ©   (09.09.05 14:02) [51]


> procedure CreateObj(aParent: TObject; aText1,aText2: String);


aParent: TWinControl


Digitman   (2005-09-09 14:06:00) [63]


> Ragazor   (09.09.05 14:01) [50]


> Delphi


плагиат-с это, уважаемый) ... мягко говоря) .. при худшем же для тебя раскладе Борланд будет вправе призвать тебя к ответственности за фривольное использование тобой наименования запатентованной компанией Borland торговой марки "Delphi")


Alexander Panov   (2005-09-09 14:02:00) [64]

Ragazor   (09.09.05 13:57) [47]
Просто 2 вариант экономичней


Чем он экономичнее?
Можно объяснить?

Ragazor   (09.09.05 13:58) [48]
Да. В моей задаче в ней нет надобности.


Как все запущено.

procedure CreateObj(aParent: TObject; aText1,aText2: String);
var
 Panel: TPanel;
begin
 Panel := TPanel.Create(aParent as TWinControl);
 with Panel do
 begin
   Align := alTop;
   Height := 50;
   BevelOuter := bvLowered;
   BevelInner := bvRaised;
   Parent := aParent as TWinControl;
 end;

 with TEdit.Create(Panel) do
 begin
   Left := 40;
   Top  := 5;
   Text := aText1;
   Parent := Panel;
 end;
 with TEdit.Create(Panel) do
 begin
   Left := 40;
   Top  := 23;
   Text := aText2;
   Parent := Panel;
 end;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
 CreateObj(Form1,'Text1','Text2');
end;


Игорь Шевченко   (2005-09-09 14:02:00) [65]

Ragazor   (09.09.05 13:57) [47]


> ну это как говорится "кто на что учился"...
> вот можно написать так
>
> var ddd: Tpanel;
> ...
> ddd := Tpanel.Create(..);
> ...
> а можно
> wtih Tpanel.Create(..) do
> вот если нет надобности в ddd, не нужно к ней обращаться
> где нить, то 1 вариант это лобовое программирование.
> Хотя с другой точки зрения криворукостей нет ни в 1 ни в
> 2.
> Просто 2 вариант экономичней


За фразу ddd := TPanel.Create (..); программист становится кандидатом на увольнение. Не потому, что with не использует, а по другой причине.

Насколько я понимаю, ты задаешь вопрос не о единственном with, в случае с единственным компонентом все просто. Ты же хочешь извратиться, не имея переменной для панели (из соображений "красивости") создать на ней еще какие-то компоненты.

Вот за такие извраты обычно программисты тоже увольняются довольно быстро.


Ragazor   (2005-09-09 14:01:00) [66]

Плохиш ©

Delphi


Ragazor   (2005-09-09 13:58:00) [67]

>>что, от того что ты объявишь, скажем, лок.переменную Comp: TComponent, твой проект потерпит катастрофу ?)

Да. В моей задаче в ней нет надобности.


Плохиш   (2005-09-09 13:58:00) [68]


> Ragazor   (09.09.05 13:49) [43]
> И по твоему коду уже 2 создание панели даст что? Правильно
> access violation... потому как фрее небыл вызван, да и не
> нужен он мне.

Скажите, пожалуйста, название вашего программного продукта, что бы я его как-нибуть нечаенно не установил у себя.


Ragazor   (2005-09-09 13:57:00) [69]

Игорь Шевченко ©
ну это как говорится "кто на что учился"...
вот можно написать так

var ddd: Tpanel;
...
ddd := Tpanel.Create(..);
...
а можно
wtih Tpanel.Create(..) do
вот если нет надобности в ddd, не нужно к ней обращаться где нить, то 1 вариант это лобовое программирование.
Хотя с другой точки зрения криворукостей нет ни в 1 ни в 2.
Просто 2 вариант экономичней


Ragazor   (2005-09-09 13:51:00) [70]

Скажем так, 1 пост немного нужно переделать для того кто не понял 1 предложение.

вместо
"
Делается следующее, n количетво раз:
With Tpanel.Create(scroolbox) do .....

на созданной панели нужно создать таким же макаром 2 едита
With TEdit.Create(???)
Как это сделать?"

написать

"Делается следующее, n количетво раз:
With Tpanel.Create(scroolbox) do .....

на каждойсозданной панели нужно создать таким же макаром 2 едита
With TEdit.Create(???)
Как это сделать?"


Digitman   (2005-09-09 13:51:00) [71]


> Ragazor   (09.09.05 13:45) [42]


да какие нафих еще FOR ...TO ... DO ?!

при чем они здесь ВООБЩЕ ?)

ты перечитай свой ИЗНАЧАЛЬНЫЙ вопрос, а не всю ту байду, что ты понес далее по ходу обсуждения !

вопрос же имеет тривиальный ответ - создать объект класса TPanel и ЗАФИКСИРОВАТЬ ссылку на него в некоей переменной (хоть локальной хоть статической - по барабану), а затем факт.параметром констр.метода класса TEdit передать значение этой переменной !

что, от того что ты объявишь, скажем, лок.переменную Comp: TComponent, твой проект потерпит катастрофу ?)


Игорь Шевченко   (2005-09-09 13:50:00) [72]

Ragazor   (09.09.05 13:44) [41]

Что есть "лобовое программирование", поясни ?
А то, может мы о разном ?

Я сторонник того, чтобы не извращаться с "неиспользованием переменных" из соображений "красивости".


Ragazor   (2005-09-09 13:49:00) [73]

я ж посути реализовал то что у тебя только не через переменную обхявленую в вар, а через фынкцию, которая просто возварщает Tpanel.
Мне нужно создавать не 1 панел а n панелей и на каждой панели создавать что-то своё.
И по твоему коду уже 2 создание панели даст что? Правильно access violation... потому как фрее небыл вызван, да и не нужен он мне.


Ragazor   (2005-09-09 13:45:00) [74]

для Digitman ©
а зачем мне FOR ...TO ... DO???


Ragazor   (2005-09-09 13:44:00) [75]

Игорь Шевченко ©

при лобовом программировани и 100 вполне достаточно для того чтобы если не потерятся, то замедлить ход работы существенно.


Digitman   (2005-09-09 13:43:00) [76]

да что ж ты за олух-то царя небесного, а ?)

ведь ты ж спросил, ЧТО подставить вместо ????!

тебе ж и был ответ - вместо ????подставить идентификатор любой переменной, в которой следовало зафиксировать ссылку на только что созданный объект класса-наследника TComponent, который в соответствии с логикой метода Create должен стать владельцем TEdit-компонентов, далее по тексту тобой создаваемых ..


Игорь Шевченко   (2005-09-09 13:42:00) [77]

Ragazor   (09.09.05 13:39) [37]


> Ну по твоим  правилам тогда можно просто "в ЛОБ" программировать.


Кстати да, рекомендую. Результат обычно достигается наиболее оптимальный.


> И когда в проекте уже более 150 форм и юнитов уже никто
> ничего не спасет...


Это мало. Я понимаю, 500-1000


Ragazor   (2005-09-09 13:42:00) [78]

для Alexander Panov ©
Нет здесь никакой оптимизации...
Просто это единственное решение которое я нашел, без лишнего кода(это конечно на мой взгляд)...
Пока никто ничего альтернативного не предоставил, кроме Dilmo, который несовсем правильно понял задачу.


Ragazor   (2005-09-09 13:39:00) [79]

для Игорь Шевченко
Ну по твоим  правилам тогда можно просто "в ЛОБ" программировать... И когда в проекте уже более 150 форм и юнитов уже никто ничего не спасет...


Ragazor   (2005-09-09 13:36:00) [80]

для Tonich

Столкнулся с проблемой, тут начали умничать всякие умники а зечем тебе а почему так а давай по другому задачу тебе изменю...
Потом сам походу нашел решение...и себя не хвалю.
Если у кого-то есть лучшее и проверенное решение то давайте,я только ЗА, я ж для этого и написал свой пост! Так нет же, сначала обосрать, а потом поумничать...


Страницы:   1 2 3 4 5 6

Наверх

Титульная страница Поиск, карта сайта Написать письмо