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

Вниз

TListView. Setfocus внутри OnSelectItem   Найти похожие ветки 

 
neversleep   (2011-02-10 16:12) [0]

Пытаюсь сделать из TListView"а редактор свойств объектов, наподобие "Object TreeView" в Delphi7; т.е беру обычный TListView и создаю 2 колонки (ViewStyle=vsReport) Свойство | Значение, далее обрабатываю событие SelectItem, по которому создаю свой EDIT (в который будет введено значение) и устанавливаю на него фокус:

Windows.SetFocus(FObjPropEdit);

Проблема заключается в том, что после выхода из события(SelectItem), мой EDIT теряет фокус, как сделать чтобы фокус оставался у него ?
Код:

procedure TForm1.lvPropsSelectItem(Sender: TObject; Item: TListItem;
 Selected: Boolean);
var
 R: TRect;
begin
 if Item = nil then
   Exit;

 //lvProps.Items.BeginUpdate;
 SendMessage(lvProps.Handle, LVM_GETITEMRECT, Item.Index, Integer(@R));

 FObjPropEdit := CreateWindowEx(WS_EX_CLIENTEDGE or WS_EX_CONTROLPARENT, "EDIT",
   PChar(Item.SubItems[0]),
   WS_CHILD or WS_VISIBLE or WS_CLIPSIBLINGS or ES_AUTOHSCROLL or ES_LEFT,
   lvProps.Column[0].Width + 1,
   R.Top,
   R.Right - R.Left - lvProps.Column[0].Width,
   R.Bottom - R.Top,
   lvProps.Handle,
   0,
   hInstance,
   nil);

 SendMessage(FObjPropEdit, WM_SETFONT, Self.Font.Handle, 1);
 SetWindowLong(FObjPropEdit, GWL_USERDATA, Integer(Item));

 //lvProps.Selected := nil;
 //lvProps.Items.EndUpdate;
 Windows.SetFocus(FObjPropEdit);
end;

Delphi7, Win7;


 
clickmaker ©   (2011-02-10 17:40) [1]

я бы не смешивал TListView из VCL с апишным Edit
попробуй TEdit


 
clickmaker ©   (2011-02-10 17:41) [2]

да, и чем TValueListEditor не подошел?


 
neversleep   (2011-02-10 18:33) [3]


> я бы не смешивал TListView из VCL с апишным Edit
> попробуй TEdit

С Tedit"ом я первым делом пробовал, ситуация такая же, только ещё Access violation вылетает при непонятных условиях (после вызова TEdit.SetFocus()).

> да, и чем TValueListEditor не подошел?

Да собственно хочется использовать стандартные апишные окна/подходы, т.к всё это дело планирую писать на C++(mingw), Дельфи использую потому что отлаживать/экспериментировать удобнее.


 
neversleep   (2011-02-12 10:47) [4]

Если кому интересно: ListBox для этих целей больше подошёл (+ конечно ручная отрисовка строк и тп). Но оговорюсь, - реализация задуманного ещё не закончена, но пока полёт нормальный :)



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.085 c
2-1343506606
3asys
2012-07-29 00:16
2013.03.22
Получение директории программы


2-1338798568
leklerk
2012-06-04 12:29
2013.03.22
Программа висит в процессах


2-1338895162
Сергей
2012-06-05 15:19
2013.03.22
Как закодировать проверку того что старший байт установлен?


15-1338542114
NailMan
2012-06-01 13:15
2013.03.22
восстановление после операции


15-1334739336
oldman
2012-04-18 12:55
2013.03.22
Забыл решение...