Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Внизкак нормально скрыть курсор в TEdit? (hidecaret) Найти похожие ветки
← →
GreatMaster (2002-09-26 09:46) [0]1. Замечательная функция hidecaret не работает на OnEnter.
2. Курсор снова появляется при потере-получении контролом фокуса.
Вобщем надо чтобы как в свойстве - 1 раз указал "не показывать" он и не показывает.
← →
Anatoly Podgoretsky (2002-09-26 09:53) [1]TEdit это как бы для редактирования и как то странно редактировать без каретки курсора
← →
GreatMaster (2002-09-26 10:30) [2]Мне нужно перемещаться по едитам например стрелками (изменяя цвет едита в котором фокус), а при нажатии скажем ентера - появляется курсор и вперёд. Ну типа как в гриде, только гриды не подойдут - нужно именно для едитовых контролов.
← →
liho26 (2002-09-26 12:43) [3]В обработчике формы OnPaint напиши следующее
procedure TForm1.FormPaint(Sender: TObject);
begin
case Edit1.Focused of
true: HideCaret(Edit1.Handle);
false: HideCaret(Edit1.Handle);
end;
case Edit2.Focused of
true: HideCaret(Edit2.Handle);
false: HideCaret(Edit2.Handle);
end;
end;
При отображении формы вывод каретки будет подавляться. А дальше уже сам давай...! ))
← →
liho26 (2002-09-26 12:45) [4]Забыл сказать. Помести на форму два едита Edit1 и Edit2 Вот, вроде все...
← →
GreatMaster (2002-09-27 06:17) [5]при отображении может и работает, но если кинуть на форму 2 едита и перемещаться м/у ними табом (WM_NEXTDLGCTL) - не работает.
← →
GreatMaster (2002-09-27 12:39) [6]up
← →
. (2002-09-27 12:41) [7]property>tabstop?
← →
qube (2002-09-27 12:45) [8]А в чем секрет такой конструкции:
case Edit2.Focused of
true: HideCaret(Edit2.Handle);
false: HideCaret(Edit2.Handle);
end;
← →
Юрий Зотов (2002-09-27 14:26) [9]> А в чем секрет такой конструкции:
> case Edit2.Focused of
> true: HideCaret(Edit2.Handle);
> false: HideCaret(Edit2.Handle);
> end;
Да, мне тоже понравилось. И до секрета я тоже не додумался. Так и не понял, не только в чем секрет, а даже и в чем вообще смысл такого "кода". Уж не говоря о кумулятивности HideCaret.
> GreatMaster © (26.09.02 10:30)
> Мне нужно перемещаться по едитам например стрелками (изменяя
> цвет едита в котором фокус),
Ну так ловите нажатия стрелок и Enter - и перемещайтесь себе на здоровье. При чем тут каретка?
KeyPreview + OnKeyDown + FindNextControl + SetFocus + Color.
← →
GreatMaster (2002-09-27 14:42) [10]qube © (27.09.02 12:45)
А в чем секрет такой конструкции:
case Edit2.Focused of
true: HideCaret(Edit2.Handle);
false: HideCaret(Edit2.Handle);
end;
а это та же
HideCaret(Edit2.Handle);
только написанная профессионалом гыгыгы, а нам, любителям, сей хитрости кода не постичь )) он ещё забыл сначала обосновать возможность существования хотябы одного однозначного Edit2 в пространстве гыгыгы
., да какой табстоп? говорю же чтобы фокус ПОЛУЧАЛ, но курсора не видно.
← →
GreatMaster (2002-09-27 14:53) [11]Юрий Зотов © (27.09.02 14:26)
>Ну так ловите нажатия стрелок и Enter - и перемещайтесь себе на >здоровье. При чем тут каретка?
>KeyPreview + OnKeyDown + FindNextControl + SetFocus + Color.
Я бы так и делал, будь у меня на форме пара едитов, но дело в том что их много, есть ещё не только едиты и всё это дело сидит на панели которая в скролбоксе. Дык вот гораздо удобнее и эстетичнее пользоваться такими штуками как ActiveControl, Perform(WM_NEXTDLGCTL, 0{-1}, 0) и автоматическим скроллингом, чем ручками запоминать какой контрол у нас сейчас выделен, целиком ли он виден и какой следующий/предыдущий контрол выделять при нажатии tab/shift+tab. Можно конечно всё это делать каретку и не скрывая, но тогда может уже и програмку не писать? ведь в конце концов если очень надо, то всё можно ввести и в экселе, да и нотепад парни не зря же старались делали ))
ХОЧУ СКРЫТЬ КАРЕТКУУУУУУ )
← →
TTCustomDelphiMaster (2002-09-27 16:21) [12]const
WM_HideEditCaret = WM_User+1;
_HC = 0;
_SC = 1;
type
TForm1 = class(TForm)
...
procedure WMHideEditCaret(var Msg: TMessage); message WM_HideEditCaret;
...
procedure TForm1.WMHideEditCaret(var Msg: TMessage);
begin
HideCaret(Msg.WParam);
end;
procedure TForm1.Edit1Enter(Sender: TObject);
begin
postmessage(Handle, WM_HideEditCaret, TEdit(Sender).Handle, 0);
Tag := _HC;
end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Tag = _HC) then
if ((Key = VK_Return) or (Key = VK_Tab)) then
begin
Tag := _SC;
ShowCaret(TEdit(Sender).Handle);
end
else
Key := 0;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Tag = _HC) then
Key := #0;
end;
← →
GreatMaster (2002-09-30 14:33) [13]Во, другое дело! Вот это работает.
Спасибо тебе, братуха TTCustomDelphiMaster!
Сразу видно - матёрый человечище ;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c