Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.012 c
1-52180
maxXP
2003-12-03 15:04
2003.12.16
Как получить код нажатой клавиши клавиатуры


8-52296
Ник
2003-08-20 12:15
2003.12.16
TImage-jpeg


1-52159
Anton.
2003-12-03 13:36
2003.12.16
Вопрос про меню


1-52197
LittleGirly
2003-12-05 15:35
2003.12.16
Вопрос по TreeView


14-52365
Кен
2003-11-23 03:49
2003.12.16
Мониторы из воздуха Подробности




   Наверх