![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как ограничить Memo ? [D5, Win95/98, WinXP]
Vinil © (2004-06-02 02:57:00)Прошу помощи.
Как ограничить возможности Memo ?
Проблема - пытаюсь сделать компонент имитатор консоли.
Требуется - чтобы имеющийся текст в Memo невозможно было бы
выделить мышкой, удалить , скопировать. Невозможность выделения
текста клавишами с нажатым Шифтом.
Что уже делал - пробовал создать новый Memo, но у него
предок Edit. завяз по самые нехочу. Нуждаюсь в совете как эту
проблему разрешить малой кровью.
Заранее благодарен ...
Igorek (2004-06-15 18:58:00) [1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Console: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
I: Integer;
procedure TForm1.Button1Click(Sender: TObject);
procedure AddCommand(const Command: string);
begin
with Console do
Caption := Caption + '>' + Command + #13;
end;
begin
AddCommand('command' + IntToStr(I));
AddCommand('command' + IntToStr(I) + ' run result');
Inc(I);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with Console do
begin
Layout := tlBottom;
Color := clHighlightText;
end;
end;
end.
Rouse_ (2004-06-14 13:34:00) [2]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TROMemo = class(TMemo)
private
procedure WMCut(var Message: TMessage); message WM_CUT;
procedure WMCopy(var Message: TMessage); message WM_COPY;
procedure WMGetText(var Message: TMessage); message WM_GETTEXT;
procedure WMContextMenu(var Message: TWMContextMenu);
message WM_CONTEXTMENU;
public
constructor Create(AOvner: TComponent); override;
end;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TROMemo }
constructor TROMemo.Create(AOvner: TComponent);
begin
inherited;
ReadOnly := True;
end;
procedure TROMemo.WMContextMenu(var Message: TWMContextMenu);
begin
Message.Result := 0;
end;
procedure TROMemo.WMCopy(var Message: TMessage);
begin
Message.Result := 0;
end;
procedure TROMemo.WMCut(var Message: TMessage);
begin
Message.Result := 0;
end;
procedure TROMemo.WMGetText(var Message: TMessage);
begin
Message.Result := 0;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
ROMemo: TROMemo;
begin
ROMemo := TROMemo.Create(Self);
ROMemo.Parent := Self;
ROMemo.Text := 'Попробуй получить этот текст :)';
end;
end.
Отключаем все вплоть до контектстного меню, ну за исключением выделения :)
Для этого см > [2] Clickmaker © (02.06.04 13:21)+ WM_LBUTTONDOWN
Anatoly Podgoretsky (2004-06-14 09:03:00) [3]Рисуешь сам на канве, а текст хранишь отдельно и никому не отдаешь.
Clickmaker (2004-06-10 10:59:00) [4]
> Agent13 © (09.06.04 17:31) [5]
> Ну чтобы удалить нельзя было, это я понимаю, но копирование
> запрещать зачем?
Секретная информация :)
Agent13 (2004-06-09 17:31:00) [5]Ну чтобы удалить нельзя было, это я понимаю, но копирование запрещать зачем?
Mim1 (2004-06-08 02:14:00) [6]В listbox'е вродь и не выделить нииизя ни скопировать.
sniknik (2004-06-08 00:23:00) [7]> проблему разрешить малой кровью.
вызвать в компоненте cmd или command в зависимости от винды.
> Требуется - чтобы имеющийся текст в Memo невозможно было бы
выделить мышкой, удалить , скопировать. Невозможность выделения
текста клавишами с нажатым Шифтом.
но в консоли все это возможно, кроме удаления не из строки ввода.
для 2000х, мышкой выделяется, копируется (ctrl+c) или из системного меню.
выделение с шифтом после команды "выделить" из того же системного меню.
Clickmaker (2004-06-02 13:21:00) [8]насчет копирования - перехватить WM_COPY (WM_CUT)
Невозможность выделения текста клавишами с нажатым Шифтом - перехватывать WM_KEYDOWN / OnKeyDown
Sun bittern (2004-06-02 07:06:00) [9]Требуется - чтобы имеющийся текст в Memo невозможно было бы
выделить мышкой, удалить , скопировать. Невозможность выделения
текста клавишами с нажатым Шифтом.
Попробовать поюзать SelLength
удалить
ReadOnly := true