Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отображение смайлов в RichView 
:(
    Опции темы
Andreyzpr
Дата 24.7.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 4.2.2007
Где: Украина

Репутация: 1
Всего: 1



Многие ищут, как в программе выводить смайлы
Я и сам интересовался по этому вопросу, и видел у других такие вопросы..
Вот, кому надо, вылаживаю исходный код, где с помощью компонента RichView программа поддерживает смайлы - довольно простой код... RichView довольно хороший компонет, поэтому для тех, кто пишет чат как раз!

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ImgList, StdCtrls, RVStyle, RVScroll, RichView;

type
  TForm1 = class(TForm)
    rv: TRichView;
    RVStyle1: TRVStyle;
    Memo1: TMemo;
    Button1: TButton;
    ImageList1: TImageList;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    function SmileNo(Smile:String) : Integer;
    procedure AddWithIcons( s: String; StyleNo: Integer; var ParaNo: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.AddWithIcons( s: String; StyleNo: Integer; var ParaNo: Integer);
var s2: String;
    p: Integer;
    smile:String;
begin
  s2 := '';
  while s<>'' do
  begin
    p := Pos(':', s);
    if p=0 then
    begin
      rv.AddNL(s2+s, StyleNo, ParaNo);
      ParaNo := -1;
      exit;
    end;
    if (Length(s)>p) and (s[p+1] in [')','1','2', '3', '4', '5', '6', '7', '?', '!', '(']) then
    begin
      s2 := s2+Copy(s, 1, p-1);
      if s2<>'' then
      begin
        rv.AddNL(s2, StyleNo, ParaNo);
        s2 := '';
        ParaNo := -1;
      end;
      rv.AddBulletEx( '', SmileNo(s[p+1]), ImageList1, ParaNo);
      ParaNo := -1;
      s := Copy(s, p+2, Length(s));
    end
    else
    begin
      s2 := Copy(s, 1, p);
      s := Copy(s, p+1, Length(s));
    end;
  end;
  if s2<>'' then
    begin
      rv.AddNL(s2, StyleNo, ParaNo);
      s2 := '';
      ParaNo := -1;
    end;
end;

function TForm1.SmileNo(Smile:String) : Integer;
begin
if Smile = ')' then SmileNo:=0;
if Smile = '1' then SmileNo:=1;
if Smile = '2' then SmileNo:=2;
if Smile = '3' then SmileNo:=3;
if Smile = '4' then SmileNo:=4;
if Smile = '5' then SmileNo:=5;
if Smile = '6' then SmileNo:=6;
if Smile = '7' then SmileNo:=7;
if Smile = '?' then SmileNo:=8;
if Smile = '!' then SmileNo:=9;
if Smile = '(' then SmileNo:=10;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ParaNo:Integer;
begin
rv.AddNL('', 0, 0);
ParaNo:=-1;
AddWithIcons(Memo1.Text, 0, ParaNo);
rv.FormatTail;
Memo1.Clear;
end;


удачи в проектах ;-)

Присоединённый файл ( Кол-во скачиваний: 101 )
Присоединённый файл  code.zip 30,85 Kb
PM MAIL WWW ICQ   Вверх
ALeXandrK
Дата 30.7.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 342
Регистрация: 31.1.2007
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Спасибо smile 


--------------------
Богат не/ни тот, у кого много, а тот, кому хватает
PM WWW   Вверх
Yanis
Дата 30.7.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Блин, ну вот если бы в RichEdit смайлы, а тут… smile 


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Andreyzpr
Дата 1.8.2007, 19:02 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 4.2.2007
Где: Украина

Репутация: 1
Всего: 1



Yanis, а у меня нету этого компонента..
есть TRichViewEdit... нада поискать буит ;)
PM MAIL WWW ICQ   Вверх
Yanis
Дата 1.8.2007, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Цитата(Andreyzpr @  1.8.2007,  20:02 Найти цитируемый пост)
Yanis, а у меня нету этого компонента..

smile
Почему?
Обычно он сидит на закладке Win32.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
aktuba
Дата 2.8.2007, 03:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 7
Всего: 38



Цитата

Yanis, а у меня нету этого компонента..
есть TRichViewEdit... нада поискать буит ;) 


А ты в стандартных посмотри внимательнее =))))))


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Andreyzpr
Дата 9.8.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 4.2.2007
Где: Украина

Репутация: 1
Всего: 1



У меня есть вкладка Win 3.1 а не Win32
в ней нету :( :( :(
PM MAIL WWW ICQ   Вверх
Yanis
Дата 9.8.2007, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Скопируй на форму:
Код
object RichEdit1: TRichEdit
end


Это сообщение отредактировал(а) Yanis - 9.8.2007, 17:40


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
BaD_SeCt0R
Дата 9.8.2007, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: нет
Всего: 18



  TRichEdit = class(TCustomRichEdit)  // модуль ComCtrls    smile 


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Andreyzpr
Дата 10.8.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 4.2.2007
Где: Украина

Репутация: 1
Всего: 1



Yanis, [Error] Unit1.pas(19): Declaration expected but 'OBJECT' found
PM MAIL WWW ICQ   Вверх
Yanis
Дата 10.8.2007, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2937
Регистрация: 9.2.2004
Где: Москва

Репутация: 6
Всего: 111



Andreyzpr
На форму скопируй, а не в код.


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Gwire
Дата 10.8.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 7.8.2007
Где: Николаев

Репутация: 1
Всего: 4



Это из Delphi6


Присоединённый файл ( Кол-во скачиваний: 42 )
Присоединённый файл  Cap.jpg 6,89 Kb
PM MAIL   Вверх
Andreyzpr
Дата 11.8.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 4.2.2007
Где: Украина

Репутация: 1
Всего: 1



А, все, нашол....
не, того компонента вообще незнаю, не работал с ним :( :( :(
PM MAIL WWW ICQ   Вверх
darkgrey
Дата 22.1.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.1.2009

Репутация: нет
Всего: нет



одна проблема, весь текст отображается в одну строку а в том месте где должен быть переход на новую строку появляется два квадратика
я так понял это из-за того что из Memo мы отдаем текст многострочный, а в переменную 's' он присваевается однострочный
а вот как это исправить незнаю((
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0969 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.