Конференция "Основная" » Получить список контролов [D7, WinXP]
 
  • Thor (28.03.08 10:00) [0]
    Доброго времени суток!

    Подайте идею как получить список контролов которые расположены на форме, для того что бы в дальейшем их перенести в БД. Это связано с построением системы ограниченя доступа.
    Т.е. писать маленькую программку по разбору dfm или pas файлов, или может есть другие пути? Не хочеться руками переностить, т.к. форма не одна, а кантролов еще больше.

    Спасибо!
  • MBo © (28.03.08 10:02) [1]
    Controls[]
  • Palladin © (28.03.08 10:03) [2]
    ControlsCount
    Controls[]

    большое незачто, заглядывай в справку по чаще...
  • Thor (28.03.08 10:17) [3]
    Спасибо, но техническую часть я знаю. Меня интересовал сам подход.
  • Palladin © (28.03.08 10:23) [4]
    Что ты имеешь в виду под фразой "перенести в БД". Описание форм там хранить собираешься?
  • Игорь Шевченко © (28.03.08 10:40) [5]

    > Это связано с построением системы ограниченя доступа.


    Не проще ли строить систему ограничения доступа без связи контролов с базой данных, например, в базе данных хранить список ролей, а контролы настраивать в соответствии с прочитанным списком в самой форме ?
  • ЮЮ © (28.03.08 10:43) [6]
    > Описание форм там хранить собираешься?

    Так система же не ограничения доступа к данным, а к контролам на форме :)
  • Семеныч (28.03.08 10:55) [7]
    > Thor   (28.03.08 10:00)  

    Form.Controls дает список контролов, расположенных непосредственно на форме Form. В этот список не входят контролы, расположенные на других парентах (панели, GroupBox'ы, фреймы и т.д.). Чтобы получить и их тоже, надо построить рекурсию. Но если все контролы были положены в design-time, то можно сделать проще:

    for i := 0 to Form.ComponentCount - 1 do
     if Form.Components[i] is TControl then
       List.Add(TControl(Form.Components[i]));

  • tesseract © (28.03.08 13:59) [8]

    > Т.е. писать маленькую программку по разбору dfm


    Dfm Можно вроде, как грузить прямо в рантайм. Была где-то статья по этой теме, DFM-ы хранились в БД.

    ЗЫ: А контролов у тебя много от плохого проектирования софта.
  • Игорь Шевченко © (28.03.08 14:44) [9]

    > ЗЫ: А контролов у тебя много от плохого проектирования софта.


    У меня тоже много. Я что-то делаю не так ?
  • tesseract © (28.03.08 15:32) [10]

    > У меня тоже много. Я что-то делаю не так ?


    Много контролов или фрэймов с контролами?   Больше трёх кнопок - уже много.
  • Игорь Шевченко © (28.03.08 15:48) [11]
    tesseract ©   (28.03.08 15:32) [10]


    > Больше трёх кнопок - уже много.


    пять в ряде форм. Но дело не в кнопках - у меня много Edit-ов, комбобоксов и так далее...Десятки иногда.

    Расскажи мне, что я делаю не так.
  • tesseract © (28.03.08 15:56) [12]

    > Десятки иногда.Расскажи мне, что я делаю не так.


    Десятки это перебор.  http://www.useit.com/
  • Игорь Шевченко © (28.03.08 16:02) [13]

    > Десятки это перебор.


    То есть, пофиг, независимо от задачи ? :)
  • Игорь Шевченко © (28.03.08 16:04) [14]

    >  http://www.useit.com/


    в каком именно месте по этому url сказано, что десятки - это перебор ?
  • easy © (28.03.08 16:07) [15]
    да, и где картинки?
  • tesseract © (28.03.08 16:10) [16]

    > в каком именно месте по этому url сказано, что десятки -
    >  это перебор ?


    по русски называеться вроде "кошелёк шеллера".  Лень искать URL.


    > То есть, пофиг, независимо от задачи ? :)


    От задачи зависит конечно. Для избавления придумали такую вещь как визарды и составные элементы управления, в 1с например так выглядит вставка адресов из кладр. Но десятки.......

    Я максимум в одном клиент-банке одной конторы 15 видел, которые с лёгкостью превращались в 5.
  • tesseract © (28.03.08 16:11) [17]

    > да, и где картинки?


    на flickr :-)
  • tesseract © (28.03.08 16:17) [18]
  • Игорь Шевченко © (28.03.08 16:17) [19]
    tesseract ©   (28.03.08 16:10) [16]


    > Я максимум в одном клиент-банке одной конторы 15 видел


    Я не пишу клиент-банки.

    Зайди в Outlook, в контакты, удивись - 14 полей, 7 кнопок.
    Скачай MS Money, установи, посчитай контролы -  удивись.
  • Игорь Шевченко © (28.03.08 16:19) [20]
    tesseract ©   (28.03.08 16:17) [18]


    > и кстати вот :


    На свете кроме бухгалтерии есть еще масса увлекательных предметных областей.
  • Игорь Шевченко © (28.03.08 16:19) [21]
    Удалено модератором
    Примечание: Дубль
  • tesseract © (28.03.08 16:21) [22]

    > Зайди в Outlook, в контакты, удивись - 14 полей, 7 кнопок.
    > Скачай MS Money, установи, посчитай контролы -  удивись.
    >


    Я и удивляюсь. Считаю это неправильным. Например, посмотри, как "Пуск" сделан в SUSE 10.3 - идеально просто сделан, приятно работать.
  • Игорь Шевченко © (28.03.08 16:25) [23]
    tesseract ©   (28.03.08 16:21) [22]


    > Я и удивляюсь. Считаю это неправильным


    А удобно, знаешь ли :)

    В Suse я, извини, не работаю.
  • tesseract © (28.03.08 16:28) [24]

    > А удобно, знаешь ли :)


    Посчитал, 13 edit.  Не десятки.
  • Игорь Шевченко © (28.03.08 16:30) [25]
    tesseract ©   (28.03.08 16:28) [24]

    Осталось посчитать в MS Money. Потом слетать на самолете, и изучить авиабилет :)
  • Kolan © (28.03.08 16:33) [26]
    > Расскажи мне, что я делаю не так.

    Скрины покажи, тогда можно будет сказать что не так, или что все так…
  • tesseract © (28.03.08 16:34) [27]

    > Потом слетать на самолете, и изучить авиабилет :)


    Мне военника хватает. Занимательное чтиво.

    Авиабитле вроде как разбит по категориям и страничкам. Кстати тоже криво сделан - реально нужная пассажиру информация запрятана в небалуйся месте. А всякие кода поездов и итд и тп на самом видном.
  • tesseract © (28.03.08 16:34) [28]

    > Скрины покажи, тогда можно будет сказать что не так, или
    > что все так…


    он же дал скрины :-)

    > Игорь Шевченко ©   (28.03.08 16:30) [25]


    Я про поездовые, давно не летал :-)
  • Kolan © (28.03.08 16:36) [29]
    > он же дал скрины :-)

    Где?
  • tesseract © (28.03.08 16:36) [30]

    > Осталось посчитать в MS Money. Потом слетать на самолете,
    >  и изучить авиабилет :)
  • Kolan © (28.03.08 16:37) [31]
    Так это разве его скрины?
  • Игорь Шевченко © (28.03.08 16:38) [32]
    tesseract ©   (28.03.08 16:34) [27]


    > Кстати тоже криво сделан - реально нужная пассажиру информация
    > запрятана в небалуйся месте


    Ну да, Барч вообще конкретный ламер.


    > Авиабитле вроде как разбит по категориям и страничкам


    По категориям разбит. По страничкам - это копии под копирку.

    Но если какой-то дизайнер предложит информацию с него вводить по страничкам - его будут бить долго и возможно ногами.
  • Kolan © (28.03.08 16:40) [33]
    > Но если какой-то дизайнер предложит информацию с него вводить
    > по страничкам — его будут бить долго и возможно ногами.

    А разве ЖД билет не так сделан? Там тетка странички загибает/отрывает и печатает на спец принтере…
  • Игорь Шевченко © (28.03.08 16:43) [34]

    > Кстати тоже криво сделан - реально нужная пассажиру информация
    > запрятана в небалуйся месте


    И еще, чтобы ты был в курсе - авиабилет он вообще не для пассажира :))
  • tesseract © (28.03.08 16:48) [35]

    > его будут бить долго и возможно ногами.


    Информацию с него или на него ?

    Начнём : Билет содержит : Информацию о пассажире, для пассажира  и для персонала.

    Операции 1 : Вводим данные о пассажире.
    Операция 2 : Вводим данные о рейсе ( данные уже должны быть получены до того как билет начали вводить).
    Операция 3 : На печать выводиться все данные, в том числе и скрытые, которые в принципе подставляються автоматически  - из информации о рейсе.

    ЗЫ :  Информацию "время вылета, номер рейса, место" выводим в правом верхнем углу здоровенным шрифтом.
  • Kolan © (28.03.08 16:50) [36]
    Удалено модератором
  • tesseract © (28.03.08 16:52) [37]
    Удалено модератором
    Примечание: И не цитируем
  • Игорь Шевченко © (28.03.08 16:53) [38]
    tesseract ©   (28.03.08 16:48) [35]


    > Информацию с него или на него ?


    А неважно.


    > Билет содержит : Информацию о пассажире, для пассажира  
    > и для персонала.


    не. не для пассажира. пассажиру надо только его иметь при себе. куда и когда лететь - оно по центру написано - не промахнешься.


    > Операции 1 : Вводим данные о пассажире.
    > Операция 2 : Вводим данные о рейсе ( данные уже должны быть
    > получены до того как билет начали вводить).
    > Операция 3 : На печать выводиться все данные, в том числе
    > и скрытые, которые в принципе подставляються автоматически
    >  - из информации о рейсе.


    :) "Я тут ща всех автоматизирую"
  • tesseract © (28.03.08 16:56) [39]

    > :) "Я тут ща всех автоматизирую"


    Профессиональная привычка.
    У меня много очень "подготовленного" персонала, который кушает валидол при смещении кнопки на пару пикселей. И умудряеться прорвать оборону из 4-х проверок. Есть подозрения,что они дейсвует стаей, созваниваясь в тайне. Сегодня такое отчудили, Андрей нам вдвоём с админом объяснял минут 40 пока до нас дошло... Силён в них дух упорства :-)
  • Германн © (28.03.08 16:56) [40]

    > :) "Я тут ща всех автоматизирую"
    >

    А Бритиш Эйрвейз случайно не ты автоматизировал? :)
  • Kolan © (28.03.08 16:58) [41]
    > куда и когда лететь — оно по центру написано — не промахнешься.

    Значит таки пользуется билетом пасажир?
  • Игорь Шевченко © (28.03.08 16:58) [42]
    tesseract ©   (28.03.08 16:56) [39]

    Я к чему - все таки прикладная область она накладывает некоторый отпечаток на способы решения задач
  • Kolan © (28.03.08 16:59) [43]
    > [35] tesseract ©   (28.03.08 16:48)

    То, что ты сейчас на коленке за 3 минут пытаешься решить такию супер сложную проблемму — тоже ошибка.
  • tesseract © (28.03.08 17:05) [44]

    > То, что ты сейчас на коленке за 3 минут пытаешься решить
    > такию супер сложную проблемму — тоже ошибка.


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


    > Я к чему - все таки прикладная область она накладывает некоторый
    > отпечаток на способы решения задач


    Конечно, но общие принципы всё-таки сходи. Я недавно для тачскрина рисовал интерфейс - столкнулся с кучей проблем.
  • Kolan © (28.03.08 17:06) [45]
    Удалено модератором
  • tesseract © (28.03.08 17:07) [46]

    > Покажи что нарисовал.


    Все экраны ? Смотри Iphone - примерно похоже :-) Только мультитача конечно нет.
  • Kolan © (28.03.08 17:11) [47]
    Удалено модератором
  • Kolan © (28.03.08 17:12) [48]
    Удалено модератором
  • Игорь Шевченко © (28.03.08 19:28) [49]
    tesseract ©   (28.03.08 17:05) [44]


    > Я её не решаю, я просто сказал что информацию для билета
    > можно вводить постранично


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

    Ты когда-нибудь анкеты заполнял ?
    Тебя не удивлял тот факт, что большинство вопросов занимают весь лист, а не так, что взял книжку, написал на первой странице фамилию, имя, отчество, перевернул страницу еще 3-5 пунктов написал и так далее.
  • tesseract © (28.03.08 20:04) [50]

    >  А уж тем более,
    >  при ручном вводе.


    Я очень плотно работаю с ручным вводом. 1с знаете ли. Там по 100-300 строк на экране не предел. Проверка ИМХО нужна именно погрупповая, потому, как у опеатора за экраном,  после 6 часовой смены IQ и внимательность соотвествует обезъяннему.


    > чтобы вся информация была перед глазами.


    Это не значит, что она должна быть доступна при редактировании.  Чем больше редактируемых полей, тем чаще оператор будет ошибаться вводом. Я на себе такое испытал под неким софтом некой крупной конторы,   там была куча Edit немерянная и ультранастраиваемая функциональность. Как и всё ультра не работала, босс послал меня на ней посчитать. В результатае был написан софт с 3-ми edit (активировались по вызову)  который позволял считать в десятки раз быстрее !!! если раньше скалд инвентаризировался 1-1,5 суток , теперь это происходит за 2 часа. Персонал может работать с приложением, даже если его первый раз увидел.
  • Игорь Шевченко © (28.03.08 20:11) [51]
    tesseract ©   (28.03.08 20:04) [50]


    > 1с знаете ли.


    не знаю.


    >  Проверка ИМХО нужна именно погрупповая, потому, как у опеатора
    > за экраном,  после 6 часовой смены IQ и внимательность соотвествует
    > обезъяннему.


    Ну да. И ему крайне желательно, чтобы то, что у него не совпало на экране соответствовало тому, что он видит глазами. Не листая, а по совокупности. Потому как при вводе он (оператор) на экран не смотрит, а смотрит на оригинал. Чем меньше он будет переключаться промеж страниц, тем быстрее введет. Промежду прочим, исследования эргономичности - они тоже иногда проводятся...


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


    Нифига. Оператор на экран не смотрит. Я, знаете ли, несколько лет имел счастье наблюдать как они работают в Аэрофлоте. Они при вводе еще и жизненные проблемы обсуждать успевают и довольно бурно.
    А поскольку оплачиваются они сдельно, то в вводе они кровно заинтересованы. В правильном вводе.
  • tesseract © (28.03.08 20:15) [52]

    > А поскольку оплачиваются они сдельно, то в вводе они кровно
    > заинтересованы. В правильном вводе.


    Текучка кадров значит меньше, чем у меня. Вообще флуд, тему закрыть или перенести в прочее :-)
 
Конференция "Основная" » Получить список контролов [D7, WinXP]
Есть новые Нет новых   [134484   +49][b:0.001][p:0.002]