|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Связь по компанентам
Добрый день или вечер
Не знаю как точно задать свой вопрос, но попробую по конкретней объяснить. В общем суть такая, кидаем на форму компоненты которые отвечают за отображение информации, например (Image, listbox, FileListBox, memo, WebBrowser, и. т. д) Далее заполняем listfox или FileListBox строками. После при выборе строк открывались данные в этих компонентах, то есть например в FileListBox строка1 в memo выводиться текст в Image картинка. Выбрали строка2 в memo другой текст и Image другая картинка. Как то вот так. Вариант базы данных не предлагать. |
#2
|
||||
|
||||
Используй события.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
События на что? можно по подробней, в каком направление двигаться?
|
#4
|
|||
|
|||
например, событие OnClick в ListBox:
Код:
procedure TForm1.ListBox1Click(Sender : TObject); begin case ListBox1.ItemIndex Of 0 : begin Memo1.Lines.LoadFromFile('0.txt'); Image1.Picture.LoadFromFile('0.bmp'); end; end; end; ЗЫ. Пример простейший, с заранее запрограммированными вариантами. Можно не очень "дорого" сделать простейшую динамику, но там код посложнее будет. ЗЗЫ. Ну и уж почитай как все устроено в Delphi. Нельзя же каждую фигню спрашивать. |
#5
|
|||
|
|||
Что то я не правильно свою мысль высказал. Скорей всего так, допустим в директории есть три папки, в каждой папке по одному файла txt и jpg. Я думаю что придется создавать еще один связывающий файл с listbox и с файлами которые в папках (типо ссылок), можно ли так реализовать?
|
#6
|
|||
|
|||
Все можно. Вопрос только в том, как лучше сделать для конкретной задачи.
Например, для описанных условий (папки с файлами), создаем в папке программы папку для ресурсов. Пусть она называется Data. В ней создаем подпапки с любыми названиями (эти имена будут показываться в ListBox). В каждой такой подпапке кладем текстовый файл с именем TEXT.txt и картинку с именем IMAGE.bmp. В итоге имеем что-то типа такой структуры: Код:
AppFolder | |-Data | |-Dir1 | |-TEXT.txt | |-IMAGE.bmp | |-Dir2 | |-TEXT.txt | |-IMAGE.bmp | |-Dir3 | |-TEXT.txt | |-IMAGE.bmp ... Теперь нам нужен код, который: 1. При старте программы заполнит ListBox. 2. При выборе пункта в ListBox загрузит соотв. текст и картинку. Код:
procedure TForm1.FormCreate(Sender : TObject); var F : TSearchRec; iFound : Integer; RootPath : String; begin ListBox1.Items.Clear; RootPath := ExtractFilePath(Applicaton.ExeName); RootPath := IncludeTrailingPathDelimiter(RootPath) + 'Data\'; iFound := FindFirst(RootPath + '*.*', faAnyfile+fadirectory, F); While iFound = 0 Do Begin If ((F.Attr And fadirectory) <> 0) And (F.Name <> '.') And (F.Name <> '..') Then ListBox1.Items.Add(F.Name); iFound := FindNext(F); End; FindClose(F); end; procedure TForm1.ListBox1click(Sender : TObject); var RootPath : String; begin If ListBox1.ItemIndex = -1 Then Begin Memo1.Lines.Clear; Image1.Picture.Graphic := Nil; End Else Begin RootPath := ExtractFilePath(Applicaton.ExeName); RootPath := IncludeTrailingPathDelimiter(RootPath) + 'Data\' + ListBox1.Items[ListBox1.ItemIndex]+'\'; Memo1.Lines.LoadFromFile(RootPath + 'TEXT.txt'); Image1.Picture.LoadFromFile(RootPath + 'IMAGE.bmp'); End; end; Как-то так. |