Форум: "Начинающим";
Текущий архив: 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.044 c