Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизEdit Найти похожие ветки
← →
Far (2003-06-07 18:00) [0]Подскажите, как не пустить фокус в Edit, не прибегая к свойству Enable?
← →
Palladin (2003-06-07 18:46) [1]Visible:=false
← →
Song (2003-06-07 18:49) [2]Никак. А зачем такое ухищирение? Чем Enabled не нравится?
← →
Anatoly Podgoretsky (2003-06-07 18:59) [3]Спрашивается, а зачем тогда Edit если редактировать нельзя?
← →
Far (2003-06-07 19:27) [4]Если Enable:=false, то шрифт меняет цвет. А это не подходит. И для Edit уже сделал нужное форматирование, поэтому не хочу выбирать другой объект.
← →
Song (2003-06-07 20:09) [5]Почему именно фокус нельзя пускать?
← →
Navi (2003-06-08 08:54) [6]Замени TEdit на TPanel (поиграй бордером - получится вид как у TEdit).
← →
AngelSaint (2003-06-08 09:22) [7]Можна сделать так: например у тя есть 3 компонента TEdit. Не пустить фокус те нада во 2-й едит. Так вот, для него на событие OnEnter пишешь:
edit3.SetFocus;
Срабатывает быстро, что и не замечаешь что фокус передается второму едиту.
← →
REP (2003-06-08 09:49) [8]AngelSaint (08.06.03 09:22)
Ага, а если он из первого Edit"a щелкнул мышкой во второй, то попадает в третий, очень удобно... :-)
← →
Yanis (2003-06-08 10:22) [9]WM_SETFOCUS
WM_KILLFOCUS
← →
AngelSaint (2003-06-08 14:37) [10]REP © (08.06.03 09:49)
а что делать? красота требует жертв. но вабщето компонент, которому передается фокус должен определить Far
← →
Мое имя (клоны все равно суксь) (2003-06-09 09:36) [11]
> Anatoly Podgoretsky © (07.06.03 18:59)
штоп например скопировать
> Far (07.06.03 18:00)
можыт нужно просто штоп по табУ фокус не попадал, тада ТапСтоп=фалсэ (от мыша не спасет ни разу)
← →
Um (2003-06-09 14:48) [12]var
OldWinProc:pointer;
implementation
Function FunWinProc(a,b,c,d:dword):dword;stdcall;
begin
case b of
WM_LButtonDown,WM_RButtonDown,WM_LBUTTONDBLCLK:;
else result:=CallWindowProc(OldWinProc,a,b,c,d)
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
if OldWinProc<>nil then exit;
OldWinProc:=pointer(GetWindowLong(edit1.Handle,gwl_wndproc));
SetWindowLong(edit1.Handle,gwl_wndproc,integer(@FunWinProc));
end;
← →
VMcL (2003-06-09 14:51) [13]>Um (09.06.03 14:48)
1. Замечательный Result при WM_LButtonDown,WM_RButtonDown,WM_LBUTTONDBLCLK :)
2. Можно просто перекрыть WndProc (protected).
← →
han_malign (2003-06-09 14:59) [14]Перекрыть CanFocus
← →
KSergey (2003-06-09 15:06) [15]А вот подумалось: задача именно чтобы фокус не пришел, или чтобы нельзя было значение исправить? А то может проще все кнопки просто гасить в KeyDown (не, не там, сечас не помню, смотреть лень, но там, где можно написать Key = #0). Тогда фокус то придет, но значение все равно не исправить.. (ну разве кроме случая вставки из буфера - его навеное тоже можно как-то пришибить)
← →
VMcL (2003-06-09 15:08) [16]>KSergey © (09.06.03 15:06)
>чтобы нельзя было значение исправить
TEdit.ReadOnly
← →
han_malign (2003-06-09 15:11) [17]ControlStyle:=ControlStyle+[csNoStdEvents]-[csClickEvents,csDoubleClicks ,csReflector,csMenuEvents];
← →
KSergey (2003-06-09 15:27) [18]> VMcL © (09.06.03 15:08)
Хи, точно (нервно)
Ну я и балда! :((( Этож надо было такое сморозить...
← →
ocean (2003-06-10 12:20) [19]Господа, не вижу проблемы.
Var MySender : TWinControl;
Во все контролы, имеющие фокус, в OnEnter:
MySender := Sender as TWinControl;
И, наконец:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
MySender.SetFocus;
end;
← →
Um (2003-06-11 06:39) [20]procedure TForm1.FormCreate(Sender: TObject);
begin
fmedt:=edit1.WindowProc;
edit1.WindowProc:=medt;
end;
procedure TForm1.medt(var message: tmessage);
begin
if message.Msg<>wm_setfocus then
fmedt(message)
else
windows.SetFocus(message.WParam)
end;
← →
Anatoly Podgoretsky (2003-06-11 07:54) [21]Так и не объяснено - почему нельзя пускать фокус. Чувствуется что просто нужна метка, выглядящая как TEdit, но неумеет сделать такой вид и поэтому использован этот контроль.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.027 c