Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.045 c
15-1162982731
Кабан
2006-11-08 13:45
2006.11.26
Терминал


10-1126512081
НИИМ
2005-09-12 12:01
2006.11.26
Вывод в Excel без Excel


3-1159018613
PeterBuild
2006-09-23 17:36
2006.11.26
Индекс по калькулируему полю


2-1162926039
ils
2006-11-07 22:00
2006.11.26
Подскажите, как красивее реализовать проход по периоду


15-1162820991
сисадмин
2006-11-06 16:49
2006.11.26
тема: "вирь - убийца спаммеров"





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