Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

InplaceEditor   Найти похожие ветки 

 
alexnmsk   (2003-12-04 14:55) [0]

Как отловить момент закрытия InplaceEditor в StringGrid и переноса информации из редактора в ячейку таблицы.


 
Amoeba ©   (2003-12-04 15:28) [1]

Придется писать свой компонент.


 
Dimka Maslov ©   (2003-12-04 15:29) [2]

А в нём отлавливать сообщение WM_KILLFOCUS от InplaceEditora


 
Юрий Федоров ©   (2003-12-04 16:12) [3]

а OnSetEditText не подходит ?


 
Danilka ©   (2003-12-04 16:14) [4]

если не ошибаюсь, в момент закрытия едитора ничего в грид не переносится.


 
Amoeba ©   (2003-12-04 16:25) [5]

При закрытии InpalaceEditor он только делается невидимым. Реальная же запись в Cells производится в SetEditText.


 
alexnmsk   (2003-12-04 16:31) [6]

OnSetEditText - не подходит по причине его вызова при наборе каждого символа, а нужно проверять по окончании. Если в нем проверять свойство EditorMode=true, то если в режиме редактирования щелкнуть мышью по другой ячейке, EditorMode=false и обработчик не вызовется


 
Amoeba ©   (2003-12-04 16:33) [7]

Уже было сказано, что надо писать собственный компонент.


 
alexnmsk   (2003-12-04 16:34) [8]

Немного напутал.
Если EditorMode=false это значит ввод закончен и можно проверять значение, но если щелкнуть по другой ячейке, то OnSetEditText вызывается, а EditorMode=true соответственно проверки не будет, а хотелось бы.


 
Семен Сорокин ©   (2003-12-04 16:36) [9]

делал нечто подобное...
в OnCreate формы выставлял принудительно EditorMode = true, брал ActiveControl (наследник TCustomMemo если не ошибаюсь) сохранял его, и переопределял OnExit (для твоего случая).


 
alexnmsk   (2003-12-04 16:37) [10]

Подскажите с чего начать. Иммется компонент - потомок TStringGrid. Как в нем обработать сообщение WM_KILLFOCUS от InplaceEditora.


 
Danilka ©   (2003-12-04 16:42) [11]

в объявлении класса:
procedure WMKillFocus(var Msg: TWMKillFocus); message WM_KILLFOCUS;

в секции реализации:

procedure TCustomGrid.WMKillFocus(var Msg: TWMKillFocus);
begin
inherited;
if (FInplaceEdit <> nil) and (Msg.FocusedWnd <> FInplaceEdit.Handle) then
begin
// тут делаем, чего хотим

end;
end;

%))


 
Danilka ©   (2003-12-04 16:43) [12]

вобщем то выдрано из TCustomGrid
но подойдет для твоего наследника. :)


 
Семен Сорокин ©   (2003-12-04 16:45) [13]

можно без наследника см. [9]


 
Danilka ©   (2003-12-04 16:50) [14]

блин, накосячил я :((
на самом деле надо ловить не потерю фокуса, а наоборот.
в этом случае, в сообщении будет указан хендл окна, которое потеряло фокус, сравниваем его с едитором, если оно, то делаем что надо:

procedure WMSetFocus(var Msg: TWMSetFocus); message WM_SETFOCUS;

procedure TCustomGrid.WMSetFocus(var Msg: TWMSetFocus);
begin
inherited;
if (FInplaceEdit <> nil) and (Msg.FocusedWnd = FInplaceEdit.Handle) then
begin

// тут делаем, чего хотим

end;
end;


 
Danilka ©   (2003-12-04 16:52) [15]

"на самом деле надо ловить не потерю фокуса, а наоборот"
следует читать как:
"на самом деле надо ловить не потерю фокуса, а наоборот, его приобретение"

[13] Семен Сорокин © (04.12.03 16:45)
можно. но чел сказал - наследник уже есть, тогда проще в него кода добавить.


 
alexnmsk   (2003-12-05 09:01) [16]

Спасибо всем, кто откликнулся. Вариант [14] получился. В компоненте - потомке от TStringGrid сделал событие OnEditorExit.
Если кому нужно - привожу часть кода класса TMyStringGrid:
в секции описания
type TEditorExit = procedure (Sender: TObject; ACol, ARow: Longint) of object;
private
FEditorExit: TEditorExit;
published
property OnEditorExit: TEditorExit read FEditorExit write FEditorExit;

в секции реализации
procedure TMyStringGrid.WMSetFocus(var Msg: TWMSetFocus);
begin
inherited;
if (InplaceEditor <> nil) and (Msg.FocusedWnd = InplaceEditor.Handle) then
begin
if Assigned(FEditorExit) Then FEditorExit(Self,Col,Row);
end;
end;



Страницы: 1 вся ветка

Текущий архив: 2003.12.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
6-52301
Vladimir Bolotin
2003-10-22 21:27
2003.12.16
поддержка нескольких протоколов (POP3, IMAP,...)


3-52091
Артем
2003-11-24 13:24
2003.12.16
Как сформировать запрос


14-52380
AZ
2003-11-21 04:35
2003.12.16
Помогите перевести с немецкого


1-52247
NneRreaLl
2003-12-04 14:32
2003.12.16
Как удалить часть файла -- указать начальную и конечную позицию ?


1-52198
dDan
2003-12-04 17:54
2003.12.16
ComboBox