![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
редактирование ListView [XP]
ther © (2008-12-09 17:08:00)вроде поискал не нашел нужной темы...
проблема следующая...мне нужно что бы можно было кликать в ListView по всем ячейкам(и изменять их содержимое) а не только первую...можно ли этокак то сделать?
Rouse_ (2008-12-09 17:47:00) [1]Вот пример получения текста с активного инплейсэдитора в TreeView и ListView контролах, дальше развивай по аналогии:
function GetEditControlText(Control: TWinControl): String;
var
GetHandleMessage: DWORD;
EditControlHandle: THandle;
begin
// uses CommCtrl;
Result := '';
GetHandleMessage := 0;
if (Control is TTreeView) then
GetHandleMessage := TVM_GETEDITCONTROL
else
if (Control is TListView) then
GetHandleMessage := LVM_GETEDITCONTROL;
if GetHandleMessage = 0 then Exit;
EditControlHandle := SendMessage(Control.Handle, GetHandleMessage, 0, 0);
if EditControlHandle <= HINSTANCE_ERROR then Exit;
SetLength(Result, SendMessage(EditControlHandle, WM_GETTEXTLENGTH, 0, 0) + 1);
SendMessage(EditControlHandle, WM_GETTEXT, Length(Result), DWORD(@Result[1]));
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if TreeView1.IsEditing then
ShowMessage('Текст внутри редактора: ' + GetEditControlText(TreeView1));
if ListView1.IsEditing then
ShowMessage('Текст внутри редактора: ' + GetEditControlText(ListView1));
end;
ther (2008-12-09 17:22:00) [2]ага в режиме Report редактировать содержимое сабитемов...попробую поискать..спасибо за наводку..но если можно по подробней...вдруг не найду
Rouse_ (2008-12-09 17:15:00) [3]В смысле? В режима Report редактировать содержимое сабитемов? При переключении в режим редактирования получай хэндл инплейсэтитора посредством отправки сообщения LVM_GETEDITCONTROL и выставляй ему нужную позицию... Но только в этом случае придется перехватывать момент окончания редактирования и подставлять измененный текст в нужное место.