Конференция "Основная" » Получить список контролов [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, установи, посчитай контролы -  удивись.
 
Конференция "Основная" » Получить список контролов [D7, WinXP]
Есть новые Нет новых   [134484   +49][b:0][p:0.001]