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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.12.2016, 18:45
sistemsx sistemsx вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Связь по компанентам

Добрый день или вечер
Не знаю как точно задать свой вопрос, но попробую по конкретней объяснить. В общем суть такая, кидаем на форму компоненты которые отвечают за отображение информации, например (Image, listbox, FileListBox, memo, WebBrowser, и. т. д) Далее заполняем listfox или FileListBox строками. После при выборе строк открывались данные в этих компонентах, то есть например в FileListBox строка1 в memo выводиться текст в Image картинка. Выбрали строка2 в memo другой текст и Image другая картинка. Как то вот так. Вариант базы данных не предлагать.
Ответить с цитированием
  #2  
Старый 20.12.2016, 18:57
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Используй события.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 20.12.2016, 19:20
sistemsx sistemsx вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

События на что? можно по подробней, в каком направление двигаться?
Ответить с цитированием
  #4  
Старый 20.12.2016, 20:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

например, событие 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  
Старый 20.12.2016, 20:37
sistemsx sistemsx вне форума
Прохожий
 
Регистрация: 21.05.2013
Сообщения: 12
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Что то я не правильно свою мысль высказал. Скорей всего так, допустим в директории есть три папки, в каждой папке по одному файла txt и jpg. Я думаю что придется создавать еще один связывающий файл с listbox и с файлами которые в папках (типо ссылок), можно ли так реализовать?
Ответить с цитированием
  #6  
Старый 20.12.2016, 22:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Все можно. Вопрос только в том, как лучше сделать для конкретной задачи.
Например, для описанных условий (папки с файлами), создаем в папке программы папку для ресурсов. Пусть она называется 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;

Как-то так.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter