Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DoubleClick в Edit 
V
    Опции темы
Keeper89
Дата 21.8.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Доброго времени суток!

В стандартном Edit'е имеется событие двойного щелчка по умолчанию, при этом выделяется некоторый участок текста. 
Можно ли сделать так, чтобы текст не выделялся, каретка оставалась в той же позиции (не перескакивала для выделения текста), а событие отлавливалось? Пробовал сбрасывать SelStart и SelLength в теле процедуры - не помогло.

Спасибо.

Это сообщение отредактировал(а) Keeper89 - 21.8.2009, 14:18


--------------------
PM MAIL WWW   Вверх
Rrader
  Дата 21.8.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Отключить выделение:
Код

unit Unit1;

interface

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

type
  TEdit = class(StdCtrls.TEdit)
  protected
    procedure WndProc(var Msg: TMessage); override;
  end;

  TForm1 = class(TForm)
    Edit1: TEdit;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TEdit }

procedure TEdit.WndProc(var Msg: TMessage);
begin
  if Msg.Msg <> WM_LBUTTONDBLCLK then
    inherited
  else
    (Parent as TForm).Caption := IntToStr(GetTickCount);
end;

end.



--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Keeper89
Дата 21.8.2009, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Rrader, я тоже об этом подумывал smile, твой вариант переделал вот так (вроде бы эквивалентно):
Код

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TEdit = class(StdCtrls.TEdit)
  protected
    procedure WndProc(var Msg: TMessage); message WM_LBUTTONDBLCLK;
  end;
  TForm2 = class(TForm)
    Edit1: TEdit;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

{ TEdit }

procedure TEdit.WndProc(var Msg: TMessage);
begin
  //

end;

end.

Спасибо!

А можно ли таким же образом создать класс типа TEditX, который будет обладать этим свойством? Так например, часть компонентов можно будет оставить как стандартные TEdit, а часть как TEditX.

И второй вопрос, не буду создавать для этого отдельную тему: можно ли разделить события клика и двойного клика? (Для Эдита при двойном щелчке у меня сначала срабатывает событие для щелчка, а потом уже для двойного).

Это сообщение отредактировал(а) Keeper89 - 21.8.2009, 19:18


--------------------
PM MAIL WWW   Вверх
Rrader
  Дата 21.8.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Цитата(Keeper89 @  22.8.2009,  00:39 Найти цитируемый пост)
А можно ли таким же образом создать класс типа TEditX

Нельзя. В любом случае ломаешь один класс (TEdit), а в нем можешь фильтровать контролы по желаемому признаку (имя, координаты/размеры, размер шрифта и т.п.)

Цитата(Keeper89 @  22.8.2009,  00:39 Найти цитируемый пост)
И второй вопрос, не буду создавать для этого отдельную тему: можно ли разделить события клика и двойного клика? (Для Эдита при двойном щелчке у меня сначала срабатывает событие для щелчка, а потом уже для двойного).

В замешательстве. А как надо? Что должно сработать, а что нет? События логически связаны...


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Keeper89
Дата 21.8.2009, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Цитата(Rrader @  21.8.2009,  20:54 Найти цитируемый пост)
В замешательстве. А как надо? Что должно сработать, а что нет? События логически связаны... 

Просто хотелось "разделить" события - при щелчке выполняется одно, при двойном другое.


--------------------
PM MAIL WWW   Вверх
Rrader
  Дата 21.8.2009, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Inspired =)
***


Профиль
Группа: Экс. модератор
Сообщений: 1535
Регистрация: 7.5.2005

Репутация: 70
Всего: 191



Двойной клик рождается из одинарного smile Что могу предложить - отказаться от этой идеи либо по одинарному щелчку давать время на отлов следующего (время двойного клика всегда можно узнать). Тогда ты получишь некоторую задержку при одинарном клике, сам понимаешь smile 


--------------------
Let's do this quickly!
Rest in peace, Vit!
PM MAIL Skype   Вверх
Keeper89
Дата 21.8.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Ясно smile Отсюда вопрос - как лучше определять это время?


--------------------
PM MAIL WWW   Вверх
Keeper89
Дата 23.8.2009, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



up


--------------------
PM MAIL WWW   Вверх
volvo877
Дата 23.8.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 14
Всего: 116



Keeper89, тут был:
http://forum.vingrad.ru/index.php?showtopi...t&p=1213939 ? (только не WM_NOREMOVE, а PM_NOREMOVE)
PM MAIL   Вверх
Keeper89
Дата 23.8.2009, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



volvo877, спасибо!


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0992 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.