Zablokowanie przewijania memo

0

Witajcie!

Jest sobie MEMO a w nim powiedzmy 10 pozycji. Memo jednak jest na tyle niskie, że wszystkie te 10 pozycji nie są na nim widoczne. W memo nie ma scrollbarów. Wiadomo, że jeśli użytkownik będzie chciał zobaczyć wszystkie pozycje kliknie sobie na memo i przesunie kursor w dół strzałką na klawiaturze i po kłopocie.
Pytanie może nietypowe - czy jest możliwość zablokowania memo w ten sposób, żeby nie można było przewinąć sobie listy jego pozycji? (disabled nie wchodzi w grę.)

0

obsluz zdarzenie keyup

procedure TForm2.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if key = VK_DOWN then key := 0;

end;
0

Ok, z klawiaturą działa, ale jak przytrzymam lewy przycisk myszy i przesunę w dół to cały tekst mi się zaznaczy i tym samym przewinie w dół. Znajdzie się i na to rozwiązanie?

0

Jak nie chcesz tworzyć swojego rozszerzenia komponentu TMemo to Subclassing czyli coś takiego:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    pOldMemoProc: Pointer;
    pNewMemoProc: Pointer;
    procedure MemoWndProc(var Msg: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}


procedure TForm1.MemoWndProc(var Msg: TMessage);
begin
  if (Msg.Msg = WM_KEYDOWN) or (Msg.Msg = WM_LBUTTONDOWN) then
    Msg.Result:= 0
  else
    Msg.Result:= CallWindowProc(pOldMemoProc, Memo1.Handle, Msg.Msg,
      Msg.wParam, Msg.lParam);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  pNewMemoProc:= MakeObjectInstance(MemoWndProc);
  pOldMemoProc:= Pointer(SetWindowLong(Memo1.Handle, GWL_WNDPROC, Integer(pNewMemoProc)));
end;

end.

EDIT//To zablokuje przewijanie myszką i klawiaturą

0

:| dla mnie bez sensu... rozwiazanie takie prowizoryczne.
nie latwiej po prostu trzymac dane w jakiejs globalnej zmiennej TStringList i w razie potrzeby wyswietlac w memo odpowiednie linie?
no, chyba ze to ma jakies specjalne przeznaczenie ;]

1 użytkowników online, w tym zalogowanych: 0, gości: 1