Текущий архив: 2009.01.25;
Скачать: CL | DM;
Вниз
редактирование ListView Найти похожие ветки
← →
ther (2008-12-09 17:08) [0]вроде поискал не нашел нужной темы...
проблема следующая...мне нужно что бы можно было кликать в ListView по всем ячейкам(и изменять их содержимое) а не только первую...можно ли этокак то сделать?
← →
Rouse_ © (2008-12-09 17:15) [1]В смысле? В режима Report редактировать содержимое сабитемов? При переключении в режим редактирования получай хэндл инплейсэтитора посредством отправки сообщения LVM_GETEDITCONTROL и выставляй ему нужную позицию... Но только в этом случае придется перехватывать момент окончания редактирования и подставлять измененный текст в нужное место.
← →
ther (2008-12-09 17:22) [2]ага в режиме Report редактировать содержимое сабитемов...попробую поискать..спасибо за наводку..но если можно по подробней...вдруг не найду
← →
Rouse_ © (2008-12-09 17:47) [3]Вот пример получения текста с активного инплейсэдитора в 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;
Страницы: 1 вся ветка
Текущий архив: 2009.01.25;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.006 c