Делфи 7 как пользоваться: автоматизация подготовки ресурсов / Хабр

gui — Delphi мессенджер. Какие компоненты использовать?


Вопрос задан


Изменён
7 месяцев назад


Просмотрен
160 раз

Пишу мессенджер на Delphi7. Прошу помощи: как сделать пользовательский интерфейс примерно как в телеграме, ватсаппе и т.д.

  1. Какие компоненты использовать чтобы при нажатии на i-ую вкладку слева изменялось окно чата справа? (я не придумал ничего лучше PageControl)

  2. Как(на каком компоненте) отображать исходящие и входящие сообщения и скроллить их? (у меня вообще нет идей как это делать)

  3. Как сделать облако сообщения? Я имею ввиду, чтобы сообщения отображались не сплошным текстом, а были отделены как-то (я не придумал ничего лучше как много tMemo’ов, т. е. для каждого сообщения свой tMemo)

Знающие люди, подскажите, подкиньте идей, пожалуйста
Буду очень благодарен

  • delphi
  • gui
  • delphi-7
  • ui






2

в delphi есть все для этого кроме стандартного scrollbox который глючит когда тысячи сообщений там будет.
поэтому сам писал свой скрол бокс который делился на 3 листа 1 что невидно снизу 2 что видно 3 что не видно сверху плюс динамическая подгрузка сообщений при скроле
конечно в delphi есть все но все же вам придется писать свои компоненты на основе стандартных а пытаться найти что то готовое ничему не научит и не факт что на 100% они подойдут под вашу задумку.

  1. Какие компоненты использовать чтобы при нажатии на i-ую вкладку слева изменялось окно чата справа?
    Я делал с помощью TPanel все и ее разновидностей
    PageControl стандартный не подойдет вообще.
    вам нужен полный доступ к окнам что бы на панель навесить другие панели а PageControl вкладка это не окно а просто отрисовка вкладки.
    поэтому создаете вначале скролл бокс который не будет глючить он у вас будет кастомным от него унаследуясь создаете
    отдельные скролбоксы для панели контактов
    и панели диалогов
    создаете все динамически и при создании на каждую ячейку скролбокса т.е контакта вешаете onlick в событии ContactClick(Sender:TObject)
    вы получите объект контакта а дальше загрузите для него историю диалога в скролбокс для диалога.

  2. Как(на каком компоненте) отображать исходящие и входящие сообщения и скролить их?
    Только свой скрол бокс с нуля писать надо. другие варики плохо будут работать(я протестил все что можно, но только свой норм)

  3. Как сделать облако сообщения? Я имею ввиду, чтобы сообщения отображались не сплошным текстом, а были отделены как-то
    допустим вы написали свой ScrollBox с нуля. TBoxHistory

каждый элемент TBoxHistory для истории диалога должен содержать какие то панели (TBoxHistoryItem) в свою очередь (TBoxHistoryItem) должна содержать
несколько сообщений (TBoxHistoryItemContent) в ней может быть или текст или картинки или видео или все вместе (это то что видит юзер)

юзер не видит (TBoxHistoryItem) а она нужна для оптимизации прокрутки, что бы комп меньше напрягался что бы при скроле выводить на экран сообщения блоками а не по одному

т. е схема такая

что использовать для отображения текста (тут у меня тоже есть вопросы), но я использовал TLabel (это менее затратно по ресурсам)
но если юзер хочет выделить или скопировать то при клике TLabel заменятся на TMemo цветной когда операция завершена Tlabel обратно вернется на место.

Сейчас копался в давно скаченных компонентах искал функцию нашел готовое решение для чата правда с некоторыми недостатками но это лучше чем с кучей окно возится оч похоже на телегу парень(наверно) старался скопировать. Для всяких мелких чатов пойдет хотя я попровал в него запихнуть 10000 сообщений вроде работает. но если фотки и другая графика будет нужно будет оптимизировать. Все выполнено в одном компоненте и рисуется не отдельно а разом в Paint
https://github.com/HemulGM/Components
модуль HGM.Controls.Chat.pas






7







Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации



Почта

Необходима, но никому не показывается




By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.


Настройки Delphi » DelphiComponent.ru | Delphi, компоненты Delphi, исходники Delphi

Настройки Delphi

 

  • Showcompilerprogress— во время компиляции показывать окно состояния. В этом окне отображается информация о процессе компиляции и его резуль­тате. Окно очень полезно. Единственный его недостаток это то, что компиля­ция проходит немного дольше. При маленьких проектах это незаметно, но с большими программами задержка может быть ощутимой из-за затрат про­цессорного времени при выводе информации на экран.
  • Minimize on run— минимизировать оболочку, когда запущена программа. Параметр действует, когда вы запускаете программу из Delphi. Если вы за­пустите скомпилированную программу из проводника, то Delphi не будет минимизирован.
  • Hide designers on run — прятать окна объектного инспектора и визуальной формы при запуске программы. По умолчанию этот параметр выставлен, но я советую вам его отключить, чтобы вы могли выполнять программу и тут же корректировать какие-то ее элементы визуально. Если этот параметр вклю­чен, то все окна визуального редактирования пользовательского интерфейса во время выполнения программы будут спрятаны.

Остальные параметры не так интересны. Единственное, на чем необходимо ос­тановиться подробнее,— это окно хода компиляции программы. Как уже говори­лось, окно действительно удобно и его желательно включать. Как только вы по­просите Delphi скомпилировать программу, перед вами появится окно. В нем довольно хорошо отображается состояние компиляции. Интерес представляют три значения.

  • Hints — сообщения. Это простые сообщения, которые указывают на места, где можно улучшить код. Например, вы объявили переменную, но не пользовались ею. В этом случае появится соответствующее сообщение. Это, конечно же, не ошибка, и программа все же будет скомпилирована. Но благодаря этим сообще­ниям вы сможете увидеть, где была объявлена лишняя переменная или, возмож­но, просто что-то было забыто.
  • Warning— предупреждения. На них нужно обращать более пристальное вни­мание. Например, вы объявили переменную, затем попытались ее использовать, не присвоив начальное значение. В этом случае появится предупреждение. Это опять же не ошибка, и программа будет скомпилирована, но Delphi предупреж­дает вас о возможной ошибке. Такие предупреждения нужно проверять, потому что вы действительно могли забыть что-то сделать, и это уже может привести к фатальной ошибке выполнения программы.
  •  Errors— это уже самые настоящие ошибки. Они указывают на те места, где была допущена грубая ошибка, из-за чего программа не может быть скомпили­рована.

Даже если вы откажетесь от показа окна состояния компиляции, вы все равно увидите все сообщения, ошибки и предупреждения в окне ошибок, которое поя­вится внизу главного окна. С этим окном просто удобнее проводить отладку про­граммы.

 

Сразу же можно обсудить еще одно окно настроек, управляющее сообщениями, которые нужно отображать при компиляции. Закройте на время окно настроек Delphi и выберите из меню Project (Проект) пункт Options (Опции). Здесь нахо­дятся настройки конкретного проекта, и для каждой программы можно указать собственные параметры. Пока не будем рассматривать все разделы, а остановимся только на одном— Compiler Messages (Сообщения компилятора), показанном на рис. 3.4.

В разделе General вы можете увидеть два параметра.

  • Show warnings — отображать при компиляции предупреждения.
  • Show hints — отображать при компиляции сообщения. Я не советую вам что-то из этого отключать, потому что и то и другое бывает полезным. А вот в списке Warnings (Предупреждения), который расположен ниже, вы можете указать, какие предупреждения отображать при компиляции текущего проекта. Здесь очень часто отключаются следующие предупреждения.

Чуть ниже в списке вы можете включать или отключать определенные сообще­ния, которые нужно отображать при компиляции. Давайте посмотрим наиболее интересные:

  • Platform symbol (Зависимый от платформы символ)—это сообщение появля­ется, когда в программе используется переменная, специфичная для определен­ной платформы. Программы, написанные на Delphi для Windows, могут быть перекомпилированы в Borland Kylix. Среда разработки Kylix— это тот же Delphi, только для Linux. Когда вы используете в Delphi какую-нибудь перемен­ную, которая не может быть откомпилирована в Kylix, появляется предупреж­дение. Я никогда не использую свои программы для компиляции под Kylix, по­этому для меня эти предупреждения не несут никакой информации, а только отнимают лишнее место.
  • Platform unit (Зависимый от платформы модуль) — то же самое, что и Platform symbol, только для модулей.
  • Unsafe type, Unsafe code и Unsafe typecast— эти предупреждения появились в Delphi 7, и возникают они, когда вы используете незащищенные типы данных, код или объявления которых могут привести к ошибкам. Я постараюсь в тече­ние книги научить вас правильно пользоваться такими типами данных. Однако имейте в виду, когда вы будете писать большие проекты, подобных предупреж­дений может быть сотни. Чтобы не искать среди множества подобных сообще­ний действительно полезную информацию, их можно отключить.

Теперь вернемся в окно настроек программы и перейдем в раздел Windows Forms Designer (Дизайнер форм Windows). Здесь очень интересными являются параметры:

  • Display grid — показать сетку;
  • Snap to grid — перемещать объекты по сетке.

Я советую вам постоянно использовать сетку. Это позволит вам улучшить внешний вид программы. По умолчанию сетка состоит из ячеек 8×8 пикселов каж­дая. Если вы захотите изменить это значение, то советую вам устанавливать значе­ния, кратные 2. А вообще, если следовать эргономике правильного написания программ, желательно не изменять этого значения, потому что с такой сеткой ком­поненты располагаются достаточно хорошо.

 

С некоторыми из оставшихся вкладок мы познакомимся немного позже. А пока перейдем к рассмотрению других объектов среды программирования Delphi.

Настройки редактора кода можно увидеть в разделе Editor Options (Настройки редактора). Соответствующее окно можно увидеть на рис. 3.5.

 

Я рекомендую установить флажок, определяющий значение параметра Undo after save (Отмена после сохранения). Это делается для того, чтобы у вас была возможность отменять последние действия с помощью команды Undo (Отмена) даже после сохранения файла. Если флажок не установлен, то после каждого со­хранения список последних выполненных операций очищается, и вы не сможете выполнять команду Undo (Отмена).

 

В разделе Tool Palette (Палитра инструментов) можно настроить панель инст­рументов. Наиболее интересные пункты это:

 

  • переключатели Small, Medium и Large (маленький, средний и большой), кото­рые определяют размер кнопок. Компонентов очень много, а у меня экран не ре­зиновый, поэтому, чтобы больше помещалось на экран, я предпочитаю Small;
  • Show Button Captions — отображать заголовки компонентов. В первое время, чтобы проще было искать компоненты, заголовки лучше включить. Когда вы привыкнете к иконкам, то можно будет отключить, чтобы больше компонентов помещалось на экране;
  • Auto Collapse Categories— автоматически закрывать разделы компонентов. При переходе в новый раздел предыдущий будет автоматически закрываться;
  • Vertical Category Captions — отображать имена категорий вертикально;
  • Vertical Flow Layout — вертикальная раскладка кнопок.

Последнее, что нужно сделать перед началом работы — настроить кнопки бы­строго доступа на панели инструментов. Для этого нужно щелкнуть правой кноп­кой мыши по панели инструментов и в появившемся меню выбрать пункт Properties (Свойства). В результате откроется окно настройки панелей и кнопок

(рис. 3.6).

 

На первой вкладке можно включать и отключать различные панели. Оставьте только те, которые вы будете часто использовать. На второй вкладке находятся все возможные кнопки, которые можно добавить на панель инструментов простым пе­ретаскиванием.

 

СОВЕТ. Добавьте на панель инструментов команды Save All (Сохранить все) и Close All (Закрыть все) из раздела File (Файл). Сохранить один текущий файл можно нажа­тием сочетания клавиш <Ctrl>+<S>, поэтому кнопку сохранения можно убрать, а вот сохранить все файлы открытого проекта можно или из меню, или добавив одноимен­ную кнопку на панель инструментов.

 

Закрыть проект можно только из меню, потому что сочетания клавиш для этой команды нет. Если для команды Save All (Сохранить все) есть клавиши быстрого доступа (хотя они и не совсем удобны), тут придется пользоваться меню, что ино­гда также затруднительно.

Это пока все, что я хотел показать из настроек. Со временем вы можете понять, что вам нужно еще, но мне достаточно и этих.

Помоги проекту! Расскажи друзьям об этом сайте:

Как использовать процедуру с записью в Delphi 7?

спросил

Изменено
5 лет, 1 месяц назад

Просмотрено
1к раз

Что не так, если этот код, я просто хочу поместить процедуру внутри записи:

 unit unTEFTipos;
интерфейс
тип
  TTEFPagamento = запись
    AcrescimoDesconto: двойной;
    TrocoSaque: двойной;
    процедура Очистить;
  конец;
выполнение
процедура TTEFPagamento.Clear;
начинать
  AcrescimoDesconto := 0;
  ТрокоСак := 0;
конец;
конец.
 

Но среда разработки Delphi 7 возвращает следующие ошибки:

 Сборка
 [Ошибка] unTEFTipos.pas(10): ожидается «КОНЕЦ», но найдена «ПРОЦЕДУРА»
 [Ошибка] unTEFTipos. pas(11): «РЕАЛИЗАЦИЯ» ожидается, но «;» найденный
 [Ошибка] unTEFTipos.pas(13): '.' ожидалось, но найдено "РЕАЛИЗАЦИЯ"
 [Ошибка] unTEFTipos.pas(10): Неудовлетворительное предварительное или внешнее объявление: «Очистить»
 [Фатальная ошибка] GP.dpr(486): не удалось скомпилировать используемый модуль 'TEF\unTEFTipos.pas'
 
  • делфи
  • запись
  • процедура

3

В старых версиях Delphi вы должны использовать объект вместо записи , если вы хотите добавить методы.

 TTEFPamento = объект
    AcrescimoDesconto: двойной;
    TrocoSaque: двойной;
    процедура Очистить;
  конец;
 

Он также будет совместим с более новыми версиями, даже если вы можете столкнуться с некоторыми проблемами при инициализации в нем управляемых переменных.

Так что в итоге я напишу что-то вроде:

 TTEFPagamento = {$ifdef UNICODE}запись{$else}объект{$endif}
    AcrescimoDesconto: двойной;
    TrocoSaque: двойной;
    процедура Очистить;
  конец;
 

, который компилируется во всех версиях и ведет себя одинаково.

2

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.

Компиляция приложений Delphi 7 и 2005 с отладочной информацией

Применимо к TestComplete 15. 51, последнее изменение 31 мая 2023 г. защищенных и частных членов объектов в приложениях Delphi, как только приложение будет скомпилировано с отладочной информацией. В этом разделе объясняется, как включить отладочную информацию в приложения, созданные с помощью Borland Delphi v. 7 или Borland Delphi 2005 для Win32. Чтобы узнать, как подготовить приложения, созданные в других версиях Delphi, см. раздел Реализация поддержки Debug Info Agent™ в приложениях.

Компилятор Delphi генерирует отладочную информацию в формате TD32, которая компилируется в двоичные модули приложения. Однако можно извлечь отладочную информацию в отдельные файлы .tds с помощью утилиты TestComplete StripTDS.

Debug Info Agent™ может работать с обоими форматами. Тем не менее, мы рекомендуем вам создавать внешние файлы .tds для выпускных сборок ваших продуктов. Это уменьшит общий размер вашего приложения. Формат отладочной информации TD32 можно использовать для промежуточных или специальных сборок.

Ниже приведены подробные инструкции по изменению параметров проекта для использования нужного формата отладочной информации.

Примечание: Debug Info Agent™ несовместим с инструментами, которые изменяют формат отладочной информации. Примером такого инструмента является EurekaLog 7. Мы рекомендуем отключать EurekaLog при компиляции приложения, предназначенного для автоматизированного тестирования с помощью TestComplete. В противном случае вы не сможете получить доступ к private , protected и общедоступные методы и свойства ваших приложений Delphi из тестов.

Внешняя отладочная информация (файлы TDS)

Файлы .tds создаются на основе исполняемых файлов и библиотек DLL, скомпилированных с включенной отладочной информацией TD32. Чтобы удалить отладочную информацию из модулей и сохранить ее в отдельных файлах .tds, вы можете использовать утилиту StripTDS, поставляемую с TestComplete.

Итак, для создания файлов .tds необходимо сначала скомпилировать протестированное приложение Delphi с отладочной информацией, а затем обработать скомпилированные модули утилитой StripTDS. Ниже приведены подробные шаги:

  1. Измените настройки проекта для компиляции приложения с отладочной информацией TD32:

    1. Откройте свой проект в Borland Delphi.

    2. Выбрать проект | Параметры из главного меню Delphi. Откроется диалоговое окно «Параметры проекта».

    3. Перейдите на вкладку «Компилятор» и проверьте параметры «Отладочная информация» и «Локальные символы» в группе «Отладка»:

      Примечание: Можно оставить локальные символы отключенными, но в этом случае имена некоторых параметров метода не будут отображаться в панели обозревателя объектов.
    4. Перейдите на вкладку Компоновщик и включите параметр Включить отладочную информацию TD32 в группе параметров EXE и DLL:

    5. Нажмите OK, чтобы сохранить изменения и закрыть диалоговое окно «Параметры проекта».

    6. Пересоберите приложение.

  2. Примените утилиту StripTDS к каждому скомпилированному исполняемому файлу и DLL. Например, для обработки всех файлов EXE и DLL в папке C:\MyApp и ее подпапках можно использовать следующую командную строку:

    StripTDS.exe -r -w C:\MyApp\*.exe;C:\MyApp\*.dll

    Утилита удалит отладочную информацию из исполняемых файлов и сохранит ее в отдельные файлы .tds. Утилита работает только с теми разделами бинарного файла, которые содержат отладочную информацию. Он не изменяет разделы кода и данных, поэтому ваш модуль будет работать так, как он был разработан. Дополнительные сведения об изменениях и аргументах командной строки утилиты StripTDS см. в разделе О StripTDS.

Некоторые примечания относительно этого подхода:

  • Файлы .tds, содержащие отладочную информацию, должны находиться в тех же папках, что и соответствующие модули тестируемого приложения.

  • Даже если приложение скомпилировано с включенной опцией Локальные символы, имена некоторых параметров метода могут не отображаться в обозревателе объектов. Если вам важен просмотр названий параметров (например, если вы разрабатываете новые тесты), скомпилируйте протестированное приложение Delphi с внутренней отладочной информацией TD32 (см. ниже).

  • Нет необходимости распространять сгенерированные файлы .tds вместе с вашим приложением.

Внутренняя отладочная информация (TD32)

Чтобы скомпилировать приложение Delphi со встроенной отладочной информацией TD32, выполните следующие действия:

  1. Выбрать проект | Опции из главного меню.

  2. В появившемся диалоговом окне «Параметры проекта» перейдите на вкладку «Компилятор». Включите параметр «Отладочная информация» в группе «Отладка», чтобы включить отладочную информацию:

  3. Чтобы увидеть имена параметров метода на панели «Обозреватель объектов», отключите параметр «Оптимизация» и включите параметр «Локальные символы». При использовании Delphi 7.0 или более поздней версии также включите параметр «Использовать отладочные DCU»:

    .

  4. Перейдите на вкладку Компоновщик и включите параметр Включить отладочную информацию TD32 в группе параметров EXE и DLL:

  5. Рекомендуется отключить параметр «Сборка с пакетами среды выполнения» на вкладке «Пакеты»:

    Если этот параметр отмечен, Delphi создает файлы библиотеки пакетов Borland (.bpl) при компиляции приложения. TestComplete не может получить доступ к отладочной информации в этих файлах и некоторых элементах управления. Если это свойство не отмечено, вся информация включается в один исполняемый файл и доступна для TestComplete. Дополнительные сведения о пакетах среды выполнения см. в разделе О пакетах среды выполнения.

    Если по какой-либо причине вы не можете отключить параметр Сборка с пакетами среды выполнения, TestComplete может не получить доступ к внутренним методам и свойствам приложения.

    Imacros | Все права защищены © 2021