Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.10.2011, 10:48
plt plt вне форума
Прохожий
 
Регистрация: 26.09.2011
Сообщения: 22
Репутация: 10
По умолчанию TEdit. Изменение стандартных возможностей/параметров

Здравствуйте, не знаю как еще более точно назвать тему, но суть в том, что возникла необходимость довольно-таки координально изменить внешний вид и поведение компонента TEdit.
В процессе столкнулся с несколькими вещами, на которые самостоятельно найти ответа не могу. Прошу вашего совета!
1. Реально ли изменить вид курсора при наведении на определенную область TEdit? Есть у меня на краю контрола область, например, 20 на 20 пикселей, как заставить курсор стать дефолтным при наведении на указанную область?
2. Реально ли ограничить отображение текста, вводимого в edit на определенную длину. например, если длина контрола 120, то можно ли сделать так, чтобы прокрутка текста начиналась не после того, как текст займет все 120 точек окна, а после 100 точек?
Ответить с цитированием
  #2  
Старый 19.10.2011, 11:26
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

1. Изменить вид курсора для TEdit несложно, там для этого есть свойство Cursor. Изменять вид курсора в зависимости от положения в самом TEdit уже сложнее, но тоже можно:
Код:
procedure TForm1.Edit1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if (X in [Edit1.ClientRect.Left..Edit1.ClientRect.Left+20]) and
    (Y in [Edit1.ClientRect.Top..Edit1.ClientRect.Top+20])
  then Edit1.Cursor := crHandPoint
  else Edit1.Cursor := crDefault
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 19.10.2011, 11:29
t116 t116 вне форума
Новичок
 
Регистрация: 29.06.2011
Адрес: Луганск
Сообщения: 92
Версия Delphi: Delphi7
Репутация: выкл
По умолчанию

За ограничение длины вводимого текста отвечает свойство MaxLength
Ответить с цитированием
  #4  
Старый 19.10.2011, 11:31
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

или сделать borderstyle-none и расположить на image в котором нарисовать чо хочешь
Ответить с цитированием
  #5  
Старый 19.10.2011, 11:33
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Вообще делают несколько проще. К стандартному едиту еще прицепляют кнопку и уже работают с парой контролов
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #6  
Старый 19.10.2011, 12:24
plt plt вне форума
Прохожий
 
Регистрация: 26.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

Спасибо за ответы!!

Страдалецъ, а что значит "прицепить к эдиту"? Создать компонент, на котором расположить эдит и кнопку?

Pyro, в моем случае вариант составного компонента непригоден, за основу берется один компонент, в данном случае tedit, и переделывается
Ответить с цитированием
  #7  
Старый 19.10.2011, 12:27
t116 t116 вне форума
Новичок
 
Регистрация: 29.06.2011
Адрес: Луганск
Сообщения: 92
Версия Delphi: Delphi7
Репутация: выкл
По умолчанию

Цитата:
Страдалецъ, а что значит "прицепить к эдиту"? Создать компонент, на котором расположить эдит и кнопку?
Положить кнопку и кодом привязать ее к Edit
Ответить с цитированием
  #8  
Старый 19.10.2011, 12:44
plt plt вне форума
Прохожий
 
Регистрация: 26.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

t116, про MaxLength я знаю, но это не то. Длина текста у меня не ограничена, ограничена область отображения.
Ответить с цитированием
  #9  
Старый 19.10.2011, 12:51
plt plt вне форума
Прохожий
 
Регистрация: 26.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

t116,
Код:
Положить кнопку и кодом привязать ее к Edit
подобную вещь возможно сделать внутри компонента?
Ответить с цитированием
  #10  
Старый 19.10.2011, 13:04
t116 t116 вне форума
Новичок
 
Регистрация: 29.06.2011
Адрес: Луганск
Сообщения: 92
Версия Delphi: Delphi7
Репутация: выкл
По умолчанию

Цитата:
Реально ли ограничить отображение текста, вводимого в edit на определенную длину. например, если длина контрола 120, то можно ли сделать так, чтобы прокрутка текста начиналась не после того, как текст займет все 120 точек окна, а после 100 точек?
Может в вашем случае лучше использовать для этого Memo?
Ответить с цитированием
  #11  
Старый 19.10.2011, 13:11
plt plt вне форума
Прохожий
 
Регистрация: 26.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

Цитата:
Сообщение от t116
Может в вашем случае лучше использовать для этого Memo?
я думал об этом, если бы это был мемо, то тогда бы я смог ограничить отображение текста

интересно, получится ли переопределив Createparams, сделать из singleline multiline?
Ответить с цитированием
  #12  
Старый 19.10.2011, 14:27
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Не пойму почему нельзя сделать составной компонент? Комбобокс пример такого составного компонента. Вполне удобно. Вы что в итоге хотите получить-то? Картинку хотя-бы покажите, что должно получится.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #13  
Старый 19.10.2011, 14:36
plt plt вне форума
Прохожий
 
Регистрация: 26.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

я делаю поле для ввода чисел со встроенным UpDown.
поле для ввода чисел уже готово, сейчас прикручиваю туда кнопки.

делать составной компонент нехорошо в плане производительности. перед тем как начать делать свои компоненты просматривали платные библиотеки, иногда доходило до абсурда - компонент медленно работал на i5. и вот даже в этом случае, пусть это маленький компонент, но если их на форме будет 50 штук, а такое вполне допустимо, то на старых компьютерах могут быть проблемы с работой.
Ответить с цитированием
  #14  
Старый 19.10.2011, 14:39
plt plt вне форума
Прохожий
 
Регистрация: 26.09.2011
Сообщения: 22
Репутация: 10
По умолчанию

сейчас застопорился на том, как повоторить реализацию свойства WrapText у TMemo. Не пойму какой стиль окна за это отвечает, пробую ES_AUTOHSCROLL - не срабатывает =\
Ответить с цитированием
  #15  
Старый 19.10.2011, 14:39
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Цитата:
Сообщение от plt
делать составной компонент нехорошо в плане производительности.
ну так это полность от разработчика зависит. можно сделать что б и на Intel 80486 летало)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter