Главная страница
    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.009 c
4-40739
diMAN
2003-08-06 19:25
2003.10.13
Изменение размера шрифта у консольного приложения


1-40388
SergSh
2003-10-01 10:29
2003.10.13
Языки :(


14-40666
Knight
2003-09-23 19:02
2003.10.13
Появилось


1-40392
denis24
2003-10-01 09:47
2003.10.13
плавное исчезновение одной формы и появление другой


1-40380
Aquamarin
2003-10-01 12:36
2003.10.13
Освобождение памяти после отработки указателей





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