Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вставка строки в ячейку Grid по нажатию кнопки [D6, Win2k]


Spooky ©   (2002-07-12 10:10:00) 

Помогите решить проблему.
Есть Grid, не важно какой (если надо, я подстроюсь) и есть кнопка. Мы находимся в режиме редактирования ячейки, нажимаем кнопку и там где был курсор должна вставиться определенная строка.
Я знаю, что можно на нажатие кнопки поставить
PostMessage(Prof.Handle, WM_CHAR, Word("р"), 0);
НО! При нажатии на кнопку мы автоматически выходим из режима редактирования и ... текст то в ячейку вставляется, но совсем не туда, где был курсор, а в начало или конец (в зависимости от настроек).


Spooky   (2002-07-12 13:42:00) [1]

Спасибо народ!


MBo   (2002-07-12 11:13:00) [2]

type
TXGrid=class(TStringGrid);
...
Var
EDPos:integer;
IsEditing:boolean;


procedure TForm1.Button1Click(Sender: TObject);
var dwStyle:DWord;
begin
with StringGrid1 do
Cells[Col,Row]:=Copy(Cells[Col,Row],1,EdPos)+"qq"+
Copy(Cells[Col,Row],EdPos+1,Length(Cells[Col,Row]));
end;

procedure TForm1.StringGrid1Exit(Sender: TObject);
begin
if IsEditing then begin
EdPos:=TXGrid(StringGrid1).inplaceeditor.selstart;
caption:=inttostr(edpos);
end;
IsEditing:=False;
end;

procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol,
ARow: Integer; var Value: String);
begin
IsEditing:=True;
end;


Yuri-7   (2002-07-12 10:56:00) [3]

Для режима редактирования, точнее будет
SG.Cells[SG.Col,SG.Row]:=SG.Cells[SG.Col,SG.Row]+"jjjjj";


Yuri-7   (2002-07-12 10:53:00) [4]

SG.Cells[SG.Col,SG.Row]:="jjjjj";


still   (2002-07-12 10:44:00) [5]

Делай это на нажатие не кнопки, а, например, панели (она не принимает фокус). Раздичными бордерами на MouseDown и MouseUP имитируй нажатие кнопки, на OnClick делай PostMessage.
ВСЕ OK!


BAY   (2002-07-12 10:34:00) [6]

DataSet.Edit;
<Пишем куда надо>
DataSet.Post;


Spooky   (2002-07-12 10:32:00) [7]

Вообще то без DataSet, у меня просто Grid, не DB.
А что ты имеешь в виду "пиши в DataSet"?


BAY   (2002-07-12 10:29:00) [8]

У тебя Grid связанный с DataSet?
Если да то и пиши в DataSet.


Наверх

Титульная страница Поиск, карта сайта Написать письмо