Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.12.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-52187
timak
2003-12-02 20:43
2003.12.16
КАК перевернуть QRLabel?


1-52214
FBI
2003-12-05 09:15
2003.12.16
Буфер


3-52094
Bless
2003-11-24 12:25
2003.12.16
Как посмотреть какие есть локальные переменные?


14-52385
Woodpecker
2003-11-21 20:36
2003.12.16
Конкурс


14-52343
BlackTiger
2003-11-22 21:43
2003.12.16
У кого есть





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский