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

Вниз

Как в RichEdit изменить курсор ввода текста на свой.   Найти похожие ветки 

 
Turkirill   (2004-08-12 13:32) [0]

Уважаемые Мастера подскажите плиз с примерчиками,
как в RichEdit изменить курсор ввода на свой.


 
Turkirill   (2004-08-12 15:09) [1]

Я нашел в DelphiWorld код для Edita,
как мне его подправить для Kol RichEdita?

unit caret1;

interface

{$IFDEF WIN32}
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls,
 Forms, Dialogs, StdCtrls;
{$ELSE}
uses
 WinTypes, WinProcs, Messages, SysUtils, Classes, Graphics,
 Controls, Forms, Dialogs, StdCtrls;
{$ENDIF}

type
 TForm1 = class(TForm)
   Edit1: TEdit;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   private
     {Private declarations}
   public
     {Public declarations}
     CaretBm: TBitmap;
     CaretBmBk: TBitmap;
     OldEditsWindowProc: Pointer;
end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

type
 {$IFDEF WIN32}
 WParameter = LongInt;
 {$ELSE}
 WParameter = Word;
 {$ENDIF}
 LParameter = LongInt;

{New windows procedure for the edit control}
function NewWindowProc(WindowHandle : hWnd;
TheMessage : WParameter; ParamW : WParameter;
ParamL : LParameter) : LongInt
{$IFDEF WIN32} stdcall; {$ELSE} ; export; {$ENDIF}
begin
 {Call the old edit controls windows procedure}
 NewWindowProc := CallWindowProc(Form1.OldEditsWindowProc,
 WindowHandle, TheMessage, ParamW, ParamL);
 if TheMessage = WM_SETFOCUS then
 begin
   CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
   ShowCaret(WindowHandle);
 end;
 if TheMessage = WM_KILLFOCUS then
 begin
   HideCaret(WindowHandle);
   DestroyCaret;
 end;
 if TheMessage = WM_KEYDOWN then
 begin
   if ParamW = VK_BACK then
     CreateCaret(WindowHandle, Form1.CaretBmBk.Handle, 0, 0)
   else
     CreateCaret(WindowHandle, Form1.CaretBm.Handle, 0, 0);
   ShowCaret(WindowHandle);
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 {Create a smiling bitmap using the wingdings font}
 CaretBm := TBitmap.Create;
 CaretBm.Canvas.Font.name := "WingDings";
 CaretBm.Canvas.Font.Height := Edit1.Font.Height;
 CaretBm.Canvas.Font.Color := clWhite;
 CaretBm.Width := CaretBm.Canvas.TextWidth("J") + 2;
 CaretBm.Height := CaretBm.Canvas.TextHeight("J") + 2;
 CaretBm.Canvas.Brush.Color := clBlue;
 CaretBm.Canvas.FillRect(Rect(0, 0, CaretBm.Width,
 CaretBm.Height));
 CaretBm.Canvas.TextOut(1, 1, "J");
 {Create a frowming bitmap using the wingdings font}
 CaretBmBk := TBitmap.Create;
 CaretBmBk.Canvas.Font.name := "WingDings";
 CaretBmBk.Canvas.Font.Height := Edit1.Font.Height;
 CaretBmBk.Canvas.Font.Color := clWhite;
 CaretBmBk.Width := CaretBmBk.Canvas.TextWidth("L") + 2;
 CaretBmBk.Height := CaretBmBk.Canvas.TextHeight("L") + 2;
 CaretBmBk.Canvas.Brush.Color := clBlue;
 CaretBmBk.Canvas.FillRect(Rect(0,0, CaretBmBk.Width,
 CaretBmBk.Height));
 CaretBmBk.Canvas.TextOut(1, 1, "L");
 {Hook the edit controls window procedure}
 OldEditsWindowProc := Pointer(SetWindowLong(Edit1.Handle,
 GWL_WNDPROC, LongInt(@NewWindowProc)));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 {Unhook the edit controls window procedure and clean up}
 SetWindowLong(Edit1.Handle,GWL_WNDPROC,
 LongInt(OldEditsWindowProc));
 CaretBm.Free;
 CaretBmBk.Free;
end;

end.


 
Gandalf ©   (2004-08-17 23:00) [2]

Берешь и правишь. Или хочешь чтоб все за тебя сделали?



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

Форум: "KOL";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.034 c
14-1108885021
boriskb
2005-02-20 10:37
2005.03.13
Ужастик


1-1109491767
tazik
2005-02-27 11:09
2005.03.13
Кто может, подкиньте, пожалуйста, DirectShow.dcu!


1-1109678219
Doxygen
2005-03-01 14:56
2005.03.13
Файл или директория


3-1108026505
Brain Force
2005-02-10 12:08
2005.03.13
Получение результатов выполнения запроса в список


14-1108842751
Hmm
2005-02-19 22:52
2005.03.13
Необходима инфа по Oracle + Delphi...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский