Delphi мессенджер. Какие компоненты использовать?
Пишу мессенджер на Delphi7. Прошу помощи: как сделать пользовательский интерфейс примерно как в телеграме, ватсаппе и т.д.
Какие компоненты использовать чтобы при нажатии на i-ую вкладку слева изменялось окно чата справа? (я не придумал ничего лучше PageControl)
Как(на каком компоненте) отображать исходящие и входящие сообщения и скроллить их? (у меня вообще нет идей как это делать)
Как сделать облако сообщения? Я имею ввиду, чтобы сообщения отображались не сплошным текстом, а были отделены как-то (я не придумал ничего лучше как много tMemo'ов, т.е. для каждого сообщения свой tMemo)
Знающие люди, подскажите, подкиньте идей, пожалуйста Буду очень благодарен
Ответы (1 шт):
в delphi есть все для этого кроме стандартного scrollbox который глючит когда тысячи сообщений там будет. поэтому сам писал свой скрол бокс который делился на 3 листа 1 что невидно снизу 2 что видно 3 что не видно сверху плюс динамическая подгрузка сообщений при скроле конечно в delphi есть все но все же вам придется писать свои компоненты на основе стандартных а пытаться найти что то готовое ничему не научит и не факт что на 100% они подойдут под вашу задумку.
Какие компоненты использовать чтобы при нажатии на i-ую вкладку слева изменялось окно чата справа? Я делал с помощью TPanel все и ее разновидностей PageControl стандартный не подойдет вообще. вам нужен полный доступ к окнам что бы на панель навесить другие панели а PageControl вкладка это не окно а просто отрисовка вкладки. поэтому создаете вначале скролл бокс который не будет глючить он у вас будет кастомным от него унаследуясь создаете отдельные скролбоксы для панели контактов и панели диалогов создаете все динамически и при создании на каждую ячейку скролбокса т.е контакта вешаете onlick в событии ContactClick(Sender:TObject) вы получите объект контакта а дальше загрузите для него историю диалога в скролбокс для диалога.
Как(на каком компоненте) отображать исходящие и входящие сообщения и скролить их?
Только свой скрол бокс с нуля писать надо. другие варики плохо будут работать(я протестил все что можно, но только свой норм)Как сделать облако сообщения? Я имею ввиду, чтобы сообщения отображались не сплошным текстом, а были отделены как-то допустим вы написали свой ScrollBox с нуля. TBoxHistory
каждый элемент TBoxHistory для истории диалога должен содержать какие то панели (TBoxHistoryItem) в свою очередь (TBoxHistoryItem) должна содержать несколько сообщений (TBoxHistoryItemContent) в ней может быть или текст или картинки или видео или все вместе (это то что видит юзер)
юзер не видит (TBoxHistoryItem) а она нужна для оптимизации прокрутки, что бы комп меньше напрягался что бы при скроле выводить на экран сообщения блоками а не по одному
что использовать для отображения текста (тут у меня тоже есть вопросы), но я использовал TLabel (это менее затратно по ресурсам) но если юзер хочет выделить или скопировать то при клике TLabel заменятся на TMemo цветной когда операция завершена Tlabel обратно вернется на место.



