Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Вниз

Требуется справка по справке   Найти похожие ветки 

 
Volly   (2003-06-17 10:11) [0]

В одном help-е есть такая заметка:
Вопрос: Как вставить в нужное место Rich Text в TRichEdit?
Ответ: Вы можете послать сообщение EM_STREAMIN с параметром SFF_SELECTION методом Perform для замены текущего Selection.

А где определять этот самый Rich Text? Пробовал третьим параметром вставлять LongInt(@S), где S - это обычный string. Не помогает. Пожалуйста помогите. Thanks!

P.S. А может я не так понял смысл вопроса?


 
MBo   (2003-06-17 11:37) [1]

я вот твоего вопроса смысл не понял - ты этому хелпу удивляешься платонически или у тебя задача стоит RTF вставлять? Если второе, то достаточно внимательно прочитать хелп по EM_STREAMIN и See Also


 
Volly   (2003-06-17 12:27) [2]

Да... кажется я еще больший чайник нежели представлял раньше... :0)


 
Volly   (2003-06-17 12:52) [3]

> или у тебя задача стоит RTF вставлять
Да.

А где этот хелп отыскать? Ищу в своем дельфийском хелпе но слову em_streamin, нет результатов...


 
MBo   (2003-06-17 13:30) [4]

WinSDK Help


 
Volly   (2003-06-17 14:09) [5]


> MBo © (17.06.03 13:30)

Нашел. Прочитал. Умоляю! Напиши(те) example, а? PLEASE!!! Буду безмерно благодарен.


 
MBo   (2003-06-17 14:28) [6]

Дык... Прочитал же, вот и пиши, как в хелпе.
Пошли соообщение, указав последним параметром адрес структуры TEditStream, содержащей в себе адрес callback-функции (именно так описанной, как в richedit.pas, НЕ МЕТОД класса и stdcall)
в callback pbBuff заполняй RTF-данными.


 
Volly   (2003-06-17 14:56) [7]

Короче, либо я тупой, либо тупой Delphi, либо я полный ноль в английском языке, но в конце концов у меня получилось:

procedure TForm1.Button1Click(Sender: TObject);
var es:TEditStream;
s:string;
begin
s:="TEST";
es.pfnCallback(1,PByte(4),4,LongInt(@string(s)));
SendMessage(RichEdit1.Handle,EM_STREAMIN,SF_RTF,LongInt(@es))
end;


При попытке запуска выдает ошибку: Constant object cannot be passed as var parameter. Что делать не знаю.
Как я понял, то четвертый параметр в pfnCallBack служит для указания на переменную, указать которую я и пытался. Назначение третьего параметра мне понимается как указание на число байтов (символов) для вставки в RichEdit. Назначение первых двух параметров я не понял вообще :0(.


 
MBo   (2003-06-17 16:15) [8]

набросок


procedure TForm1.FormCreate(Sender: TObject);
begin
richedit1.Lines.Text := "111222333444";
richedit2.Lines.Text := "aaabbbccc";
richedit2.selstart := 3;
richedit2.sellength := 3;
richedit1.selstart := 3;
richedit1.sellength := 3;
richedit2.SelAttributes.Size := 16;
richedit2.SelAttributes.Color := clBlue;
end;

function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte;
cb: Longint; var pcb: Longint): DWORD; stdcall;
begin
//здесь, возможно, понадобится анализ Position и Size потока
pcb := TStream(dwCookie).Read(pbBuff^, cb);
Result := 0; // Ord(pcb <> cb);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ms: TMemoryStream;
est: TEditStream;
begin
Richedit2.PlainText := False;
ms := TMemoryStream.Create;
Richedit2.Lines.SaveToStream(ms);
ms.Position := 0;
est.dwCookie := Integer(ms);
est.dwError := 0;
est.pfnCallback := @EditStreamInCallBack;
SendMessage(RichEdit1.Handle, EM_STREAMIN, SF_RTF or SFF_SELECTION,
LPARAM(@est));
ms.Free;
end;



 
Volly   (2003-06-17 16:37) [9]

Огромное, преогромное и гиперогромное спасибо!!! :0)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.007 c
9-97469
Michael Makushev
2003-01-08 13:45
2003.06.30
DelphiX - развивается?


6-97767
Dober_m@N
2003-04-12 04:57
2003.06.30
как узнать IP если их несколько на 1 компьютере


3-97471
Ler
2003-06-04 12:14
2003.06.30
Глюк ?


3-97476
Term
2003-06-04 14:23
2003.06.30
Проблема с dbf файлом!!!


14-97825
Саня
2003-06-08 11:14
2003.06.30
Какие компоненты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский