Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Редактирование в 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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.01 c
3-40237
Abrams
2003-09-22 14:40
2003.10.13
Трехзвенная архитектура


14-40676
_Alex_
2003-09-21 18:54
2003.10.13
Лицензирование программного обеспечения


11-40324
access_violation
2003-01-09 19:28
2003.10.13
TPageControl, TStringGrid


3-40294
Deimos
2003-09-22 15:22
2003.10.13
Не могу создать новую базу данных под firebird 1.0.2.908


1-40453
ctranik
2003-10-02 18:08
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский