Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > курсор в Memo


Автор: artsb 27.5.2008, 21:00
Всем привет.

На форме есть несколько Memo со свойством ReadOnly=true.
Вопрос в том, как можно скрыть курсор навсегда. А то, от него всё равно толку нет. Только мигает и мигает... smile

Автор: Palladin 27.5.2008, 21:28
Сделай его белымsmile или под цвет фона мемоsmile

Автор: Rrader 28.5.2008, 02:46
Enabled = False не подойдет? smile 

Автор: THandle 28.5.2008, 10:27
Код

HideCaret(Memo1->Handle);


Не пойдет такое?

Добавлено через 3 минуты и 29 секунд
Поставить это например в OnMouseDown этого Memo... 

Автор: mrbrooks 28.5.2008, 11:03
Цитата(THandle @ 28.5.2008,  10:27)
Код

HideCaret(Memo1->Handle);


Не пойдет такое?

Добавлено @ 10:31
Поставить это например в OnMouseDown этого Memo...

Очень даже пойдет имхо. 

Я когда такую фишку делал еще добовлял 
Код

HideCaret(Memo1->Handle);

при создании формы. Все должно 100% работать. 

Автор: THandle 28.5.2008, 11:21
Цитата(mrbrooks @  28.5.2008,  12:03 Найти цитируемый пост)
Я когда такую фишку делал еще добовлял 
Выделить всёкод C++ Builder
1:
    
HideCaret(Memo1->Handle);

при создании формы. Все должно 100% работать.  



Можно просто кому то другому фокус отдавать и можно без этого будет обойтись smile 

Автор: artsb 28.5.2008, 19:27
Цитата(THandle @  28.5.2008,  10:27 Найти цитируемый пост)

Код

HideCaret(Memo1->Handle);

Не пойдет такое?

К сожалению нет. Если нажать в мемо правой кнопкой мыши он опять появляется. А хотелось бы его вообще скрыть. Навсегда...

Добавлено через 3 минуты и 27 секунд
Цитата(Rrader @  28.5.2008,  02:46 Найти цитируемый пост)
Enabled = False не подойдет? 

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

Добавлено через 6 минут и 25 секунд
Хотя это не по теме, такой вопрос:
Как отключить Popup меню у мемо? Навсегда smile

Автор: THandle 28.5.2008, 19:34
artsb, не понял? как это он появляется? У меня нет C++Builder, только Делфи, но такой вот код отлично работает и курсор ни при каких обстоятельствах не появляется:

Код

procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  HideCaret(Memo1.Handle);
end;

Автор: artsb 28.5.2008, 19:40
Цитата(THandle @  28.5.2008,  19:34 Найти цитируемый пост)
курсор ни при каких обстоятельствах не появляется:

Я тоже так думал, и уже обрадовался. Но вот нажал правой кнопкой мыши в тексте, потом левой где-нибудь в другом месте (вне мемо) и он появился.

Автор: mrbrooks 28.5.2008, 19:43
Конечно жесткачь но тогда отловить все сообщения на мемо и зафигачить предложенное THandle - хотя дело геморное...

Автор: THandle 28.5.2008, 19:53
artsb, так... поспешил...

Так как больше методов не знаю, буду этот добивать. В WindowProc будем это делать, то есть при всех сообщениях.

Вот код на Делфи, если нужны пояснения что делает(хотя врядли), то скажу.

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    FOldMemoProc : TWndMethod;
    procedure MemoProc(var Message : TMessage);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FOldMemoProc := Memo1.WindowProc;
  Memo1.WindowProc := MemoProc;
end;

procedure TForm1.MemoProc(var Message: TMessage);
begin
  FOldMemoProc(Message);
  HideCaret(Memo1.Handle);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Memo1.WindowProc := FOldMemoProc;
end;

end.

Автор: artsb 28.5.2008, 20:01
Может если прервать открытие меню всё будет ок. Но как это сделать?

Добавлено через 1 минуту и 50 секунд
THandle, ок, попробую.

Автор: Palladin 28.5.2008, 21:28
курсор под цвет фона да и [censored 6] smile чего паришся то smile 

Автор: THandle 28.5.2008, 21:32
Palladin, а покажи ка как это делаешь... я что то даже не знаю smile 


artsb, как там мой вариант? у меня работает вроде smile 

Автор: Palladin 29.5.2008, 10:14
Эээ smile  Вообщем кликаешь по мемо, в инспекторе объектов можно задать(вроде как, щас проверюsmile ) два типа курсоров один при наведении другой при фокусе, щас гляну отпишу подробнее smile

Добавлено через 6 минут и 58 секунд
Вообщем да, моей вариант не прокатит smile smile

Автор: mrbrooks 29.5.2008, 10:28
Цитата(Palladin @ 29.5.2008,  10:14)
 smile 
Добавлено @ 10:21
Вообщем да, моей вариант не прокатит smile smile

 smile  
Блин а я себе мозг ломал думал как же ты цвет курсора поменял... smile  

Автор: Palladin 29.5.2008, 11:12
 smile эт было просто предположение smile  не все предположения верны smile  smile 

Автор: artsb 29.5.2008, 11:15
Цитата(THandle @  28.5.2008,  21:32 Найти цитируемый пост)
artsb, как там мой вариант? у меня работает вроде

Работает. Спасибо. Жалко только то, что нужно для каждого мемо свой виндовпрок писать :(

Автор: mrbrooks 29.5.2008, 11:23
Цитата(artsb @ 29.5.2008,  11:15)
Цитата(THandle @  28.5.2008,  21:32 Найти цитируемый пост)
artsb, как там мой вариант? у меня работает вроде

Работает. Спасибо. Жалко только то, что нужно для каждого мемо свой виндовпрок писать :(

Создай потомка от мемо с одной виндовпрок если влом писать всем  smile 

Автор: artsb 30.5.2008, 21:08
Цитата(mrbrooks @  29.5.2008,  11:23 Найти цитируемый пост)
Создай потомка от мемо с одной виндовпрок если влом писать всем 

Спасибо. Попробую как-нибудь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)