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

Вниз

Компоненты   Найти похожие ветки 

 
Gero ©   (2004-06-10 23:47) [0]

Компоненты, компоненты, компоненты...
Эти компонеты уже пишут по поводу и без повода, мол я написал компонент копирующий файлы, а я написал компонент для messagebox"ов...
Это уже начало раздражать.
Еще и спрашивают: мол, почему в твоей программе так много кода, лучше бы по компонентам все разбил.
Уше дошло до того, что пишут компоненты без свойств, содержащие одну-единственную функцию(не считая унаследованных, конечно).
Типа круто?


 
Гаврила ©   (2004-06-10 23:48) [1]

типа круто потом проект на другую машину переносить
и еще круто с сишниками холи-вар вести потом


 
ИМХО ©   (2004-06-10 23:54) [2]

"Компьютеры, процессоры, сканнеры... надоело! Сколько можно?" (с)


 
Игорь Шевченко ©   (2004-06-10 23:56) [3]

Компонент хорошо создавать, когда он используется более одного раза в программе, а еще лучше - в нескольких программах. Тогда в его написании есть смысл. Мначе - лично я не вижу смысла.


 
Gero ©   (2004-06-10 23:56) [4]


> ИМХО ©   (10.06.04 23:54)

И что Вы этим хотите сказать?


 
Gero ©   (2004-06-10 23:57) [5]


> Игорь Шевченко ©   (10.06.04 23:56)

А просто модуль чем хуже?


 
KilkennyCat ©   (2004-06-10 23:59) [6]


> Gero ©   (10.06.04 23:57) [5]


или процедура :)


 
jack128 ©   (2004-06-10 23:59) [7]


> Эти компонеты уже пишут по поводу и без повода, мол я написал
> компонент копирующий файлы, а я написал компонент для messagebox"ов...
Что реально так? Лично мне даже там где надо было бы компонентом оформить просто лениво этоо делать. У мя дома инсталировать, на работе инсталировать. А потом вдруг новое свойство решу добавить - опять по новой... Хотя возможно это потому, что я контролы не пишу. Для визуальных компонентов дезин тайм, конечно, огромную роль играет..


 
KilkennyCat ©   (2004-06-11 00:00) [8]


> jack128 ©   (10.06.04 23:59) [7]


а я проблему "дом-работа" решил винтом в мобилраке.


 
Игорь Шевченко ©   (2004-06-11 00:01) [9]

Gero ©   (10.06.04 23:57)


> А просто модуль чем хуже?


На форму не положишь, в design-time свойства не настроишь


 
Gero ©   (2004-06-11 00:02) [10]


> Что реально так?

Ну вот пример:
http://delphimaster.net/view/1-1086886557/
10 - ый пост.

Это только то, что под руку попалось, а вобще примеров таких немерянно встречал.


 
Игорь Шевченко ©   (2004-06-11 00:05) [11]

Gero ©   (11.06.04 00:02)


> Ну вот пример:
> http://delphimaster.net/view/1-1086886557/
> 10 - ый пост.


Ну, это типа того, что как бы круто компоненты писать


 
Gero ©   (2004-06-11 00:06) [12]


[9] Игорь Шевченко ©   (11.06.04 00:01)
> На форму не положишь, в design-time свойства не настроишь

Да, уважительные причины.


 
Игорь Шевченко ©   (2004-06-11 00:07) [13]

Gero ©   (11.06.04 00:06)


> Да, уважительные причины.


Это ирония ?


 
KilkennyCat ©   (2004-06-11 00:08) [14]


> Игорь Шевченко ©   (11.06.04 00:01) [9]
>
> На форму не положишь, в design-time свойства не настроишь


Вы будете смеятся, но когда я первый раз сел за делфи, окно свойств не открылось. И я писал программу, не зная о его существовании :) Книжки тогда не было, изучал методом тыка. Была написана сетевая версия программы "платежка"! за 700 рублей :) и месяц возни (большей частью в ВарКрафте)


 
Gero ©   (2004-06-11 00:08) [15]


> [13] Игорь Шевченко ©   (11.06.04 00:07)

Ну конечно :)
А что, Вы действительно считаете эти причины уважительными?


 
Gero ©   (2004-06-11 00:12) [16]


> KilkennyCat ©   (11.06.04 00:08)
> когда я первый раз сел за делфи, окно свойств не открылось.
> И я писал программу, не зная о его существовании :)

LOL :)
Так держать!
Скажем "нет" устанавливанию свойств в DesignTime!
:)


 
Игорь Шевченко ©   (2004-06-11 00:18) [17]

Gero ©   (11.06.04 00:08)


> А что, Вы действительно считаете эти причины уважительными?


Конечно. А что, можно иначе считать ? Поделитесь, мне тоже стало интересно.

Кстати, небольшой пример: есть программа для ввода неких данных, данные вводятся через набор Edit"ов, ComboBox"ов и прочих контролов. Есть задача - при вводе пользователем некорретных значений выделять фон контрола "цветом неверности" (разумеется - желтым:)
(Неверность значений определяется у каждого контрола по своим правилам, иногда в чем-то совпадающим, иногда различающимся)

Как эту задачу можно решить наименьшим количеством кода без компонентов ?


 
jack128 ©   (2004-06-11 00:18) [18]


> А что, Вы действительно считаете эти причины уважительными?

сморя какой компонент. Чем сложнее, тем более уважительной является эта причина. Подумай сколько бы ты настраивал, ну например, связку DataSet - DataSource - DbGrid, что бы она нормально отображалась. Настроить все заголовки, все форматы, прописать lookup поля и тд и тп. Все таки Delphi - это среда _визуального_ программирования..


 
Gero ©   (2004-06-11 00:27) [19]


> Игорь Шевченко ©   (11.06.04 00:18)

Ну, например так(первое что в голову пришло):

if Comp is TEdit then
 begin
   if Tedit(Comp).Text <> "верный текст" then
     TEdit(Comp).Color := clErrorColor
   else
     TEdit(Comp).Color := clNormalColor;
 end
else if Comp is TComboBox then
 begin
   // Аналогично
 end
else if ...

А как бы эту задачу решали Вы?


 
Gero ©   (2004-06-11 00:28) [20]


> jack128 ©   (11.06.04 00:18)

Это понятно, но нужно же знать меру.
Компонент для копирования файлов - это уже до ручки дело дошло.


 
Игорь Шевченко ©   (2004-06-11 00:33) [21]

Gero ©   (11.06.04 00:27)

У разных TEdit разные правила для определения верности, мне показалось, я это объяснил. Контролов в общей сложности (на паре десятков форм) около сотни, разных правил проверки примерно три десятка.


 
Gero ©   (2004-06-11 00:36) [22]


> Игорь Шевченко ©   (11.06.04 00:33)

Прошу прощения, я пропустил этот момент.

Так как бы это сделали Вы?
В чем преимущество создания компонента в данном случае?


 
Игорь Шевченко ©   (2004-06-11 00:37) [23]

Забыл добавить - в совокупности используется 6 разных типов контролов. (TDBEdit, TDBComboBox, TDBComboEdit, TDBCalcEdit, TDBDateEdit, TComboBox)


 
Gero ©   (2004-06-11 00:44) [24]


> [23] Игорь Шевченко ©   (11.06.04 00:37)

Так в чем преимущество создания компонента в данном случае?
Просветите меня, темного.


 
Игорь Шевченко ©   (2004-06-11 00:46) [25]

Gero ©   (11.06.04 00:44)

Я бы хотел сначала увидеть способ решения без компонентов, если не трудно :)


 
nikkie ©   (2004-06-11 00:50) [26]

>Я бы хотел сначала увидеть способ решения без компонентов, если не трудно :)
пишется процедура SetErrorStyle(AControl: TControl; Value: Boolean) - внутри проверка по классу и для каждого класса по-своему выставляем св-ва.


 
Gero ©   (2004-06-11 00:51) [27]


> [25] Игорь Шевченко ©   (11.06.04 00:46)

Чесно говоря, я очень устал и меня сейчас ломает что-либо писать.
Но если так настаиваете, то написать могу.
Но зачем?
Вы сомневаетесь, что я с этим справлюсь? ;)


 
Gero ©   (2004-06-11 00:53) [28]


> внутри проверка по классу и для каждого класса по-своему
> выставляем св-ва.

Я в [19] это и имел ввиду.
Только не по классу проверка, а для каждого контрола своя проверка, я так понял.


 
GuAV ©   (2004-06-11 00:59) [29]


> Вы сомневаетесь, что я с этим справлюсь? ;)

Gero! На тебя с надеждой смотрят все противники визуальной разработки! Не подведи их!


 
Gero ©   (2004-06-11 01:01) [30]


> Не подведи их!

Наверное, все же подведу. Отдыхать-то тоже хочется.


 
Игорь Шевченко ©   (2004-06-11 01:08) [31]

nikkie ©   (11.06.04 00:50)

У одного класса компонентов могут существовать (и существуют) разные правила проверки.

И для полного приближения к реальности: цветом они должны выделяться только при перемещении между компонентами. Причем, если в контрол, помеченный цветом неверности введено верное значение, его цвет должен меняться на верный при выходе с контрола.

При попытке подтверждения ввода данных в случае неверного значение в контроле должно выдаваться предупреждающее сообщение (для каждого правила проверки - свое) :)


 
Profi ©   (2004-06-11 01:08) [32]

>Gero

LMD

Модуль лучше и проще, но... надо запомнить все названия функций, либо делать справочник (хотя бы txt). В компоненте же, delphi сам предлежет все функции! Так что выбор за тем, что удобнее.


 
Gero ©   (2004-06-11 01:12) [33]

Удалено модератором


 
Profi ©   (2004-06-11 01:16) [34]

Удалено модератором


 
nikkie ©   (2004-06-11 01:16) [35]

[31] Игорь Шевченко
ок, я понял. предполагаем, что задача решаема написанием нужных обработчиков событий, но просто ломает куче контролей проставлять правильно все обработчики? так?

решение такое: обработчики событий делаем не методами формы, а методами нового класса-хендлера. в этом классе пишем метод Attach(AControl: TControl), который прописывает нужные обработчики.


 
Gero ©   (2004-06-11 01:17) [36]

Удалено модератором


 
Игорь Шевченко ©   (2004-06-11 01:18) [37]

nikkie ©   (11.06.04 01:16)


> ок, я понял. предполагаем, что задача решаема написанием
> нужных обработчиков событий, но просто ломает куче контролей
> проставлять правильно все обработчики? так?


Примерно так, но еще и вызовом этих обработчиков в нужные моменты.


 
Profi ©   (2004-06-11 01:19) [38]

Удалено модератором


 
Gero ©   (2004-06-11 01:20) [39]


> Игорь Шевченко ©   (11.06.04 01:18)

А что изменит компонент?


 
Игорь Шевченко ©   (2004-06-11 01:21) [40]

Gero ©   (11.06.04 01:20)


> А что изменит компонент?


Количество строк кода, насколько я полагаю, в конечном итоге - скорость разработки


 
Gero ©   (2004-06-11 01:24) [41]


> Игорь Шевченко ©   (11.06.04 01:21)

А поконкретнее?
Интересно же, я лично не вижу, чем компонент может существенно помочь.


 
VID ©   (2004-06-11 01:25) [42]

KilkennyCat ©   (11.06.04 00:08) [14]
точно надо подать в суд на борланд :)


 
Profi ©   (2004-06-11 01:26) [43]

Удалено модератором
Примечание: Еще одно выступление и у тебя будет возможность читать


 
Игорь Шевченко ©   (2004-06-11 01:26) [44]

Gero ©   (11.06.04 01:24)


> Интересно же, я лично не вижу, чем компонент может существенно
> помочь.


А мне не менее интересно бескомпонентное решение :)


 
GuAV ©   (2004-06-11 01:27) [45]

Любителем компонентов, упражнение:
Написать два компонента - один - интежер, другой арифметическое дейтсвие (одно из +-*/ задаётся св-вом и операнды и результат - тоже св-во). и сравнить это с таким кодом C:=A+B;

зы - не подумайте, что я - противник компонентов...


 
Profi ©   (2004-06-11 01:30) [46]

>GuAV

Так же можно писать компонету изменения caption у label, это пустая трата времени и ни кому не нужно. Но когда используешь одни и те же функции, да еще и в разных программах, то компонент лучше модуля.
Однозначно! (c) Жириновский


 
Gero ©   (2004-06-11 01:30) [47]


> Игорь Шевченко ©   (11.06.04 01:26)

Эх, чувствую, что уйду спать, так и не узнав страшной тайны.


 
GuAV ©   (2004-06-11 01:33) [48]


> это пустая трата времени и ни кому не нужно

Прекрасно понимаю :)
поэтому я и привел этот пример. Глупо решать задачу Игоря Шевченко без компонентов, глупо решать мою через оные. "Каждому овощу..." (с) кто-не-помню


 
Profi ©   (2004-06-11 01:35) [49]

>GuAV

Согласен!


 
iZEN ©   (2004-06-11 01:37) [50]

Gero ©   (10.06.04 23:47).
Ну, во-первых, компонент работает в окружении, часто в собственном "фреймворке", то есть совместно с другими классами и сущностями. Поэтому написание компонента даже с одним методом - это ещё ни о чём не говорит, но может показать о том месте, которое занимает такой компонент (в иерархии, в цепочке взаимодействия и т.д.).

Во-вторых.
Вспомните паттерны проектирования.
Там же на каждом вздохе и чихе - класс или интерфейс, иногда с одним единственным абстрактным методом. И такой класс чертовски необходим для понимания мыслей авторов кода.

В-третьих.
Компонент сам по себе может быть довольно сложной сущностью с дочерними классами, редакторами свойств и т.д. Искусство создания компонента как раз и сосотоит в умении "выпячивать" только нужные свойства и методы для сторонних разработчиков так, чтобы с ним/с ними было удобно и легко работать, а не просто наслаждаться очередным шедевром компонентостроения.


 
nikkie ©   (2004-06-11 01:41) [51]

>[37] Игорь Шевченко
>Примерно так, но еще и вызовом этих обработчиков в нужные моменты.
так я не увидел резюме на решение, предложенное в [35] nikkie


 
Gero ©   (2004-06-11 01:46) [52]


> Поэтому написание компонента даже с одним методом - это
> ещё ни о чём не говорит

Особенно если этот метод - CopyFile :)


 
GuAV ©   (2004-06-11 01:48) [53]


>  а я написал компонент для messagebox"ов...

Между прочим я такое юзал, когда константы не помнил. Preview in designtime rulez.


 
Gero ©   (2004-06-11 01:49) [54]


> Между прочим я такое юзал, когда константы не помнил

А я F1 юзал :)


 
GuAV ©   (2004-06-11 01:53) [55]

Вы лучше обратите внимание на такое. Есть винапи функция диалога открытия файлов. она завёрнута в компонент TOpenDialog. Он завёрнут в функцию PromptForFileName.


 
Игорь Шевченко ©   (2004-06-11 10:31) [56]

Похоже, меня не совсем верно поняли. Я имел в виду не создание отдельного компонента для решения задачи, а написание наследников от контролов, поддерживающих нужную функциональность. Так как разнообразие типов контролов небольшое, то создание менее десятка наследников является меньшим злом, чем написание функций, работающих со стандартными компонентами.


 
Gero ©   (2004-06-11 11:02) [57]


> Игорь Шевченко ©   (11.06.04 10:31)
> создание менее десятка наследников является меньшим злом,
> чем написание функций, работающих со стандартными компонентами

Да ладно Вам...
Лучше написать с десяток наследников чем одну функцию, работающую со всеми?


 
Игорь Шевченко ©   (2004-06-11 11:13) [58]

Gero ©   (11.06.04 11:02)

И все-таки, хотелось бы услышать начальника транспортного цеха



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.06.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.6 MB
Время: 0.031 c
3-1085825634
Stark
2004-05-29 14:13
2004.06.27
Использование файлов БД в формате *.bdf


6-1083784947
bars
2004-05-05 23:22
2004.06.27
Соединение для обмена текстовыми сообщениями


1-1087142375
Bochka
2004-06-13 19:59
2004.06.27
String to Real как правильно записать ?


3-1085996825
TohaNik
2004-05-31 13:47
2004.06.27
Пользователям IB Expert.


3-1086076426
ИМХО
2004-06-01 11:53
2004.06.27
Clarion





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