Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
7-40706
Calm
2003-07-26 16:34
2003.10.13
Вывод сообщения поверх всех-всех окон. Не умрут ли игрушки?


4-40722
k@rt
2003-08-08 20:33
2003.10.13
EDIT во все окно


8-40519
Ламер
2003-06-12 15:53
2003.10.13
Сохранение рисунка


1-40433
romeo
2003-10-03 01:17
2003.10.13
Создание Undo-Redo


1-40354
3APA3A
2003-10-01 15:15
2003.10.13
Как правильно добавить значения в ValueListEditor???





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский