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


Автор: Volkogriz 2.12.2008, 22:04
Доброе время суток!!!
Проблема такого плана,
В ListBox загружается список найденных файлов в определённой папке!
Как сделать так чтобы при клике на имя определенного файла В ListBox-се, в memo Выводился путь + имя файла!  smile 
Заранее благодарю!
С уважением Volkogriz

Автор: Akella 2.12.2008, 22:26
А где ты хранишь путь + имя? Ты а листбокс только имя загружаешь?
Тебе нужно заранее позаботиться о хранении пути, например в массиве.


Добавлено @ 22:26
Тебе нужно было в этой тебе задавать вопрос:
http://forum.vingrad.ru/forum/forum-331.html

Добавлено через 5 минут и 10 секунд
1. создаешь массив.
2. при сканировании папки заносишь имя в листбокс, а в массив путь без имени
3. при клике на листбокс склеиваешь значение из массива и значение из листбокса и заносишь в мемо

Добавлено через 9 минут и 13 секунд
что у тебя не получается? какие ошибки? выкладывай код, посмотрим

Автор: Volkogriz 2.12.2008, 23:06
Мне надо сделать примерно следующие:
Чтобы в мемо при клике по определёной строке в ListBox-се выводилась вот что:
Код

[Articles 001]
Category = "xxx"
Name = "Программа xxx"
Pictur = "xxx\xxx.jpg"
Descript = ""
Path = "xxx\xxx.exe"
Plugin = ""
Plugins = ""
Description = "xxx\xxx.rtf"

Но разабрался я только с этим:
Код

Path = "xxx\xxx.exe" 
  
А код такой:
Код

procedure ListFileDir(Path: string; FileList: TStrings);
 var
   SR: TSearchRec;
 begin
   if FindFirst(Path + '*.*', faAnyFile, SR) = 0 then
   begin
     repeat
       if (SR.Attr <> faDirectory) then
       begin
         FileList.Add(SR.Name);

       end;
     until FindNext(SR) <> 0;
     FindClose(SR);
   end;
 end;


procedure TForm1.Button1Click(Sender: TObject);
begin
ListFileDir(extractfilepath(Application.ExeName), Form1.ListBox1.Items);
end;

Procedure TForm1.ListBox1Click(Sender: TObject);
Begin
Memo1.Lines.Add('Path= "'+extractfilepath(Application.ExeName)+PChar(ListBox1.Ite[ListBox1.ItemIndex])+'"');

End;


Вобщем в одной папке лежат, xxx.rtf, xxx.jpg, xxx.exe...
хочется чтобы программа сама записала всё попарядку как написано выше!!!
Но я не знаю как это реалезовать!(((

Автор: Akella 2.12.2008, 23:56
а где массив? я ж тебе про массив не зря сказал smile

Добавлено через 3 минуты и 8 секунд
Код

объявляешь динамический массив строк, благо что в тырнете хватает инфы по работе с динамическими массивами

begin
         FileList.Add(SR.Name);
--> здесь в массив заносишь путь типа
SetLegth(arr, Legth(i)+1)
aar[Legth(i)-1] := Path;

       end;


Добавлено через 10 минут и 41 секунду
Получается, что?

Код

  Memo1.Lines.Add('Path= "' + arr[ListBox1.ItemIndex] + (ListBox1.Items[ListBox1.ItemIndex])+'"');


Добавлено через 12 минут и 16 секунд
Ладно, до завтра smile не додумаешься, попробую написать что-нить, но ты постарайся сам, что понял, а то если будут теюе всё время готовые коды давать, то ты перестанешь соображать  smile , вот как я smile 

Автор: Volkogriz 3.12.2008, 01:49
Попытаюсь разобраться СПАСИБО!!! smile 

Автор: Volkogriz 3.12.2008, 17:42
Добрый вечер!!!
Невышло у меня не чего!!! smile 

Автор: Christoph 3.12.2008, 22:06
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    ListBox1: TListBox;
    procedure ListFileDir(Path:string);
    procedure ListBox1DblClick(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  StrLB: TStringList;
implementation

{$R *.dfm}

procedure TForm1.ListFileDir(Path:string);
Var 
  SR:TSearchRec;
  FindRes:Integer;
begin
  ListBox1.Clear;
  Path:=Edit1.Text;
  FindRes:=FindFirst(Path+'*.*',faAnyFile,SR);
    While FindRes=0 do
      begin
          ListBox1.Items.Add(SR.Name);
          StrLB.Add(Path+SR.Name);
         FindRes:=FindNext(SR);
     end;
FindClose(SR);
end;



procedure TForm1.ListBox1DblClick(Sender: TObject);
var
  Format:String;
begin
    Format:=StrLB.Strings[ListBox1.ItemIndex];
    Memo1.Lines.Add('Category = xx'+sLineBreak+'Name = '+ ExtractFileName(Format));
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  ListFileDir(Edit1.Text);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  StrLB:=TStringList.Create();
  Memo1.Clear;
end;

end.


Ниже выкладываю проект...

Если надо разное описание для каждого формата используй case и ExtractFileExt(Format)


Автор: Christoph 4.12.2008, 15:01
Спасибо Rrader'y что б не выводилось в листбокс точка и две точки, надо сделать фильрацию, и процедура ListFileDir перепишиться так: 

Код

procedure TForm1.ListFileDir(Path:string);
Var SR:TSearchRec;
    FindRes:Integer;
begin
  ListBox1.Clear;
  Path:=Edit1.Text;
  FindRes:=FindFirst(Path+'*.*',faAnyFile,SR);
    While FindRes=0 do
      begin
        if (SR.Name <> '.') and (SR.Name <> '..') then
          ListBox1.Items.Add(SR.Name);
          StrLB.Add(Path+SR.Name);
         FindRes:=FindNext(SR);
     end;
  FindClose(SR);
end;

Автор: THandle 4.12.2008, 15:16
Christoph, все ж уже давно есть)

http://forum.vingrad.ru/sources/topic-205111/anchor-entry1471235/0.html

Автор: Christoph 4.12.2008, 15:21
Так что я зря старался?  smile 

Автор: Akella 4.12.2008, 17:38
Цитата(Volkogriz @  3.12.2008,  17:42 Найти цитируемый пост)
Невышло у меня не чего

ты хоть бы код показал, что вышло, а что не вышло

Автор: Volkogriz 7.12.2008, 17:15
Доброе время суток!!!
Всем огромное спасибо буду разбераться!!!
Извините но у меня инет отключали только мвключили!!!(((

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