Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > ОС и железо
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.08.2014, 21:36
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию Как обработать Click и DblClick по ListView (WinAPi)

Здравствуйте.
Как обработать Click и DblClick по ListView(WinAPi). как и куда писать и как изенить цвет текста выделенной строки? Если не затруднит, дайте рабочий пример. Спасибо.

Последний раз редактировалось Stalker2-42, 16.08.2014 в 21:44.
Ответить с цитированием
  #2  
Старый 17.08.2014, 15:58
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А что значит ListView(WinAPi), на чистом что-ли? Тогда покажите, как вы его создете - если окажется что примерно вот так
Код:
1
2
3
4
5
6
7
8
9
...
with TListView.Create(self) do
begin
parent:= Form1;
Items.Add.Caption:= 'Item 1';
items.Add.Caption:= 'Item 2';
// etc.
end;
...
то тогда пишете свои обработчики (напр. lvClick(Sender: TObject)) и при создании подключаете их к ЛВ (OnClick:= lvClick) , а насчёт покраски: DRKB - 00635

З.Ы. Другими словами - для ответа маловато исходной инфы
Ответить с цитированием
  #3  
Старый 17.08.2014, 16:39
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Приветствую!!!
Вот так:

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
var
   WndClassEx : TWndClassEx; // Класс окна - несёт инфу об окне (запись)
   Form, LV, {AddForm, }button, Btn2 : hwnd; //переменные для хендлов созданных объектов
   MMsg: Msg; // Входящие мессаги
.....
 
Case Msg Of
    WM_CREATE:
      begin
        DragAcceptFiles(Forma, True);
        GetClientRect(Forma, Rect);
 
        button :=  CreateWindowEx (0, 'BUTTON', 'Изменить путь', WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON, 5, Rect.Bottom - 35,
        Rect.Right div 2 - 2, 35, Forma, ButtonID, HInstance, NIL);
 
        Btn2 :=  CreateWindowEx (0, 'BUTTON', 'Изменить путь2', WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON, Rect.Right div 2 + 5, Rect.Bottom - 35,
        Rect.Right div 2 - 10, 35, Forma, BtnID, HInstance, NIL);
 
        LV :=CreateWindowEx(WS_EX_CLIENTEDGE,'SysListView32', '1', WS_CHILD or WS_VISIBLE or LVS_REPORT  or WS_BORDER or
          WS_TABSTOP or LVS_SINGLESEL or LVS_SHOWSELALWAYS, 5, 5, Rect.Right-10 ,Rect.Bottom - 40,Forma, LVID, HInstance,nil);
      //  SendMessage(LV, WM_SETFONT, GetStockObject(DEFAULT_GUI_FONT), 1);
        SendMessage(lv, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT or LVS_EX_GRIDLINES or LVS_EX_INFOTIP);
         // SendMessage(LV, LB_ADDSTRING, 1 , 0)
 
         lvc.fmt := LVCFMT_CENTER;
        lvc.mask := LVCF_TEXT + LVCF_WIDTH;
          lvc.pszText := 'Имя';
          lvc.cx := 250;
          ListView_InsertColumn(lv, 0, lvc);
 
 
          lvc.mask := lvc.mask or LVCF_FMT or LVCF_SUBITEM;
          lvc.pszText := 'ууу';
          lvc.cx := 60;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 1, lvc);
 
        //  lvc.mask := lvc.mask or LVCF_FMT or LVCF_SUBITEM;
          lvc.pszText := 'ааа';
          lvc.cx := 50;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 2, lvc);
 
         
          lvc.fmt := LVCFMT_LEFT;
          //lvc.mask := lvc.mask or LVCF_FMT or LVCF_SUBITEM;
          lvc.pszText := 'Путь к файлу';
          lvc.cx := LVSCW_AUTOSIZE_USEHEADER;//250;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 3, lvc);
        
      end;
 
  //  WM_SHOWWINDOW:  ShowWindow (AddForm, SW_SHOW{NORMAL}); // Показывем окно
    WM_LBUTTONDBLCLK:
     // if HWND(WPARAM) = LVid then
        MessageBox(0,'','',0);
      WM_DROPFILES:
        WMDropFiles( MMsg);
 
  WM_COMMAND: // Через это сообщение определяем нажатие на кнопку
    begin
     //Если мессага пришла от кнопки
   //   If LoWord (WParam) = ButtonID Then
        //И если это было нажатие
 
        If HiWord (WParam) = BN_CLICKED then
        case hwnd(WParam) of//
          Buttonid:
          begin       //  ListView_SetSelectionMark(LV,1);
 
         //   ListView_SetItemState(LV, 11 , LVIS_SELECTED or LVIS_FOCUSED, LVIS_SELECTED or LVIS_FOCUSED);   // я выделяю строку
 
     i :=  ListView_getSelectionMark(LV);    //выделенная строка
 
           // ListView_GetItemText(LV, 0, 7, filename, SizeOf(filename)) ;  //получение содержимого колонки путь
          SetWindowText(Form, {filename} PChar(IntToStr(i)) );
           // ListView_SetItemCountEx(LV, 1, lv);
          end;
          BtnID: MessageBox(0, '','',0);
        end;
    end;
 
    WM_SIZE: // Посылается после изменения размеров окна (формы)
    Begin
      GetClientRect(Form, Rect);
      SetWindowPos(LV, 0, 5, 5, Rect.Right-10, Rect.Bottom - 40, SWP_NOZORDER);
      SendMessage(LV,LVM_SETCOLUMNWIDTH, 3, LVSCW_AUTOSIZE_USEHEADER);
      SetWindowPos(button, 0, 5, Rect.Bottom - 35, Rect.Right div 2 - 2, 35, SWP_NOZORDER);
      SetWindowPos(Btn2, 0, Rect.Right div 2 + 5, Rect.Bottom - 35, Rect.Right div 2 - 10, 35, SWP_NOZORDER);
     // setwindowpos
    End;
 
    WM_DESTROY:
      begin
        DragAcceptFiles(Forma, False);
        PostQuitMessage(0);
      end;
    Else // Если пришедщее сообщение мы не определили:
      Result := DefWindowProc(Forma, Msg, WParam, LParam); // Эта функция обрабатывает ВСЕ ОСТАЛЬНЫЕ сообщения по умолчанию
  End; // Конец блока Case


Умудрилс DragNDrop воткнут--работает.
А вот клик и двоной клик ну ни как.

Последний раз редактировалось Stalker2-42, 17.08.2014 в 16:54.
Ответить с цитированием
  #4  
Старый 17.08.2014, 17:21
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

И вам не хворать!

Похоже тогда придётся вам ещё свою калбек-функцию подключать типа
Код:
1
2
3
4
5
6
7
8
9
10
11
12
function NewListProc(wnd:HWND; uMsg:UINT; wParam:WPARAM;
                    lParam:LPARAM):integer; stdcall;
begin
 result:=CallWindowProc(Pointer(GetWindowLong(wnd,GWL_USERDATA)),wnd,
                         uMsg,wParam,lParam);
 
  if uMsg=WM_NOTIFY then
   if lParam^.hdr.code=WM_NCLBUTTONDBLCLK then
    begin
 // вот здесь обработка события
    end;
end;
с подобной заменной регистрацией
Код:
1
SetWindowLong(LV,GWL_USERDATA,SetWindowLong(LV, GWL_WNDPROC, LPARAM(@NewListProc)));
подсмотрел в БазеЗнаний, может чё и не так слямзил
Ответить с цитированием
  #5  
Старый 17.08.2014, 17:28
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Ругается на if lParam^.hdr.code.

А проще нельзя сделать?

Уже руки к низу.

По моей логике, если прошел dbclick, то по какому HWND:

Код:
1
2
3
4
5
WM_LBUTTONDBLCLK:
     if HWND = LV then
        begin
          //чтото делаем
        end;
А, получается что нет.

Последний раз редактировалось Stalker2-42, 17.08.2014 в 17:37.
Ответить с цитированием
  #6  
Старый 17.08.2014, 18:26
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Неужели нкто незнает не работал с ListView ?
Ответить с цитированием
  #7  
Старый 17.08.2014, 18:30
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А сообщения отлавливаются, на WM_LBUTTONDBLCLK есть реагизм? Просто и правда, у вас и так уже организована "ловля", только не видно от кого пришла мессага
Ответить с цитированием
  #8  
Старый 17.08.2014, 18:49
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Скажем так. я нигде не видел примеров с Listbox и Listviev(инет и книги).
Следовательно я мало что понимаю.
Клик по самому окну проходит(MessageBox).
А как отловить сообщение от LV,ума не приложу.

Последний раз редактировалось Stalker2-42, 17.08.2014 в 20:42.
Ответить с цитированием
  #9  
Старый 17.08.2014, 18:51
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
А сообщения отлавливаются, на WM_LBUTTONDBLCLK есть реагизм? Просто и правда, у вас и так уже организована "ловля", только не видно от кого пришла мессага
Это я пробовал разные варианты.
фА если делать так==
Код:
1
2
3
WM_LBUTTONDBLCLK:
     if HWND(WPARAM) = LVid then
       MessageBox(0,'','',0);
то, полная тишина.


Может надо еще что-то и где-то было указать?

ЕСТЬ КТО ЖИВОЙ?

Последний раз редактировалось Stalker2-42, 17.08.2014 в 20:44.
Ответить с цитированием
  #10  
Старый 17.08.2014, 21:37
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Цитата:
Сообщение от Stalker2-42
юююЕСТЬ КТО ЖИВОЙ?
Есть, но только слегка сильно пьяные

Вообще ифзен на время уберите (два слеша на вторую строчку) - будет ли реагировать на даблклик? В смысле ловится ли он
Ответить с цитированием
  #11  
Старый 17.08.2014, 21:52
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

пьяные - счастливые

Код:
1
2
3
WM_LBUTTONDBLCLK:
     //if HWND(WPARAM) = LVid then
       MessageBox(0,'','',0);
если комент второй строки -- ничего.

Код:
1
2
3
WM_LBUTTONUP://WM_LBUTTONDOWN
    // if HWND(WPARAM) = LVid then
       MessageBox(0,'','',0);
здесь есть реакция только от самой форточки(родителя) если по ней клацать(просто клик), ListView молчит.
Может мне весь код выложить? он не большой.



хаааа. 143 просмотра темы - реакция......

Последний раз редактировалось Stalker2-42, 17.08.2014 в 22:11.
Ответить с цитированием
  #12  
Старый 17.08.2014, 22:14
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Значит нет посылки - необходимо смотреть что приходит, вероятно нужно другие константы использовать, всё может быть

З.Ы. и Оффтоп в одном флаконе (забыл как яркость у шрифта убрать без явы, шоб в глаза это не кидалось, простите): Выкладывайте на-здоровье, может кто подскажет, лично я доберусь до нормального компа лишь в сентябре, не раньше, извнт, хороший вы человек
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
Stalker2-42 (17.08.2014)
  #13  
Старый 17.08.2014, 22:32
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Alegun - в отпуке?
Вот мое творение. Выкладываю как есть,с моими эксперементами.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
program Project1;
 
uses
  Windows,
  Messages, CommCtrl, SysUtils, ShellAPI, Classes;
 
 
Const
  ButtonID = 100;
  BtnID = 101;
    LVID = 13;
 
 
  var
   WndClassEx : TWndClassEx;
   Form, LV, button, Btn2 : hwnd;
   MMsg: Msg;
   item : tLVITEM;
 
{$R *.res}
 
Function WinProc(Forma: hwnd; Msg: Cardinal;wparam: WParam;LParam: Cardinal): lresult; Stdcall;
Var
  Rect: TRect;
  lvc   : TLVCOLUMN;
  I : Integer;
  filename : array [0..2000] of Char;
Begin
  Result := 0; // Чтобы в случае сбоя программы до последней строки функции Windows правильно определила ошибку
  Case Msg Of
    WM_CREATE:
      begin
        DragAcceptFiles(Forma, True);
        GetClientRect(Forma, Rect);
 
        button :=  CreateWindowEx (0, 'BUTTON', 'Изменить путь', WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON, 5, Rect.Bottom - 35,
        Rect.Right div 2 - 2, 35, Forma, ButtonID, HInstance, nil);
 
        Btn2 :=  CreateWindowEx (0, 'BUTTON', 'Изменить путь2', WS_CHILD or WS_VISIBLE or BS_PUSHBUTTON, Rect.Right div 2 + 5, Rect.Bottom - 35,
        Rect.Right div 2 - 10, 35, Forma, BtnID, HInstance, NIL);
 
        LV :=CreateWindowEx(WS_EX_CLIENTEDGE,'SysListView32', '1', WS_CHILD or WS_VISIBLE or LVS_REPORT or LVS_SHOWSELALWAYS or
            LVS_EX_TWOCLICKACTIVATE or LVS_EX_ONECLICKACTIVATE or WM_LBUTTONDOWN , 5, 5, Rect.Right -10 ,Rect.Bottom - 40,Forma, LVID, HInstance,nil);
 
        SendMessage(lv, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT or LVS_EX_GRIDLINES or LVS_EX_INFOTIP);
 
         lvc.fmt := LVCFMT_CENTER;
        lvc.mask := LVCF_TEXT + LVCF_WIDTH;
          lvc.pszText := '0';
          lvc.cx := 250;
          ListView_InsertColumn(lv, 0, lvc);
 
 
          lvc.mask := lvc.mask or LVCF_FMT or LVCF_SUBITEM;
          lvc.pszText := '1';
          lvc.cx := 60;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 1, lvc);
 
          lvc.pszText := '2';
          lvc.cx := 50;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 2, lvc);
 
          lvc.pszText := '3';
          lvc.cx := 100;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 3, lvc);
 
          lvc.pszText := '4';
          lvc.cx := 100;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 4, lvc);
 
          lvc.pszText := '5';
          lvc.cx := 100;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 5, lvc);
 
          lvc.pszText := '6';
          lvc.cx := 100;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 6, lvc);
 
          lvc.fmt := LVCFMT_LEFT;
          lvc.pszText := 'Путь к файлу';
          lvc.cx := LVSCW_AUTOSIZE_USEHEADER;//250;
          lvc.iSubItem := 1;
          ListView_InsertColumn(LV, 7, lvc);
 
         // EnableWindow(button,False);
       //   FormAdd;
     {   //  for I := 0 to 10 do
       //    begin
          FillChar( item, sizeof(item), 0 );
          item.mask := LVIF_TEXT;
          //item.iItem := 0;
          item.pszText := ('СЕРГЕЙ СЕРГЕЕВ');
          ListView_InsertItem(LV, Item);
          // end;
 
 
        //  SendMessage(lv, LVM_INSERTCOLUMN, 2, LongInt(@Item));
          //LVM_INSERTITEM;
 
       //   item.mask     := LVIF_TEXT or LVIF_IMAGE;
        //  item.iItem    := Item;
          item.iSubItem := 1;
          item.pszText  := '123456789';   //   listview_seti
 
        ListView_SetItem(LV, item);    }
 
      end;
 
   {WM_NOTIFY:  If HiWord (WParam) =  WM_LBUTTONDOWN then
    //   if HWND(WPARAM) = LVID then
 
  //  SetWindowLong(LV,GWL_USERDATA,SetWindowLong(LV, GWL_WNDPROC, LPARAM(@NewListProc)));
 
        MessageBox(0,'','',0);   }
    WM_rBUTTONDOWN:
    // if HWND(WPARAM) = LVid then
       MessageBox(0,'','',0);
 
 
 
  WM_COMMAND:
    begin
      
   //   If LoWord (WParam) = ButtonID Then
        //И если это было нажатие
 
      {  If HiWord (wParam) =   WM_LBUTTONDOWN then
     //  if HWND(WPARAM) = LVID then
       case hwnd(WParam) of//
 
  //  SetWindowLong(LV,GWL_USERDATA,SetWindowLong(LV, GWL_WNDPROC, LPARAM(@NewListProc)));
        LVID:
        MessageBox(0,'','',0);
       end;      }
 
      //  If HiWord (WParam) = BN_CLICKED then
        case {hwnd(WParam)}LOWORD(wParam) of//
          Buttonid:
          begin
          //  ListView_SetSelectionMark(LV,1);
         //   ListView_SetItemState(LV, 11 , LVIS_SELECTED or LVIS_FOCUSED, LVIS_SELECTED or LVIS_FOCUSED);   // я выделяю строку
            i :=  ListView_getSelectionMark(LV);    //выделенная строка
            ListView_GetItemText(LV, {0}i, {7}1, filename, SizeOf(filename)) ;  //получение содержимого колонки путь
            SetWindowText(Form, PChar(IntToStr(i)+ ' - ' + filename) );
           // ListView_SetItemCountEx(LV, 1, lv);
          end;
          BtnID:// MessageBox(0, '','',0);
            begin
              FillChar( item, sizeof(item), 0 );
              item.mask := LVIF_TEXT;
              item.pszText := PChar('aaaa');
              ListView_InsertItem(LV, Item);
              item.iSubItem := 1;
              item.pszText  := PChar('fff');
              ListView_SetItem(LV, item);
              item.iSubItem := 2;
              item.pszText  := PChar('kkk');
              ListView_SetItem(LV, item);
            end;
         // LVID:     MessageBox(0,'yaaaa','Сообщение',MB_OK);
        end;
 
    end;
 
    WM_SIZE: // Посылается после изменения размеров окна (формы)
    Begin
      GetClientRect(Form, Rect);
      SetWindowPos(LV, 0, 5, 5, Rect.Right-10, Rect.Bottom - 40, SWP_NOZORDER);
      SendMessage(LV,LVM_SETCOLUMNWIDTH, 7, LVSCW_AUTOSIZE_USEHEADER);
      SetWindowPos(button, 0, 5, Rect.Bottom - 35, Rect.Right div 2 - 2, 35, SWP_NOZORDER);
      SetWindowPos(Btn2, 0, Rect.Right div 2 + 5, Rect.Bottom - 35, Rect.Right div 2 - 10, 35, SWP_NOZORDER);
     // setwindowpos
    End;
 
    WM_DESTROY:
      begin
        DragAcceptFiles(Forma, False);
        PostQuitMessage(0);
      end;
    Else // Если пришедщее сообщение мы не определили:
      Result := DefWindowProc(Forma, Msg, WParam, LParam);
  End;
End;
 
Procedure WinMain;
Begin
  // Заполняем запись информацией:
  FillChar(WndClassEx, SizeOf(TWndClassEx), 0);
  WndClassEx.cbSize := SizeOf(TWndClassEx); // Размер структуры
  WndClassEx.lpszClassName := 'APIWindow'; // Имя класса окна (для примера - второй параметр функции FindWindow)
 // WndClassEx.hbrBackGround := GetSysColorBrush(COLOR_BTNFACE);
  WndClassEx.style := CS_HREDRAW Or CS_VREDRAW; // Стили окна - в данном случае окно будет перерисовываться при изменении как горизонтальных, так и вертикальных размеров
  WndClassEx.hInstance := HInstance; // Ищи описание выше
  WndClassEx.lpfnWndProc := @WinProc; // адрес окнной процедуры
  WndClassEx.cbClsExtra := 0;
  WndClassEx.cbWndExtra := 0;
  WndClassEx.hIcon := LoadIcon(HInstance, MakeIntResource('MAINICON')); // Икнока окна
  WndClassEx.hIconSm := LoadIcon(HInstance, MakeIntResource('MAINICON')); // Тоже иконка (но маленькая :)
  WndClassEx.hCursor := LoadCursor(0, IDC_ARROW); // Курсор мыши для окна (у нас - стрелка)
  WndClassEx.hbrBackground := COLOR_BTNFACE + 1; // Фон окна
  WndClassEx.lpszMenuName := NIL; // Указатель на меню (у нас меню нет)
  //registerclassex(WndClassEx);// регистрируем в системе новый класс окна
 
  // Теперь регистрируем класс окна в системе
  If RegisterClassEx(WndClassEx) = 0 Then
    MessageBox(0, 'Невозможно зарегистрировать класс окна1', 'Ошибка', MB_OK Or MB_ICONHAND)
  Else
  Begin
  // Создаём окно
    Form := CreateWindowEx( 0, WndClassEx.lpszClassName, 'mp3player',  WS_OVERLAPPEDWINDOW {or ws_ex_appwindow {or ws_ex_acceptfiles} {WS_SYSMENU} ,
     500,100, //CW_USEDEFAULT, 0, // Позиция относительно экрана (CW_USEDEFAULT означает, что размеры будут определяться Windows)
      420, 4000, 0, HInstance, NIL); // Дополнительные параметры
    If Form = 0 Then // Если окно не создалось:
      MessageBox (0, 'Окно1 не создалось!',
        'Ошибка', MB_OK Or MB_ICONHAND)
    Else
    Begin
      ShowWindow (Form, SW_SHOWNORMAL); // Показывем окно
      While GetMessage(MMsg, 0, 0, 0) Do // Эта функция извлекает очередное сообщение из очереди сообщений,
      Begin
        TranslateMessage(MMsg); // Переводит нажатия клавиш, чтобы их можно было обработать оконной процедуре
        DispatchMessage(MMsg); // Отправляем мессагу оконной процедуре
      End;
      Halt(MMsg.WParam); // Завершение работы при получении мессаги WM_QUIT (при выходе из цикла жизни программы)
    End;
  End;
End;
 
Begin
    WinMain;
End.

Почему не могу отловить клик по ListView, где ошибка?

Последний раз редактировалось Stalker2-42, 17.08.2014 в 23:49.
Ответить с цитированием
  #14  
Старый 18.08.2014, 19:21
Аватар для Stalker2-42
Stalker2-42 Stalker2-42 вне форума
Новичок
 
Регистрация: 28.09.2013
Сообщения: 94
Версия Delphi: 2010
Репутация: 10
По умолчанию

Стоит ли мне ждать помощь здесь?
Ответить с цитированием
  #15  
Старый 18.08.2014, 19:22
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп:
Цитата:
Сообщение от Stalker2-42
Alegun - в отпуке?
Нет, я в очередном отпуске

Как понимаю, все ухищрения для снижения веса сборки, кстати, а вы не пробовали задействовать готовый "лёгонький" компонент KOLListView: у него вроде всё такое же как и обычного ЛВ, т.е. сохранены все свойства и процедуры, а кода будет меньше
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:26.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025