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

Вниз

With Tpanel.Create(scroolbox)....   Найти похожие ветки 

 
Digitman ©   (2005-09-09 13:43) [40]

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

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

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


 
Ragazor   (2005-09-09 13:44) [41]

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

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


 
Ragazor   (2005-09-09 13:45) [42]

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


 
Ragazor   (2005-09-09 13:49) [43]

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


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

Ragazor   (09.09.05 13:44) [41]

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

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


 
Ragazor   (2005-09-09 13:51) [45]

Скажем так, 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) [46]


> Ragazor   (09.09.05 13:45) [42]


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

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

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

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

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


 
Ragazor   (2005-09-09 13:57) [47]

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

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


 
Ragazor   (2005-09-09 13:58) [48]

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

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


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


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

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


 
Ragazor   (2005-09-09 14:01) [50]

Плохиш ©

Delphi


 
Alexander Panov ©   (2005-09-09 14:02) [51]

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) [52]

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, в случае с единственным компонентом все просто. Ты же хочешь извратиться, не имея переменной для панели (из соображений "красивости") создать на ней еще какие-то компоненты.

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


 
Digitman ©   (2005-09-09 14:06) [53]


> Ragazor   (09.09.05 14:01) [50]


> Delphi


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


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

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


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


aParent: TWinControl


 
Digitman ©   (2005-09-09 14:08) [55]


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


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


 
Alexander Panov ©   (2005-09-09 14:11) [56]

Да ладно, чего вы распинаетесь.
Если бы человек из спортивого интереса мучался - тогда можно было бы подумать. А Извращение с экономией памяти в размер указателя в течение 50 мс в практической задаче - это уже мазохизмом попахивает.


 
Ragazor   (2005-09-09 14:11) [57]

Alexander Panov ©

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

От того что вы дали - ничем, проехали...

ну вот ще одна реализация...
Чё вы на меня накинулись?
Я что кого-то унизил? Просто спросил помощи...
И вот дали ещё 1 вариант.

Почти тоже самое что и у меня только в 1 процедуре....


 
Alexander Panov ©   (2005-09-09 14:16) [58]

Ragazor   (09.09.05 14:11) [57]

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


 
Digitman ©   (2005-09-09 14:16) [59]


> Просто спросил помощи


в том виде, в каком ты ее попросил в изнач.вопросе, ты ее получил (см. [1], [51])

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

если же имеют, тогда впредь вопрос свой ставь как положено : кратко, внятно, точно. ... а не в виде ???


 
Ragazor   (2005-09-09 14:18) [60]

Alexander Panov ©

Да ты такой же мазохизм написал как и я, только в 1 процедуру...

У тебя переменная "панел" а у меня "Результ"


 
Ragazor   (2005-09-09 14:20) [61]

>>в том виде, в каком ты ее попросил в изнач.вопросе, ты ее >>получил (см. [1], [51])

Согласен...
Токо почитай что ты там мне писал до 51...


 
Digitman ©   (2005-09-09 14:25) [62]


> Ragazor   (09.09.05 14:20) [61]


> что ты там мне писал до 51


тоже самое и написал - создай TPanel-объект, ссылкку на него зафиксируй в некоей ПЕРЕМЕННОЙ, и эту самую переменную потом передавай/используй в кач-ве Owner и/или Parent для далее создаваемых тобой TEdit-объектов .. в чем ты видишь расхождения того, что я тебе сказал, с [1], [51] ? ... тебя понесло в какие-то там "циклы", что никаким боком к сему тривиальному решению задачи не относится)


 
Игорь Шевченко ©   (2005-09-09 14:27) [63]

Ragazor   (09.09.05 14:20) [61]

А ты не страдай. Сделай TFrame, положи туда 2 Edit"а, и плоди  сами фреймы.


 
Ragazor   (2005-09-09 14:28) [64]

ну где мой пост где я про циклы говорил?


 
Ragazor   (2005-09-09 14:29) [65]

>>Игорь Шевченко ©
>>А ты не страдай. Сделай TFrame, положи туда 2 Edit"а, и плоди  сами фреймы.

Тоже выход...


 
Digitman ©   (2005-09-09 14:33) [66]


> Ragazor   (09.09.05 12:11) [6]
> const
> maxPanel = n;
> maxEdit = m;
> не катит.
>
> n - в смыле неизвестное количество, предположим, бесконечно


вот это ЧТО ?

КАКОЕ отношение ЭТО имеет к сабжу ?

сабж-то в чем ?

сабж-то в том , что при твоем with TPanel.Create(..) в теле with-блока ты НЕ имеешь доступа к ссылке на только что созданный (текущий) объект, а она тебе нужна для того чтобы сослаться на этот объект в кач-ве Owner/Parent при последующем конструировании одного или более TEdit-объектов (неважно при этом, в цикле или иначе эти TEdit-объекты ты вознамерился конструировать) .. тривиальнейшее решение очевидно - зафиксировать результат вызова констр.метода класса TPanel в любой переменной, имеющей подходящий тип, и затем указывать эту переменную при вызове констр.метода класса TEdit и при назначении св-ва Parent сконструированного TEdit-объекта (с приведением типа переменной к TWinControl, если необходимо)


 
Ragazor   (2005-09-09 14:44) [67]

Digitman ©
ну согласен к САБЖу это отношения не имеет, этоответ на сообщение ..
тут много чего не имеет отношения к САБЖу..
И про циклы, кстати, я тут нигде не говорил...

>> сабж-то в том , что при твоем with TPanel.Create(..) в

Начиная отсюда прав. Я это уже понял давно.
Вот это я и реализовал и ещё кое кто написал там реализацию...
Так в чем проблема?


 
Digitman ©   (2005-09-09 15:03) [68]


> про циклы, кстати, я тут нигде не говорил


а к чему тогда стольль живо отреагировал в своем [6] в ответ на [2] ?

какая, спрашивается, разница, известно n или неизвестно ?


> тут много чего не имеет отношения к САБЖу


разумеется не имеет)

в конечном итоге все что от тебя требовалось - задать вопрос в примерно след.виде - как и возможно ли вообще в теле with-блока для некоего объекта-наследника класса TWinControl получить на него ссылку


 
Ragazor   (2005-09-09 15:41) [69]

<<как и возможно ли вообще в теле with-блока для некоего объекта-наследника класса TWinControl получить на него ссылку

Если бы я задал так вопрос, то я бы нашел на него ответ не дописав бы до конца предложение...


 
wal ©   (2005-09-09 15:47) [70]


> Если бы я задал так вопрос, то я бы нашел на него ответ
> не дописав бы до конца предложение...
А тебе на smart question cсылку еще не давали?


 
Digitman ©   (2005-09-09 15:48) [71]

именно потому, что ты НЕ задал так вопрос, ты и имеешь проблему)
ибо правильно поставленный вопрос - это чуть ли не 90% его решения)


 
ananax   (2005-09-12 16:08) [72]

Извините, что вмешиваюсь, но у меня по этой теме (во время проверки работоспособности предложенных вариантов - кстати, TComponent мне показалось интереснне) возникли вопросы:

1. я сделал не TPanel а TForm. Все ОК, но не получается вызвать ее модально. (( что посоветуете?

2. как и какими средствами можно вести лист созданных форм и как используя это лист их (при нажатии кнопки на них) их убивать???
С этим получается такая история, что пока у меня по одной форме создается и убивается, то все работает. как только я создаю их бльше чем 1, то сразу возникает ошибка.


 
Digitman ©   (2005-09-12 16:12) [73]


> ananax   (12.09.05 16:08) [72]


> не получается вызвать ее модально


1. что значит "не получается" ?

2. какая ?


 
ananax   (2005-09-12 16:29) [74]

1. С первым я справился! СпасиБо Digitman"у

2. Хочется: потыкать по кнопке (получается) насоздавать форм с кнопками (получается) присобачить к кнопке событие (получается) замачивания формы на которой она сидит.
  Но: если нарушито последовательность: создал форму -> замочил
      то выскакивает ошибка..
всвязи с этим вопросы...
можно ли и как найти форму после того, как я их на штамповал?
как можно задать имя создаваемой формое (у меня почему-то вываливается ошибка)?
Где про это можно почитать?


 
Digitman ©   (2005-09-12 16:35) [75]


> можно ли и как найти форму после того, как я их на штамповал?


не теряй.
тогда и искать не придется.


 
ananax   (2005-09-12 16:50) [76]

))) Ладно, Digitman.
Ты умный! Вот скажи мне, создал я форму:

with TForm.Create(...) do
begin
....
end;

или

f := TForm.Create(...);
и тд.
не получается у меня изменить имя формы (чтобы ее в последствии ))))) найти) и не получается воспользоваться ComponentIndex для работы с формой и ее компонентами... (((
Подскажи, как ты это делаешь?
если я создаю глобальную переменную l: TLabel; то я и имя могу задать... и из любого места программы изменить его свойства..


 
Игорь Шевченко ©   (2005-09-12 16:56) [77]

ananax   (12.09.05 16:50) [76]

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


 
Digitman ©   (2005-09-12 16:56) [78]


> не получается у меня изменить имя формы


что такое "имя формы" ?


 
ananax   (2005-09-12 17:25) [79]

у меня так:

L := TLabel.Create(Form1);
L.Name := "Пусик"; //Работает ))))

F := TForm.Create(Form1);
F.Name := "abcdf"; //Не работает ((((

Как мне действовать?


 
kot andrei ©   (2005-09-12 17:31) [80]

что так и говорит...

Warning[17]: Может не работать.
Error[17]: Действительно не работает.



Страницы: 1 2 3 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.64 MB
Время: 0.053 c
9-1118216589
Novouralsk
2005-06-08 11:43
2005.10.16
Плагин для 3ds Max!


2-1127212304
ZSergey
2005-09-20 14:31
2005.10.16
Как получить значение ...


14-1127301450
TUser
2005-09-21 15:17
2005.10.16
Лекция Вирта - фотографии


6-1118922215
ilias1979
2005-06-16 15:43
2005.10.16
pop3 получение вложения


14-1127468953
Игорь Шевченко
2005-09-23 13:49
2005.10.16
Мы на горе всем буржуям мировой пожар раздуем...