Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
ВнизРедактирование в StringGrid Найти похожие ветки
← →
lightix (2003-10-02 10:49) [0]Задача проста - нужно чтобы в StringGrid после изменения значения ячейки (при выходе из режима редактирования, либо потере фокуса StringGrid"ом) выполнялась некая процедура.
OnSetEditText срабатывает при каждом новом символе :( а нужно только при завершении редактирования...
Пробовал выставлять флаг в OnSetEditText и обрабатывать в OnDrawCell - тоже не подошло, т.к. работает с глюками - если при редактировании ячейки приложение стало неактивным (выскочило окошко аськи, пользователь запустил какое-то приложение) и затем стало опять активным, то OnDrawCell сработает, хотя редактирование и небыло завершено.
← →
VAleksey (2003-10-02 11:02) [1]А как бы ты определил окончание процесса редактирования ячейки?
← →
lightix (2003-10-02 11:17) [2]Незнаю, вот я и спрашиваю, как его определить ;)
OnDrawCell срабатывал при переходе в другую ячейку и при завершении редактирования...
← →
VAleksey (2003-10-02 11:19) [3]Обрабатывай OnKeyDown, где тв определишь какоя клавиша нажата и является ли нажатие этой клавиши признаком окончания редактирования.
← →
lightix (2003-10-02 11:19) [4]А если пользователь не клавишей а мышью ушел с поля?
← →
pasha_golub (2003-10-02 11:22) [5]Посмотри реализацию класса TInplaceEditor, оно должно подтолкнуть тебя в нужную сторону. По окончании редактирования Эдитор посылает сообщение Гриду
← →
han_malign (2003-10-02 11:30) [6]OnSetEditText- начало(процесс) редактирования
OnSelectCell,onExit - окончание редактирования
А вообще OnSetEditText происходит при изменении строки и(!) при окончании редактирования - ты можешь запоминать текущую редактируемую строку и при возникновении OnSetEditText без изменения строки - считать что редактирование закончено.
>pasha_golub © (02.10.03 11:22) [5]
>Эдитор посылает сообщение Гриду
procedure TInplaceEditList.CloseUp(Accept: Boolean);
var
ListValue: Variant;
begin
if ListVisible and (ActiveList = FPickList) then
begin
if GetCapture <> 0 then SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
if PickList.ItemIndex <> -1 then
ListValue := PickList.Items[PickList.ItemIndex];
SetWindowPos(ActiveList.Handle, 0, 0, 0, 0, 0, SWP_NOZORDER or
SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_HIDEWINDOW);
FListVisible := False;
Invalidate;
if Accept then
if (not VarIsEmpty(ListValue) or VarIsNull(ListValue))
and (ListValue <> Text) then
begin
{ Here we store the new value directly in the edit control so that
we bypass the CMTextChanged method on TCustomMaskedEdit. This
preserves the old value so that we can restore it later by calling
the Reset method. }
Perform(WM_SETTEXT, 0, Longint(string(ListValue)));
Modified := True;
with Grid do
SetEditText(Col, Row, ListValue);
end;
end;
end;
← →
lightix (2003-10-02 11:32) [7]ок, спасибо. щас еще немного повожусь с ним , если не получится -брошу, сделаю по-другому...
какой дятел придумал этот стринггрид... уж скоко знакомых людей с ним мучалось, и ни у кого не вышло то чего хотели.... и я вошел в их ряды... это так, мысли вслух...
← →
han_malign (2003-10-02 11:49) [8]>уж скоко знакомых людей с ним мучалось
- исходники есть - наследуйся, расширяй функциональность. Разве кто мешает?
>какой дятел придумал этот стринггрид
- по быстрому слепить фронт-ендик - очень полезная вещь...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c