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

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

Код:
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 воткнут--работает.
А вот клик и двоной клик ну ни как.
Ответить с цитированием