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

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



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Maks150988
    В JvJclUtils есть функция AddChar

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 19:15 18-08-2010 | Исправлено: salexn1, 19:16 18-08-2010
    volser

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

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 19:41 18-08-2010
    Maks150988



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    А блин пока написал тут уже свою реализацию накатал. Посмотрел какая надпись на статике этой опции у винампа. Zero pad называется.
     

    Код:
    function CtrlWndItem_GetZeroPadText(iItem, iCount: Integer): WideString;
    var
      item : Integer;
      count: Integer;
      diff : Integer;
      i    : Integer;
    begin
     
       item  := lstrlenW(LPWSTR(IntToStrW(iItem)));
       count := lstrlenW(LPWSTR(IntToStrW(iCount)));
       diff  := count - item;
     
       if (diff <> 0) then
         for i := 1 to diff do
           Result := Result + IntToStrW(0);
     
       Result := Result + IntToStrW(iItem);
     
    end;

     
    salexn1
    Спасибо. Посмотрю как там сделано.
    volser
    Спасибо. Да желательно без VCL, я на апи делаю. Там вроде бы с этой функцией надо добрую часть SysUtils таскать что не есть хорошо.

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 19:51 18-08-2010
    ShIvADeSt



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

    Цитата:
     Result := Result + IntToStrW(0);  

    Это нули справа будут писаться, а по идее надо слева - тогда
    Result := IntToStrW(0) + Result;
     
    В дельфи юзается функций FormatStr но портировать ее в АПИ проект плохо - там куча вспомогательных функций юзается, код от которых просто разбухает.
    Но так вот пример юзания ShowMessage(FormatStr('%.2d',[1]));
    должно будет выдать мессагу с "01" текстом. Пишу на коленях - если что по хелпу проверьте.

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 04:53 19-08-2010
    Maks150988



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ShIvADeSt
    Хм, сейчас на мессаджбоксе проверил. Слева добавляются в строку. А хотя в этом случае даже если результат правее поместить в цикле, также будет. У меня же вначале функции результат пустой же. Или надо явно указывать Result := '' ?

    Всего записей: 836 | Зарегистр. 23-12-2006 | Отправлено: 12:45 19-08-2010
    ShIvADeSt



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

    Цитата:
    Хм, сейчас на мессаджбоксе проверил. Слева добавляются в строку. А хотя в этом случае даже если результат правее поместить в цикле, также будет. У меня же вначале функции результат пустой же. Или надо явно указывать Result := '' ?

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

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

    Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:41 20-08-2010
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Приветствую всех!
    Я тут решил попробовать свои силы в переводе и для теста взял главу 10, The Ribbon из книги Marco Cantu Delphi 2009 Handbook. Сам перевод выложил здесь (+зеркала):
    http://files.mail.ru/323U8R  
    http://ifolder.ru/18958929  
    http://narod.ru/disk/23902446000/Chapter10.pdf.html
    А комментарии к качеству (весьма хотелось бы услышать), можно постить здесь.
    Надеюсь, модератор не сочтет пост нарушением правил - все-таки дельфийская тема

    Всего записей: 3145 | Зарегистр. 29-09-2005 | Отправлено: 08:59 20-08-2010
    asi81



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Добрый день!
     
    У меня есть TRichEdit, в нем есть какой то текст - как мне узнать минимальную высоту(Height) этого контрола, чтобы весь текст помещался в нем без скролл-баров?

    Всего записей: 86 | Зарегистр. 08-06-2009 | Отправлено: 17:19 23-08-2010
    salexn1



    Full Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    asi81
    Здается мне, что  никак....

    Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 19:14 23-08-2010 | Исправлено: salexn1, 19:15 23-08-2010
    psa1974



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

    Цитата:
    как мне узнать минимальную высоту(Height) этого контрола, чтобы весь текст помещался в нем без скролл-баров?

    Если текст в RichEdit неформатированный (по крайней мере размер шрифта не меняется и соответствует значению RichEdit.font.size), то примерно так:
     
    Если же текст подвергся форматированию, тут тупо вычислять максимальную высоту каждой строки надо... Для этого можно использовать сообщение EM_GETCHARFORMAT применительно к каждой строке (предварительно ее выделяя). А если  после посылки этого сообщения в поле charformat2.dwMask будет отстутствовать член CFM_SIZE, то и к каждому символу строки!!! Короче это будет долго и утомительно

    ----------
    У программёра есть два состояния: "Втупляю" и "Попёрло"...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 22:31 23-08-2010
    asi81



    Junior Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    psa1974
    Спасибо - с TRichEdit работает. Правда c TcxRichEdit(DevExpress) - нет.  SendMessage(Edit->Handle, EM_GETLINECOUNT, 0, 0) каждый раз возвращает единицу. Но это для меня не принципиально - буду пользоваться TRichEdit.

    Всего записей: 86 | Зарегистр. 08-06-2009 | Отправлено: 13:41 24-08-2010
    psa1974



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

    Цитата:
    Правда c TcxRichEdit(DevExpress) - нет

    У DevExpress структура компаноидов несколько иная - у них там все компаноиды на самом деле являются оболочками над стандартными компоноидами и наследуются от TContainer, а собственно объект, инкапсулирующий окно представлен свойством InnerControl.  
    Т.е. при посылке сообщения надо указывать не cxRichEdit.Handle а cxRichEdit.InnerControl.Handle.

    ----------
    У программёра есть два состояния: "Втупляю" и "Попёрло"...

    Всего записей: 438 | Зарегистр. 08-11-2005 | Отправлено: 15:05 24-08-2010 | Исправлено: psa1974, 15:14 24-08-2010
    pavlo1704

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Товарищи, подскажите, как настроить в Rave Reports 7.7 Альбомную ориентацию страницы

    Всего записей: 21 | Зарегистр. 16-04-2009 | Отправлено: 08:38 26-08-2010
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Столкнулся вот с такой проблемой Delphi 5.
    Есть форма, где редактируется запись из БД Firebird 2.0.
    Точнее записи отбираются в TQuery и уже затем редактируются.
    Часть полей заполняются из справочников по клику на соотв. кнопке, остальные редактируюся в своих DBEdit. С теми полями которые заполняются из справочников проблем нет. В событии OnClick для каждой кнопки стандартная последовательность:
    query.edit
    queryполе:=значение
    query.post
    Все работает.
    А при изменении значения в Dbedit и нажатии на клавишу Enter возвращается старое значение.
    Как победить проблему?

    Всего записей: 323 | Зарегистр. 18-10-2005 | Отправлено: 11:43 30-08-2010
    volser

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych
    Зачем вы делаете post каждый раз? Пост отсылает данные к серверу. При открытии формы в зависимости от того создается запись или редактируется нужно делать Insert или Edit датасету. Дальше по кнопке "Сохранить" делаем Post датасету и комит тразакции.

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 16:32 30-08-2010
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Проблема не в этом.
    Как сделать, чтобы в поле DBEdit носле нажатия на Enter сохранялось измененное значение, а не восстанавливалось старое?

    Всего записей: 323 | Зарегистр. 18-10-2005 | Отправлено: 17:14 30-08-2010
    volser

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

    Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 19:54 30-08-2010
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Уважаемые Дельфийцы (и Билдеровцы)...
    я тут решил предпринять попытку поднять популярность среды разработки Turbo. В первую очередь, конечно, перед людьми, пытающимися или желающими пользоваться лицензионным программным обеспечением. Желающими учиться программированию совершенно свободно. Как известно, среды Turbo не позволяли одновременное сосуществование на одном компе нескольких редакций. Т. е. разработчик был ограничен в выборе одного языка программирования. Я решил исправить этот недостаток (тем более что он был вызван не лицензионными ограничениями, а обычным недостатком инсталлятора, а компания Борланд, как известно, исправлять недостатки никогда не спешила).
    Я усердно поработал почти всю прошлую неделю и в результате мне удалось поместить все 4 персоналити в один инсталлятор. Это тот же самый инсталлятор, который вы видели, когда, например, ставили BDS 2006 Architect, т. е. с возможностью выбора персоналити и настройки их компонентов. Эту сборку я условно назвал Borland Developer Studio 2006 Turbo. Я ее делал для себя, фактически, но, не буду скрывать, мне понравилось то, что получилось в результате. Из периодически читаемых сообщений на разных форумах я вижу, что люди ищут возможность установки двух персоналити, чтобы изучать, например, два языка программирования. Предлагался вариант использования утилитки Turbo Merger, но она очень мусорит в реестре, некорректно сводит персоналити, и не поддерживает 64битные операционки.
    Не знаю, есть ли в моем посте нарушение, модератор если что укажет. Я ни в коем случае не рекламирую свое "творение", более того, ни в коем разе не считаю его своим, а принадлежащим компании Борланд. Моей была только работа по сведению. Я бы даже не назвал это сборкой - это полноценная среда, точно такая же, как  хорошо знакомая многим среда BDS 2006, но Turbo, а мне просто захотелось поделиться с вами возможностью установить фактически полноценную среду разработки и совершенно легально ею пользоваться, не ограничивая себя каким-то одним языком... Среда совершенно работоспособна...
    BDS 2006 Turbo я выложил на Ru-Tracker:
    _http://rutracker.org/forum/viewtopic.php?t=3133245
    Если нарушаю какие-то правила - пост, конечно, удалю...
    Кстати, при интеграции персоналити я использовал самую первую версию Turbo Delphi (со всеми вытекающими отсюда последствиями Последствия можете заметить на скриншотах в теме...

    Всего записей: 3145 | Зарегистр. 29-09-2005 | Отправлено: 00:59 31-08-2010 | Исправлено: DmitryKz, 01:01 31-08-2010
    DmitryKz

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Подскажите, пожалуйста, как можно реализовать смену обоев рабочего стола с таким же эффектом перехода как Windows 7?

    Всего записей: 3145 | Зарегистр. 29-09-2005 | Отправлено: 20:16 02-09-2010
    svs123456789

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как в delphi 7  увеличить шрифт окна свойств - Object Inspector

    Всего записей: 2941 | Зарегистр. 10-04-2003 | Отправлено: 12:29 11-09-2010
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 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