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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
    ShIvADeSt



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

    Цитата:
    Это уже просто неприлично, то что делает система с моими мозгами.

    Это просто неприлично, что ТЫ делаешь с НАШИМИ мозгами. Перестань оффтопить, для этого есть топик вверху.
    По 2010 свой топик.

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:33 28-09-2009
    svs123456789

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

    Цитата:
    компонентами ICS (альтернатива Indy)?

    а можно поинтересоваться предпочтением indy ?   (там ведь вроде полегче )

    Всего записей: 2934 | Зарегистр. 10-04-2003 | Отправлено: 09:39 28-09-2009
    Smokeer

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я програмно меняю обработчик событий компонента... на пример:
       SmkCopyFile1.BeforeReWrite:=SmkCopyFile1BeforeReWriteOld;
    Тут всё просто. НО в компоненте есть свой собственный стандартный обработчик этого события. Как програмно назначить обработчиком встроенную в компонент стандартную процедуру? Или остается просто дублировать её и назначать дубль?
     
    По сути на форме лежат переключатели обработчиков - зависимо от их состояния нужно либо запускать стандартную процедуру (и в том "как?!" загвоздка) либо другие обработчики из самой формы(тут всё просто).

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 12:19 28-09-2009 | Исправлено: Smokeer, 12:22 28-09-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smokeer
    Перед тем как назначить новый обработчик сохраните старый обработчик в какую то переменную и в зависимости от условий вызывайте тот или иной обработчик.

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

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я . Пожалуйста извините, не жалуйтесь батве пожалуйста.
    У меня сейчас очень жизненно важная тема:
    Ребят подскажите плиз как загружать TBitmap в TImageList. Мне надо не компонент, а роутины.

    Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 13:01 28-09-2009
    greenpc

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    delover
    не проверял но
    Bitmap:=TBitmap.create;
    try
      Bitmap.LoadFromFile(....)
      ImageList.Add(Bitmap, nil);
    finally
      Bitmap.Free;
    end;

    Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 14:12 28-09-2009
    Denion



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    У меня есть вопрос...  Суть такова...
     
    У меня есть проект который использует внешние ресурсы (т.е. Созадаеться EXE файл проекта и рядом распаложена папка с ресурсами) Вот теперь сам вопрос: Как можно сделать так что бы папка при комперяции паковалась в EXE?  
     
    Вот пример такого EXE http://rapidshare.de/files/48386917/w7lxe-archive.exe.html при просмотре файла через PE Explorer можно увидить все ресурсы и видно что это делалось в Delphi

    Всего записей: 918 | Зарегистр. 07-12-2002 | Отправлено: 15:51 28-09-2009
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Denion
    Ну например Resurce Builder, к стати есть на форуме.
    Есть пункт в меню Сервис/Линковать к EXE
     
    Добавлено:
    Denion
    В догонку - Restorator може может помочь.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 17:04 28-09-2009
    Smokeer

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

    Цитата:
    Перед тем как назначить новый обработчик сохраните старый обработчик в какую то переменную и в зависимости от условий вызывайте тот или иной обработчик.

    Спасибо.
    А как делать если на момент выполнения моих команд уже установлена внешняя процедура и нужно переключить на внутреннюю?

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 17:31 28-09-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smokeer
    Не совсем понимаю вопрос. Если у вас есть сохраненный обработчик то его можно вызвать как обычный метод.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 18:23 28-09-2009
    Smokeer

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    меня интересует есть ли варианты когда сохранить обработчик невозможно - он переопределен в диспетчере объектов, к примеру. Спрашиваю чисто для расширения кругозора и потому что, думаю, такое пригодится через некоторое время.

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 19:10 28-09-2009
    andrewtishkin



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

    Цитата:
    а можно поинтересоваться предпочтением indy ?   (там ведь вроде полегче )

    Плюсы
    1) Полегче
    2) Есть документация
    3) Встроено в Delphi
    На этом плюсы заканчиваются
     
    Минусы
    1) ГЛЮКИ (дофига, время от времени всплывают новые; часто им посвящаются целые дискуссии на форумах)
    2) ЮНИКОДНЫЕ глюки. Это вообще тихий ужас... Indy под D2009 вообще не заточили
    3) Довольно-таки тормознутые компоненты... ICS, например, пошустрее будет, и не подвешивает программу во время выполнения запросов (то есть можно обойтись без создания отдельных потоков)
    4) На Indy похоже вообще "забили", всё туманно, особенно если зайти на оф. сайт
    Ну и ещё вот тут недавно обсуждение видел на DelphiMaster.ru про ICS
     
    Ну так что... Никто с ICS не работает, POST-запросы не отсылает, помочь не может

    Всего записей: 781 | Зарегистр. 28-08-2008 | Отправлено: 01:45 29-09-2009
    skYmarine

    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте, появился вопрос по quickreport (если не в той ветке пишу - прошу указать нужную).
    Есть набор данных cust , sql которого select cust_id from customers.
    Как средствами quickreport вывести результат в строку через запятую, т.е. вместо таблицы
    1
    2
    3
    4
    ---
    я хочу иметь 1, 2, 3, 4.
     
    Акцент - именно средствами quickreport, средстави аггрегатных функций базы данных решение не пойдет.
     
    У меня есть идея что нужно завести строковую переменную и в нее собрать результаты выполнения запроса построчно, но я не знаю как. помогите,а
     
    заранее спасибо.

    Всего записей: 44 | Зарегистр. 31-07-2006 | Отправлено: 11:29 29-09-2009
    volser

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

    Цитата:
    меня интересует есть ли варианты когда сохранить обработчик невозможно - он переопределен в диспетчере объектов

    Почему невозможно?
     
    Например так,
     
    AFormCloseQueryOld: TCloseQueryEvent; -- переменная
     
    AFormCloseQueryOld := Form1.OnCloseQuery; -- сохранить старый обработчик
     
    Form1.OnCloseQuery := FormCloseQueryNew; -- новый
     
    А дальше вызов
     
    procedure TForm1.FormCloseQueryNew(Sender: TObject; var CanClose: Boolean);
    begin
      if Assigned(AFormCloseQueryOld) then
        AFormCloseQueryOld(Sender, CanClose);
       
      --
    end;

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

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

    Цитата:
    Почему невозможно?

    Потому-что он на момент выполнения моего кода УЖЕ ЗАМЕНЕН внешней процедурой.
    То есть в вашем конкретном примере вы сохраняете не внутренний обработчик, а УЖЕ ВНЕШНИЙ.

    Всего записей: 781 | Зарегистр. 25-09-2005 | Отправлено: 14:33 29-09-2009
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Smokeer
    В таком случае переделайте логику работы программы. Добавьте свои события которые вызывайте во внешней процедуре.
     
    Приведите конкретный пример проблемы что бы не гадать на кофейной гуще.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 15:03 29-09-2009 | Исправлено: volser, 15:04 29-09-2009
    ShIvADeSt



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

    Цитата:
    А как делать если на момент выполнения моих команд уже установлена внешняя процедура и нужно переключить на внутреннюю?

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

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 15:08 29-09-2009 | Исправлено: ShIvADeSt, 15:22 29-09-2009
    Denion



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    V1s1ter
    А средствами Delphi можно это сделать?

    Всего записей: 918 | Зарегистр. 07-12-2002 | Отправлено: 22:42 29-09-2009
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Denion
    В D2009+ есть простенький редактор ресурсов встроенный прямо в среду. Или вам в рантайме надо ресурсы править?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:35 29-09-2009
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Denion
    Если речь только о строковых ресурсах то сработает такая конструкция  

    Код:
     
    resourcestring
      CreateError = 'Cannot create file %s';  
      OpenError = 'Cannot open file %s';  
      LineTooLong = 'Line too long';
      ProductName = 'CodeGear Rocks';
     

    Если есть готовый файл ресурсов, например SameRes.res
    то можно воспользоваться директивой компилятора $R, например  

    Код:
     
    {$R SameRes.res}
    {$R filename}
    {$RESOURCE filename}
    {$R *.xxx}
    {$R filename.res filename.rc}  
     


    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 23:58 29-09-2009 | Исправлено: V1s1ter, 00:03 30-09-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