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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



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

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


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


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    wasilissk

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

    Всего записей: 293 | Зарегистр. 25-12-2006 | Отправлено: 13:23 06-09-2011
    Graach



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Доброго времени суток,
     
    Долго думала где задать этот вопрос...
    Есть самописный пакет компонент MyClientDataSet, в котором есть компонента Zclientdataset, которая использует отдельную библиотеку CommunicationLayer.dll и вот пришлось перенести эту библиотеку в другое место и после этого начались проблемы. При открытии формы, на которой находится компонент Zclientdataset, выпадает ошибка, которая поднимается при создании экземпляра класса в библиотеке CommunicationLayer. После этого все вроде нормально работает. Когда закрываю форму, снова поднимается та же ошибка. А когда полностью выхожу из Delphi поднимается исключение: Access violation at address 00000000. Read of address 00000000. А после нее Access violation at address 20130288 in module 'vcl100.bpl'. Read of address 0000005C. При чем это происходит только на моем компьютере, у всех остальных разработчиков перенос библиотеки CommunicationLayer.dll прошел абсолютно безболезненно. Использую Delphi 2007 с обновлением, ОС WindowsXP. Настройки системы у всех одинаковые. Пробовала заново установить компоненты, стерев все следы предыдущей установки, заново ставить делфи, создала нового пользователя винды и под него поставила все компоненты. Библиотека не регистрируется.

    Всего записей: 111 | Зарегистр. 20-10-2007 | Отправлено: 13:53 06-09-2011 | Исправлено: Graach, 13:58 06-09-2011
    Maks150988



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

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 15:01 06-09-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Как вывести картинку с помощью GDI+ на чужой хэндл (хэндл известный)? У меня ничего не получается. Картинка пропускает загрузку.  
    Код

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 18:59 07-09-2011
    YuriyRR



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

    Цитата:
    Картинка пропускает загрузку

    а без вызова ImageApplyChanges она видна?

    Всего записей: 518 | Зарегистр. 07-06-2007 | Отправлено: 12:40 08-09-2011
    R3Pa4eK



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

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 19:23 08-09-2011
    YuriyRR



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

    Цитата:
    на чужой хэндл

    Точно не знаю, но как я мыслю - если у окна определена своя функция перерисовки то она и будет все стирать и рисовать свое.

    Всего записей: 518 | Зарегистр. 07-06-2007 | Отправлено: 05:57 09-09-2011
    ShIvADeSt



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

    Цитата:
    Как вывести картинку с помощью GDI+ на чужой хэндл (хэндл известный)? У меня ничего не получается. Картинка пропускает загрузку.  

    Вообще рисовать на чужом контексте это плохо, так как любой апдейт (а у Вас и redraw и invalidate), стирает все что нарисовано. А если на чужом окне натянут какой то контрол, то нарисовать не получится. Так как вы рисуете на контексте родительского окна, а контрол остается со своим изображением. Может лучше более понятно изложите задачу, что хотите получить? В крайнем случае можно рисовать на контексте десктопа (getdc(0) ).
     
    И еще вы рисуете на клиентской части окна, у нее начальная позиция 0,0. Проверьте что Ваши параметры не выходят за границу окна.
     
    Чтобы убедиться что с рисованием все нормально, проделайте все тоже самое в обычном оконном приложении на собственном DC.

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

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



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    YuriyRR
    ShIvADeSt
    Проблема решена. Спасибо!
     

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 16:50 09-09-2011 | Исправлено: R3Pa4eK, 20:05 09-09-2011
    Edison007007



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    всем, доброго времени суток. Есть одна задачка, нужно написать процедуру для Label'a, которая бы получала координаты (Left, Top, Width, Height), и вторую которая бы устанавливала новые (NewLeft, NewTop, NewWidth, NewHeight)

    Всего записей: 376 | Зарегистр. 23-01-2011 | Отправлено: 13:47 10-09-2011
    smirnvlad

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

    Цитата:
    нужно написать процедуру для Label'a, которая бы получала координаты (Left, Top, Width, Height), и вторую которая бы устанавливала новые (NewLeft, NewTop, NewWidth, NewHeight)

    уже написаны в TControl
    через TRect SetBoundsRect GetBoundsRect
    для установки через угол, ширину и высоту есть SetBounds
    по аналогии можно написать GetBounds
    proc GetBounds(var ALeft, ATop, AWidth, AHeight: Integer);
    b
    ALeft := Left;
    ...
    e;

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 14:38 10-09-2011
    Edison007007



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

    Цитата:
    TRect SetBoundsRect GetBoundsRect

    можно поподробней

    Всего записей: 376 | Зарегистр. 23-01-2011 | Отправлено: 15:31 10-09-2011
    smirnvlad

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

    Всего записей: 417 | Зарегистр. 31-03-2009 | Отправлено: 16:59 10-09-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Выручайте. При использовании модуля DMWAPI кнопки на форме не хотят нормально отображаться. Как исправить?  
    Изображения
    Код

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 21:08 10-09-2011 | Исправлено: R3Pa4eK, 11:21 11-09-2011
    Dima335

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос по базам. Есть БД (ADO), грид, в котором отображается результат запроса  

    Код:
    select Employee.*, p.fio from Employee e
    INNER JOIN Person p ON e.ID=p.ID

    При попытке удаления строки возвращается ошибка "Не удается найти строку для обновления..." и т. д. При удалении я подразумеваю, что строка должна удалиться из Employee, таблица Person при этом трогаться не должна, она просто служит для расшифровки фио сотрудника.
    Но потом оказывается, что строка все-таки удалилась. Обновление происходит без ошибок. Как решить проблему?
     
    И как быть, если обновлять Employee иногда необходимо параллельно (из adocommand например), а не из самого грида, так, чтобы изменения отобразились в гриде. close/open у adoquery? Но это может быть долго, если запрос сложный.
     
    P.S. В таблице Employee ключ составной

    Всего записей: 27 | Зарегистр. 30-08-2011 | Отправлено: 05:19 11-09-2011 | Исправлено: Dima335, 06:09 11-09-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Это нормально. Чтобы правильно рисовалось, надо менять код отрисовки кнопок, или вообще заменить их своими.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 14:51 11-09-2011
    R3Pa4eK



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

    Цитата:
    Чтобы правильно рисовалось, надо менять код отрисовки кнопок

    Не подскажете как?

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 15:43 11-09-2011 | Исправлено: R3Pa4eK, 15:45 11-09-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Так: http://delphihaven.wordpress.com/2010/04/22/setting-up-a-custom-title-bar-reprise/ (коменты тоже читать).
    Если же вы работаете с последними версиями VCL, то просто выставьте DoubleBuffered=True.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 15:49 11-09-2011 | Исправлено: Frodo_Torbins, 15:55 11-09-2011
    R3Pa4eK



    Advanced Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Frodo_Torbins
    Спасибо!
     
    Ребята, я уже задолбался с этим GDI+. Мне нужно загрузить изображения на форму инсталлятора созданного в Inno Setup. Называется она WizardForm. Но у меня не получается. Люди подсказали, что нужно перекрыть оконную процедуру и уже в ней при сообщении WM_PAINT рисовать все что нужно. Но как это сделать я не знаю. Подскажите пожалуйста. Исходник

    Всего записей: 963 | Зарегистр. 15-01-2011 | Отправлено: 18:30 11-09-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    R3Pa4eK
    Как по мне, так проще залезть в исходники Inno Setup и исправить все что нужно там.
     
    Добавлено:
    Dima335
    Как вариант поместить на форму один компонент для таблицы Employee и один для Person. А связывать их уже ручками в коде.

    Всего записей: 2319 | Зарегистр. 24-05-2007 | Отправлено: 19:04 11-09-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


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

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

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru