Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5

Модерирует : ShIvADeSt

ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 4

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).

Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:09 28-06-2009 | Исправлено: psa1974, 12:00 02-02-2010
    SIgor33

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AlexNMelnikov
    Гораздо больше 8000 символов. А что это должно как-то влиять.  

    Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 09:26 09-07-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover
    Присвоил имя и что? Как теперь по имени форме обращаться к форме?

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:17 09-07-2009
    RedPromo



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    volser
    Определить место от куда ты хочеш к ней обращаться получить класс данной формы и можно работать.
    Найти небходиму форму можно по имени класса, или имени формы которую ты создал. Только не забываем что будет если есть F.Name := FormName; (+Цифирь если таких форм несколько) - тоесть про Цифрь не забываем если искать по имени формы.

    Всего записей: 558 | Зарегистр. 05-04-2006 | Отправлено: 19:46 09-07-2009
    JohnSilver182



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover минутку .  А какая разница как я назову форму ? Я  так понимаю что при динамичеком создание форм  в  принципе  нельзя  использовать  типа :  
    FormMy.labe1.caption='бла бла бла'  и т.д

    Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 08:16 10-07-2009
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnSilver182
    Смотря что ты понимаешь под динамическом создании форм. Я например понимаю это так - что форма физически создана, но приложение (Application) при старте не делает ей Create. То есть в памяти ее нет. В нужный момент я делаю Create Для формы, после этого обращаюсь к ней по чему угодно и к ее контролам тоже. Все зависит от целей и методов. Что хочешь добиться и как.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 09:13 10-07-2009
    JohnSilver182



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ShIvADeSt
    АГА .  Скорее всего ты делаеш просто  TMyForm1.Create .  
    Я  хотел что то универсальное сделать.

    Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 09:48 10-07-2009
    ShIvADeSt



    Moderator
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnSilver182

    Цитата:
    Я  хотел что то универсальное сделать.  

    Тогда создавай окна на АПИ в рантайме. И грузи контролы из ресурсов. Просто ИМХО ты сам себе создаешь проблемы, чтобы потом их мужественно преодолеть. Смысл динамического создания форм - уменьшить объем потребляемой памяти, мой способ этому удовлетворяет. Что хочешь добиться ты кроме гемора мне если честно не понятно.

    ----------
    И создал Бог женщину... Существо получилось злобное, но забавное...

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 10:18 10-07-2009
    FalconGuy



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Может кто знает - есть ли модификация Async Pro работающая на многоядерных процессорах и где ее взять?

    Всего записей: 1478 | Зарегистр. 22-04-2002 | Отправлено: 10:37 10-07-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnSilver182

    Цитата:
    Я  хотел что то универсальное сделать.  

    Я уже писал. Если хочешь сделать что то универсальное используй интерфейсы (interface).

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 11:17 10-07-2009
    JohnSilver182



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

    Цитата:
    Я уже писал. Если хочешь сделать что то универсальное используй интерфейсы (interface).  

    Это  сложно  наверно ???

    Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 11:58 10-07-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnSilver182
    Нет, не сложно. Пример

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 12:05 10-07-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    JohnSilver182
    Полностью согласен с ShIvADeSt, но доводов предложить не могу. Просто могу намекнуть - куча народа которые программируют DB пишут не Form1.MyField.Value, а пишут Form1.Query.FieldByName('MyField').Value. Это лишь вопрос привычки и синтаксиса.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 19:19 10-07-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover
    Вопрос не в обращении к полю, а в том что он хочет обращаться к форме по имени.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 19:26 10-07-2009
    ekemov

    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    я например так UniQuery.Fields[0].AsString через пор. номер.
     

    Всего записей: 804 | Зарегистр. 23-12-2005 | Отправлено: 20:42 10-07-2009
    delover

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    volser
    Если вопрос разворачивать детально - то проблема только в том, что:
    1. нужно обращаться к свойствам/методам не имеющимся в классе TForm.
    2. такие свойства/поля/методы делятся на две категории
       а) общие для всех форм в моём проекте
       б) уникальные для каждого окна.
    3. если мы захотим обращаться к уникальным свойствам не зная при этом ничего о типе этого уникального окна, то нам прямой путь к изучению серверов OLE автоматизации COM DCOM и всё такое прочее. То есть мы хотим код типа TAutomatizedForm(F).Button123.click, а не TForm123(F).Button123.click.  
    4. Преобразование к конкретному классу TForm123 конечно не так романтично, но с некоторого времени я иногда подумываю, что гемор тоже не очень романтично. Как правило внешний доступ к конкретным свойствам нужен только для установления изначальных значений и прочтения при закрытии/сохранении. Всё это оформляется одним методом для модальных окон и двумя методами для немодальных. Не сказка конечно. Лучше иногда потратить недельку на изучение вопроса, что же есть такое пространство имён.
     
    Всвязи с пространством имён вопросик. У меня компонент похожий в ИДЕ на датасет.  Я его кидаю на фрейм. Добавляю в него филды. Кидаю фрейм на форму, добавляю филды на форме. Получается три пространства имен. Пространство формы, пространство фрейма и пространство датасета фрейма на форме. Что касается формы и фрейма - то тут VCL всё делает автоматически. Что касается датасета, то тут мне удалось урегулировать только исключительными ситуациями. Например я добавил филд на форме. Потом сохранил и закрыл, а потом кто-то добавил этот же филд во фрейм. В принципе есть два решения:
    1. Разрешать такое, так как Form1.Frame1.Field1 компилятор отличит от Form1.Field1,  
    2. Но есть второе решение, когда открывают на редактирование Form1 можно страшно ругнуться и переименовать Form1.Field1, чтобы сохранились данные.
     
    Я реализовал второй вариант, так как боюсь запутаться в одноимённых филдах. Какой вариант предпочтительнее? И если переименовывать, то по какому правилу?

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 10:47 11-07-2009 | Исправлено: delover, 22:06 11-07-2009
    Ape

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Как работать с карт-ридером для магнитных карт?
    Со сканером штрихкодов работать просто. Он эмулирует клавиатуру и при сканировании посылает последовательность символов в активное приложение. А карт-ридер в режиме эмуляции клавиатуры (PS/2) ничего никуда не передаёт. Если у кого есть опыт в этом деле, поделитесь пожалуйста!

    Всего записей: 81 | Зарегистр. 06-02-2003 | Отправлено: 10:59 11-07-2009
    Coltrain

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Ape

    Цитата:
    Как работать с карт-ридером для магнитных карт?  

    Про аналогию со сканером штрих-кодов - все правильно. А то, что
    Цитата:
    карт-ридер в режиме эмуляции клавиатуры (PS/2) ничего никуда не передаёт
    то это проблема в карт-ридере. Проверь его работу в обыкновенном блокноте.

    Всего записей: 160 | Зарегистр. 31-07-2002 | Отправлено: 16:11 11-07-2009
    JohnSilver182



    BANNED
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А кто знает как  PROXY SERVER, USER NAME и PASSWORD Установить на соединение ??
     
    hSession := InternetOpen('IE10',   INTERNET_OPEN_TYPE_PRECONFIG   ,nil, nil, 0);

    Всего записей: 829 | Зарегистр. 03-06-2009 | Отправлено: 20:33 11-07-2009 | Исправлено: JohnSilver182, 21:42 11-07-2009
    Ape

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Coltrain

    Цитата:
    Про аналогию со сканером штрих-кодов - все правильно. А то, что
    Цитата:
    карт-ридер в режиме эмуляции клавиатуры (PS/2) ничего никуда не передаёт
    то это проблема в карт-ридере. Проверь его работу в обыкновенном блокноте.

    Спасибо! Я предполагал, что в карт-ридере проблема, но не был уверен. Проверил в блокноте. Ничего! Интересно то, что в режиме RS232 он передаёт данные, проверил драйвером АТОЛ. Но в режиме PS/2 и в атоловский драйвер ничего не передаёт.

    Всего записей: 81 | Зарегистр. 06-02-2003 | Отправлено: 08:45 12-07-2009
    Mazyan



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Прошу, помогите новичку!
    Имеется База данных, в ней 3 связанные таблицы : table1,2,3
    надо сделать так чтобы в таблице3 подсчитывалась сумма всех записей поля "общий вес" и это значение присвоить полю "вес каркаса" таблицы2, так же сумму всех записей поля "вес каркасса"  таблицы2 присвоить полю "расход металла" таблицы1.
     
    Заранее спасибо!

    Всего записей: 29 | Зарегистр. 11-02-2005 | Отправлено: 20:02 12-07-2009
       

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 5
    ShIvADeSt (19-05-2010 05:14): Продолжаем тут http://forum.ru-board.com/topic.cgi?forum=33&topic=11215


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru