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

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

with


Страницы:   1 2

100% ©   (2006-11-05 20:45:00) 

Смотрел справку и не понял. Возможноли использовать with  в такой ситуации:

with Edit1, Edit2, Edit3, Memo1, Label1 do
 Enabled := False;


У меня не получается, реагирует только последний контролл (Label1).

?


KilkennyCat   (2006-11-05 23:41:00) [21]

> koha ©   (05.11.06 23:36)


у меня исчо два замечания:
с чего Вы предположили, что данный код работает не со своей формой?
Зачем использовать сложную конструкцию if..then..if..then, если выполнение условия - логическое состояние?


Суслик   (2006-11-05 23:40:00) [22]

я бы явно в коде сделал

А.enabled := false;
B.enable := false;
и т.д.

Так понятней, когда в будущем код бущешь читать.

Но, конечно, во всем нужна мера. Прежде чем писать так или иначе нужно представлять целевое назначение кода. Также попытаться представить дальнейшую судьбу кода. Возможно код никто и никогда более не увидит - тогда пиши как тебе нравится и как быстрее. Возможно, что код будет поддерживаться, например, будут добавляться новые сущности, которым нужно выставлять Enabled. Далее также есть несколько вариантов - добавление контролов происходит раз в 3 года или каждые 2 недели. В первом случае в любом случае ты за 3 года забудешь все нафиг. Тебе все равно нужно будет читать и разбираться в коде (можно, конечно доку написать, которая поможет разобраться быстрее, но написание доки, которая будет понятна через несколько лет тоже задача непростая). Во втором случае, если тебе нужно править каждые 2 недели, то может стоит придумать какое-то обобщение - каким-то образом задавать все контролы, у которых нужно выставлять Enabled.

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


koha   (2006-11-05 23:36:00) [23]

> Percent   (05.11.06 23:28) [11]
> Душевно...

Можно было и явно:

(form1.Controls[i] as TControl)..Enabled:=false;

И сверавно работало бы


KilkennyCat   (2006-11-05 23:28:00) [24]

> [9] koha ©   (05.11.06 23:25)


Ну, Леонид это уже предложил, во-первых, а во-вторых именно ТАК не надо.


Percent   (2006-11-05 23:28:00) [25]

[9] koha ©   (05.11.06 23:25)
TControl(form1.Controls[i])


Душевно...


koha   (2006-11-05 23:25:00) [26]

Если так уж хочется все компоненты без разбору уныкнуть то можно сделать приблизительно так:
 
for I := 0 to Form1.ControlCount -1 do TControl(form1.Controls[i]).Enabled:=false;

или так:

for I := 0 to  Form1.ComponentCount - 1 do begin
 if TComponent(Form1.Components[i]).GetParentComponent = ClassName then
 if Form1.Components[i] is Tcontrol then TControl(form1.Components[i]).Enabled:=false;
 end;


Leonid Troyanovsky   (2006-11-05 22:53:00) [27]


> KilkennyCat ©   (05.11.06 22:10) [7]

> А вот объединить их по общему признаку вполне возможно.


Пуркуа па?
Например, по общему паренту.

--
Regards, LVT.


KilkennyCat   (2006-11-05 22:10:00) [28]

> [6] Leonid Troyanovsky ©   (05.11.06 21:34)


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


Leonid Troyanovsky   (2006-11-05 21:34:00) [29]


> 100%   (05.11.06 20:54) [3]

> Мне нужно все перечисленные.


Перечисленные поместить на панель,
которой и сделать Enabled.

--
Regards, LVT.


Anatoly Podgoretsky   (2006-11-05 21:04:00) [30]

> 100%  (05.11.2006 20:54:03)  [3]

Это обоснованные высказывания, у тебя дыра в знания, ты просто не знаешь как
работает Паскаль, оператор with и видимо справку не желаешь прочитать. Все
работает правильно в соответсвии с написаным кодом.

А насчет конференции, конечно обратил, иначе бы просто сообщение было бы
переправлено сюда.

Учи язык. Научись правильно задавать вопросы. Люби справку как отца своего.
Будут конкретные вопросы - можно будет поговорить.


Суслик   (2006-11-05 21:02:00) [31]


> Мне нужно все перечисленные.

Т.е. нужно установить Enabled у всех перечисленных компонентов?
Так *точно* нельзя.
Пиши для каждого присвоение явно и дело с концом.


100%   (2006-11-05 20:54:00) [32]

Я не понимаю смысла вашего поста, исключительно какие-то необоснованные высказывания в сторону моей головы. Обратите внимание на то, в какую конференцию я пишу.

Мне нужно все перечисленные.


Anatoly Podgoretsky   (2006-11-05 20:52:00) [33]

> 100%  (05.11.2006 20:45:00)  [0]

А тебе на какой надо, смени порядок, чтобы он последним был.


Anatoly Podgoretsky   (2006-11-05 20:51:00) [34]

> 100%  (05.11.2006 20:45:00)  [0]

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

А диагноз простой, у тебя дырка в голове. Все работает в соответствии с
написаным и в соответствии с документацией.


Страницы:   1 2

Наверх

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