Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.06;
Скачать: CL | DM;

Вниз

Как ограничить Memo ?   Найти похожие ветки 

 
Vinil   (2004-06-02 02:57) [0]

Прошу помощи.
Как ограничить возможности Memo ?
Проблема - пытаюсь сделать компонент имитатор консоли.
Требуется - чтобы имеющийся текст в Memo невозможно было бы
выделить мышкой, удалить , скопировать. Невозможность выделения
текста клавишами с нажатым Шифтом.
Что уже делал - пробовал создать новый Memo, но у него
предок Edit. завяз по самые нехочу. Нуждаюсь в совете как эту
проблему разрешить малой кровью.
Заранее благодарен ...


 
Sun bittern ©   (2004-06-02 07:06) [1]

Требуется - чтобы имеющийся текст в Memo невозможно было бы
выделить мышкой, удалить , скопировать. Невозможность выделения
текста клавишами с нажатым Шифтом.

Попробовать поюзать SelLength

удалить

ReadOnly := true


 
Clickmaker ©   (2004-06-02 13:21) [2]

насчет копирования - перехватить WM_COPY (WM_CUT)
Невозможность выделения текста клавишами с нажатым Шифтом - перехватывать WM_KEYDOWN / OnKeyDown


 
sniknik ©   (2004-06-08 00:23) [3]

> проблему разрешить малой кровью.
вызвать в компоненте cmd или command в зависимости от винды.

> Требуется - чтобы имеющийся текст в Memo невозможно было бы
выделить мышкой, удалить , скопировать. Невозможность выделения
текста клавишами с нажатым Шифтом.
но в консоли все это возможно, кроме удаления не из строки ввода.
для 2000х, мышкой выделяется, копируется (ctrl+c) или из системного меню.
выделение с шифтом после команды "выделить"  из того же системного меню.


 
Mim1 ©   (2004-06-08 02:14) [4]

В listbox"е вродь и не выделить нииизя ни скопировать.


 
Agent13 ©   (2004-06-09 17:31) [5]

Ну чтобы удалить нельзя было, это я понимаю, но копирование запрещать зачем?


 
Clickmaker ©   (2004-06-10 10:59) [6]


> Agent13 ©   (09.06.04 17:31) [5]
> Ну чтобы удалить нельзя было, это я понимаю, но копирование
> запрещать зачем?

Секретная информация :)


 
Anatoly Podgoretsky ©   (2004-06-14 09:03) [7]

Рисуешь сам на канве, а текст хранишь отдельно и никому не отдаешь.


 
Rouse_ ©   (2004-06-14 13:34) [8]

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


 
Igorek ©   (2004-06-15 18:58) [9]

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.



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

Текущий архив: 2005.06.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
10-1093613582
Reflex
2004-08-27 17:33
2005.06.06
вопрос по OleAutomation


1-1116501791
Shredder
2005-05-19 15:23
2005.06.06
Преобразование: строка -> число


1-1116585966
Ustas
2005-05-20 14:46
2005.06.06
Прорисовка фона...


3-1114444902
Jungle Forever!
2005-04-25 20:01
2005.06.06
DBGrid и unixtime


6-1111432519
Qwertyk
2005-03-21 22:15
2005.06.06
MAC from IP