Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.63 MB
Время: 0.041 c
1-1127741789
yanker
2005-09-26 17:36
2005.10.16
Управление процессом


1-1127475917
__DATA__
2005-09-23 15:45
2005.10.16
Получение данных из Exel-я


2-1125092597
ronyn
2005-08-27 01:43
2005.10.16
Как в Делфе анимацию типа *.gif реализовать?


2-1125911392
Антоний
2005-09-05 13:09
2005.10.16
Разбить несколько слов...


11-1108339670
rofl
2005-02-14 03:07
2005.10.16
problems with KOL Pmenu Submenus





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский