Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Edit - выделение [D7, WinXP]


Earth ©   (2005-06-13 19:46:00) 

Как запретить выделение текста в Edit?


-=XP=-   (2005-06-15 09:53:00) [1]

А почему просто не перекрыть WndProc?

Как один из вариантов.
Причем, первый из вариантов.

P.S. С рабочего места, да в такое время...


Юрий Зотов   (2005-06-15 09:27:00) [2]

> -=XP=- ©   (14.06.05 22:19) [15]

А почему просто не перекрыть WndProc?


-=XP=-   (2005-06-14 22:19:00) [3]

unit uUnselEdit;

interface

uses
 Windows, Messages, StdCtrls, Classes, Controls;

type
 TNonSelEdit = class(TEdit)
 private
   OldWndProc: TWndMethod;
   procedure AddWndProc(var Message: TMessage);
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents('Standard', [TNonSelEdit]);
end;

{ TNonSelEdit }

procedure TNonSelEdit.AddWndProc(var Message: TMessage);
var
SS, SE: integer;
begin
 if (Message.Msg <> EM_SETSEL) and (Message.Msg <> EM_GETSEL) and (SelLength > 0) then
   SelLength := 0;
 OldWndProc(Message);
end;

constructor TNonSelEdit.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 OldWndProc := WindowProc;
 WindowProc := AddWndProc;
end;

destructor TNonSelEdit.Destroy;
begin
 WindowProc := OldWndProc; //Х.З.
 inherited;
end;

end.


P.S. Когда Вас будут бить пользователи - не кричите "Помогите!". А то прибегу - и помогу. Пользователям.


Earth   (2005-06-14 22:13:00) [4]

Хорошо, но я это обошёл, если выделять чень быстро, то таймер не помогает!


-=XP=-   (2005-06-14 20:14:00) [5]

Вот же неугомонный изобретатель велосипеда!

По таймеру, или в оконной процедуре (тут придется повозиться):

if (<Edit.>SelLength > 0) then <Edit.>SelLength := 0;


Earth   (2005-06-14 20:03:00) [6]

Это всё не то, да и не по теме!


-=XP=-   (2005-06-14 16:13:00) [7]

OnChange - нельзя т.к. записывается имя нажатого симфола!

Как насчет Ctrl+V, Shift+Ins?


Earth   (2005-06-14 16:09:00) [8]

OnChange - нельзя т.к. записывается имя нажатого симфола!
Кто ни будь знает как программно решить мою задачу?


ЮЮ   (2005-06-14 11:57:00) [9]

>Пользователь вводит пароль, который регистрируется в окне статистики

После каждого нажатия клавиши?
Тогда уж регистрирацию в окне статистики делай в обработчике OnChange, т.е. при каждом изменении содержимого Edit-a :)


-=XP=-   (2005-06-14 11:52:00) [10]

Вы это о чем?


Earth   (2005-06-14 11:30:00) [11]

Ситуация такая: Пользователь вводит пароль, который регистрируется в окне статистики, а если пользователь выделяет пароль а затем печатает новый, то в окне статистики ничего о выделении не отображается, пояэтому я считаю, что выделение нужно запретить! А вот как это сделать, не знаю...
Если кто знает помогите


Просто Джо   (2005-06-13 22:22:00) [12]

Раз уж тут варианты сыплются как из ведра, кину и я свой: Canvas.TextOut в TImage :^)


NightStranger   (2005-06-13 22:21:00) [13]

Memo c ReadOnly=true;
Edit c Enabled=false;
Да и действительно... Лейбл
;)


-=XP=-   (2005-06-13 20:27:00) [14]

У меня программа, для защиты компа, и нужен код для запрета выделение!

Защиты от пользователя? :)))

Используйте TLabel.


Ученик   (2005-06-13 20:10:00) [15]

>Earth   (13.06.05 20:07) [2]
Этот текст не надо будет переслать Вам, например, по электронной почте ?


Earth   (2005-06-13 20:07:00) [16]

У меня программа, для защиты компа, и нужен код для запрета выделение!


Anatoly Podgoretsky   (2005-06-13 19:50:00) [17]

Оно мешает, мне нет и даже помогает подумать


Наверх

Титульная страница Поиск, карта сайта Написать письмо