Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ListBox


Автор: Rondo 19.5.2006, 21:58
Есть задача - перетащить допустим значок с рабочего стола в ListBox, и при нажатии запускалось это приложение. Как все это замутить? 

Автор: Rondo 19.5.2006, 22:50
В DRKB было найдено слудующее:

Код

type  
  TForm1 = class(TForm)  
    ListBox1: TListBox;  
    procedure FormCreate(Sender: TObject);  
  protected  
    procedure WMDROPFILES (var Msg: TMessage); message WM_DROPFILES;  
  private  
  public  
  end;  

var  
  Form1: TForm1;  

implementation  
uses shellapi;  

{$R *.DFM}  

procedure TForm1.FormCreate(Sender: TObject);  
begin  
  DragAcceptFiles(Form1.Handle, true);  
end;  

procedure TForm1.WMDROPFILES (var Msg: TMessage);  
var  
  i,  
  amount,  
  size: integer;  
  Filename: PChar;  
begin  
  inherited;  
  Amount := DragQueryFile(Msg.WParam, $FFFFFFFF, Filename, 255);  
  for i := 0 to (Amount - 1) do  
  begin  
    size := DragQueryFile(Msg.WParam, i , nil, 0) + 1;  
    Filename:= StrAlloc(size);  
    DragQueryFile(Msg.WParam,i , Filename, size);  
    listbox1.items.add(StrPas(Filename));  
    StrDispose(Filename);  
  end;  
  DragFinish(Msg.WParam);  
end;


Только в ListBox переносится полный путь к файлу, мне надо чтоб он иконку там ставил и только название .exe файла.. 

Автор: Guedda 20.5.2006, 00:36
Хм... Ну и используй тогда ExtractFileName... 

Автор: Rondo 20.5.2006, 02:27
можно пример? smile  

Автор: Albinos_x 20.5.2006, 09:25
Цитата(Rondo @  20.5.2006,  02:27 Найти цитируемый пост)
можно пример?

Код

listbox1.items.add(ExtractFileName(StrPas(Filename)));
 

Автор: Sunvas 21.5.2006, 00:37
Цитата(Rondo @  19.5.2006,  22:50 Найти цитируемый пост)
 мне надо чтоб он иконку там ставил

Rondo, иконку в стандартный listbox не впихнешь никак! Тебе нужно использовать Tlistview и Timagelist.
 

Автор: Poseidon 21.5.2006, 03:56
Цитата(Sunvas @  21.5.2006,  00:37 Найти цитируемый пост)
Rondo, иконку в стандартный listbox не впихнешь никак!
 Да ну! Что, серьезно?

http://vingrad.ru/DELPHI-DLP-000734 

Автор: Rondo 21.5.2006, 14:07
Цитата(Albinos_x @  20.5.2006,  09:25 Найти цитируемый пост)
listbox1.items.add(ExtractFileName(StrPas(Filename)));

Это надо делать в OnDragDrop?? или в OnChange ListBoxa?


Это наверное тоже обязательно надо? smile

Код

procedure TForm1.FormCreate(Sender: TObject);  
begin  
  DragAcceptFiles(Form1.Handle, true);  
end;
 

Автор: Albinos_x 21.5.2006, 15:25
Цитата(Rondo @  21.5.2006,  14:07 Найти цитируемый пост)
Это наверное тоже обязательно надо?

Вам же пример сверху привели....
Цитата(Rondo @  21.5.2006,  14:07 Найти цитируемый пост)
Это надо делать в OnDragDrop?? или в OnChange ListBoxa?

вместо:
Код

listbox1.items.add(StrPas(Filename)); 
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)