Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Внизwith Найти похожие ветки
← →
100% (2006-11-05 20:45) [0]Смотрел справку и не понял. Возможноли использовать with в такой ситуации:
with Edit1, Edit2, Edit3, Memo1, Label1 do
Enabled := False;
У меня не получается, реагирует только последний контролл (Label1).
?
← →
Anatoly Podgoretsky © (2006-11-05 20:51) [1]> 100% (05.11.2006 20:45:00) [0]
Возможно, но голову такую дурную надо, какие в природе не встречаются.
А диагноз простой, у тебя дырка в голове. Все работает в соответствии с
написаным и в соответствии с документацией.
← →
Anatoly Podgoretsky © (2006-11-05 20:52) [2]> 100% (05.11.2006 20:45:00) [0]
А тебе на какой надо, смени порядок, чтобы он последним был.
← →
100% (2006-11-05 20:54) [3]Я не понимаю смысла вашего поста, исключительно какие-то необоснованные высказывания в сторону моей головы. Обратите внимание на то, в какую конференцию я пишу.
Мне нужно все перечисленные.
← →
Суслик © (2006-11-05 21:02) [4]
> Мне нужно все перечисленные.
Т.е. нужно установить Enabled у всех перечисленных компонентов?
Так *точно* нельзя.
Пиши для каждого присвоение явно и дело с концом.
← →
Anatoly Podgoretsky © (2006-11-05 21:04) [5]> 100% (05.11.2006 20:54:03) [3]
Это обоснованные высказывания, у тебя дыра в знания, ты просто не знаешь как
работает Паскаль, оператор with и видимо справку не желаешь прочитать. Все
работает правильно в соответсвии с написаным кодом.
А насчет конференции, конечно обратил, иначе бы просто сообщение было бы
переправлено сюда.
Учи язык. Научись правильно задавать вопросы. Люби справку как отца своего.
Будут конкретные вопросы - можно будет поговорить.
← →
Leonid Troyanovsky © (2006-11-05 21:34) [6]
> 100% (05.11.06 20:54) [3]
> Мне нужно все перечисленные.
Перечисленные поместить на панель,
которой и сделать Enabled.
--
Regards, LVT.
← →
KilkennyCat © (2006-11-05 22:10) [7]> [6] Leonid Troyanovsky © (05.11.06 21:34)
Наверное, все-таки не самый лучший вариант, и далеко не всегда возможный.
А вот объединить их по общему признаку вполне возможно.
← →
Leonid Troyanovsky © (2006-11-05 22:53) [8]
> KilkennyCat © (05.11.06 22:10) [7]
> А вот объединить их по общему признаку вполне возможно.
Пуркуа па?
Например, по общему паренту.
--
Regards, LVT.
← →
koha © (2006-11-05 23:25) [9]Если так уж хочется все компоненты без разбору уныкнуть то можно сделать приблизительно так:
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;
← →
KilkennyCat © (2006-11-05 23:28) [10]> [9] koha © (05.11.06 23:25)
Ну, Леонид это уже предложил, во-первых, а во-вторых именно ТАК не надо.
← →
Percent (2006-11-05 23:28) [11][9] koha © (05.11.06 23:25)
TControl(form1.Controls[i])
Душевно...
← →
koha © (2006-11-05 23:36) [12]> Percent (05.11.06 23:28) [11]
> Душевно...
Можно было и явно:(form1.Controls[i] as TControl)..Enabled:=false;
И сверавно работало бы
← →
Суслик © (2006-11-05 23:40) [13]я бы явно в коде сделал
А.enabled := false;
B.enable := false;
и т.д.
Так понятней, когда в будущем код бущешь читать.
Но, конечно, во всем нужна мера. Прежде чем писать так или иначе нужно представлять целевое назначение кода. Также попытаться представить дальнейшую судьбу кода. Возможно код никто и никогда более не увидит - тогда пиши как тебе нравится и как быстрее. Возможно, что код будет поддерживаться, например, будут добавляться новые сущности, которым нужно выставлять Enabled. Далее также есть несколько вариантов - добавление контролов происходит раз в 3 года или каждые 2 недели. В первом случае в любом случае ты за 3 года забудешь все нафиг. Тебе все равно нужно будет читать и разбираться в коде (можно, конечно доку написать, которая поможет разобраться быстрее, но написание доки, которая будет понятна через несколько лет тоже задача непростая). Во втором случае, если тебе нужно править каждые 2 недели, то может стоит придумать какое-то обобщение - каким-то образом задавать все контролы, у которых нужно выставлять Enabled.
Одним словом, тут большое поле для творчества и... для накопления опыта (иногда придумаешь что-то офигительно красивое и "правильное" с программисткой точки зрения, но более никогда это не пригождается).
← →
KilkennyCat © (2006-11-05 23:41) [14]> koha © (05.11.06 23:36)
у меня исчо два замечания:
с чего Вы предположили, что данный код работает не со своей формой?
Зачем использовать сложную конструкцию if..then..if..then, если выполнение условия - логическое состояние?
← →
koha © (2006-11-05 23:47) [15]Потому как не каждый компонент есть контрол - проверять надо...
например, ImageList - не котрол, а на форме лежит.
← →
Percent (2006-11-05 23:48) [16][12] koha © (05.11.06 23:36)
> Percent (05.11.06 23:28) [11]
> Душевно...
Можно было и явно:
(form1.Controls[i] as TControl)..Enabled:=false;
И сверавно работало бы
Можно было бы вообще никак, и тоже работало бы:
Form1.Controls[i].Enabled := false;
← →
KilkennyCat © (2006-11-05 23:52) [17]> [15] koha © (05.11.06 23:47)
> Потому как не каждый компонент есть контрол - проверять
> надо...
Я не против проверок. Я против таких проверок.
← →
Leonid Troyanovsky © (2006-11-05 23:58) [18]
> Суслик © (05.11.06 23:40) [13]
> придумать какое-то обобщение - каким-то образом задавать
> все контролы, у которых
Все уже украдено до нас: TActionList & etc
Раньше же, для согласованного изменения состояния
групп контролов, у формы или панели делалось свойство,
сеттер которого и выполнял требуемое.
--
Regards, LVT.
← →
Vovan#2 (2006-11-06 00:00) [19]>Anatoly Podgoretsky © (05.11.06 20:51) [1]
Возможно, но голову такую дурную надо, какие в природе не встречаются.
А диагноз простой, у тебя дырка в голове. Все работает в соответствии с
написаным и в соответствии с документацией.
Озверел на старости лет?
← →
koha © (2006-11-06 00:01) [20]> Я не против проверок. Я против таких проверок.
в данном случае такая проверка была необходима, но кто-то был прав: "для конкретного случия конкретный код"
← →
Anatoly Podgoretsky © (2006-11-06 00:06) [21]> Суслик (05.11.2006 23:40:13) [13]
И правильно бы поступил, тем более что в коде они явно перечислены, но к сожалению язык то не PLM, каждое действие надо делать отдельно, в PLM бы я написал так
Button1.Enabled, Button2.Enabled, Button2.Enabled := True
← →
KilkennyCat © (2006-11-06 00:15) [22]> koha © (06.11.06 00:01)
Да я не спорю про необходимость...
If a = b then c := true намного логичнее выглядит как c := a = b;
Это так, к примеру.
Читать легче, ибо в первом варианте я предполагаю свершения определенного действия, а во втором я сразу вижу смену логического состояния.
Кроме того, существуют еще and, or, not...
> [21] Anatoly Podgoretsky © (06.11.06 00:06)
Вот это меня уже давно поражает, почему в Делфи не упростят такие штуки... очень уж я ленивый :)))
← →
koha © (2006-11-06 00:17) [23]> Percent (05.11.06 23:48) [16]
> (form1.Controls[i] as TControl)..Enabled:=false;
- сдесь ляпус я имел это: (form1.Components[i] as TControl).Enabled:=false
← →
Ketmar © (2006-11-06 00:18) [24]>[22] KilkennyCat(c) 6-Nov-2006, 00:15
>Вот это меня уже давно поражает, почему в Делфи не
>упростят такие штуки... очень уж я ленивый :)))
достаточно было бы сделать ":=" функцией. %-)
← →
koha © (2006-11-06 00:22) [25]> KilkennyCat © (06.11.06 00:15) [22]
> Да я не спорю про необходимость...
Сорри... просто я немного нерасчитал сил. Хотел как лучше, а получилось - завел закорягу.
← →
Anatoly Podgoretsky © (2006-11-06 00:25) [26]> Vovan#2 (06.11.2006 0:00:19) [19]
Написаное мною соответствует, написаное тобой нет.
← →
Anatoly Podgoretsky © (2006-11-06 00:34) [27]> KilkennyCat (06.11.2006 0:15:22) [22]
> Вот это меня уже давно поражает, почему в Делфи не упростят такие штуки... очень уж я ленивый
Я бы тоже не отказался, поскольку постоянно используются подобное в коде, но тут Вирт виноват, кроме того раздражает не последовательность во многом, например
while Exp do я могу написать только один оператор, а repeat statements until Expr много, хотя это одна и таже конструкция, цикл while с пост и пред условием. И почему то решил, что программа на Паскале - это одна строка, в конце строки ставится точка.
Мне очень не удобно писать многострочные конструкции
if
then
else
Не нравится равенство всех операторов end, а ведь претендовал на очень строгий язык, который не позволит делать грубые ошибки, равноправный end еще как позволяет и иногда трудно разобраться где не там поставлен end
Позже он понял, что так неправильно и в новых языках сделал как положено, но зато увлекся религией Юникса, теперь у него стало регистро чуствительно.
Ну нет в жизни счастья.
← →
Vovan#2 (2006-11-06 00:35) [28]>Написаное мною соответствует, написаное тобой нет.
Вот сейчас уже отвечал спокойно. А там кричал прямо, слюна брызжила. Из-за какого-то with"а умудрённый опытом пожилой человек так напрягся, что выжал 100 кг лёжа. Э-э, не надо так.
← →
KilkennyCat © (2006-11-06 00:38) [29]> А там кричал прямо, слюна брызжила
Какой интерактивный форум. Передает громкость и слюни.
← →
Ketmar © (2006-11-06 00:48) [30]>[27] Anatoly Podgoretsky(c) 6-Nov-2006, 00:34
>while Exp do я могу написать только один оператор, а
>repeat statements until Expr много, хотя это одна и таже
>конструкция
ага. в Обероне починили. %-)
>Не нравится равенство всех операторов end
это уже дело вкуса, имо. меня наоборот -- раздражают вещи типа "end if".
>иногда трудно разобраться где не там поставлен end
colorer нас спасёт. %-)
>теперь у него стало регистро чуствительно.
что мне очень нравится, кстати. не надо читать конструкции типа "wHiLe". опять же -- в Обероне, например, я отлично обходился без подсветки синтаксиса. а в Delphi -- опаньки... плюс -- приятные соглашения об именах: переменные -- с маленькой буквы, процедуры -- с большой в "геттерах" слово "Get" опускается, etc, etc...
← →
Германн © (2006-11-06 01:57) [31]
> Anatoly Podgoretsky © (06.11.06 00:34) [27]
>
> > KilkennyCat (06.11.2006 0:15:22) [22]
> > Вот это меня уже давно поражает, почему в Делфи не упростят
> такие штуки... очень уж я ленивый
>
> Я бы тоже не отказался, поскольку постоянно используются
> подобное в коде, но тут Вирт виноват, кроме того раздражает
> не последовательность во многом, например
>
...
> Мне очень не удобно писать многострочные конструкции
> if
> then
> else
>
...
> Ну нет в жизни счастья.
>
Выделено мной.
Если б я не был пофигистом, а был бы злопамятен, я бы сохранил в своё время и воспроизвёл бы здесь и сейчас Ваш ответ на мой "плач" тут на форуме по поводу "некоей ограниченности" функционала оператораcase
. :-)
← →
Desdechado © (2006-11-06 11:09) [32]> Смотрел справку и не понял.
with всего лишь указывает на то, что далее не нужно писать полное имя свойства объекта, а можно сокращенное.
Но это не избавляет от обращения к свойству как к таковому. И групповые операции не заменяет.
Кстати, такой множественный with чреват ошибками, ибо если свойство есть в нескольких из перечисленных объектах, то использовано будет только одно, какое именно - зависит от порядка перечисления в with.
← →
Anatoly Podgoretsky © (2006-11-06 23:04) [33]> Германн (06.11.2006 1:57:31) [31]
> сейчас Ваш ответ на мой "плач" тут на форуме по поводу "некоей
> ограниченности" функционала оператора case. :-)
Думаешь в этот раз скажу иначе?
← →
Германн © (2006-11-07 00:27) [34]
> Думаешь в этот раз скажу иначе?
Такая крамольная мысль мне в голову прийти в принципе даже не могла. :-)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.26;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.042 c