Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2013, 16:52   #1
disa512
 
Регистрация: 28.12.2013
Сообщений: 7
По умолчанию нужна помощь с процедурой для listBox в borland delphi 7

имеется на form - ListBox,Memo,Button. цель такая выбираю в лист боксе 1,2,3,4,или 5 нажимаю на кнопку и только тогда выводился текст и картинка.На данный момент я нажимаю на список и он сразу выводит текст в memo и открывает картинку.
Код:
procedure TForm1.ListBox1Click(Sender: TObject);
begin

  if (listbox1.ItemIndex = 0) then
Memo1.Lines.LoadFromFile('1\1.txt');
  if (listbox1.ItemIndex = 1) then
Memo1.Lines.LoadFromFile('2\2.txt');
  if (listbox1.ItemIndex = 2) then
Memo1.Lines.LoadFromFile('3\3.txt');
  if (listbox1.ItemIndex = 3) then
Memo1.Lines.LoadFromFile('4\4.txt');
  if (listbox1.ItemIndex = 4) then
Memo1.Lines.LoadFromFile('5\5.txt');

  if (listbox1.ItemIndex = 0) then
ShellExecute (Handle,'open', '1\1.jpg', nil, nil, SW_SHOWNORMAL);
  if (listbox1.ItemIndex = 1) then
ShellExecute (Handle,'open', '2\2.jpg', nil, nil, SW_SHOWNORMAL);
  if (listbox1.ItemIndex = 2) then
ShellExecute (Handle,'open', '3\3.jpg', nil, nil, SW_SHOWNORMAL);
  if (listbox1.ItemIndex = 3) then
ShellExecute (Handle,'open', '4\4.jpg', nil, nil, SW_SHOWNORMAL);
  if (listbox1.ItemIndex = 4) then
ShellExecute (Handle,'open', '5\5.jpg', nil, nil, SW_SHOWNORMAL);
end;

Последний раз редактировалось disa512; 28.12.2013 в 20:28.
disa512 вне форума Ответить с цитированием
Старый 28.12.2013, 17:12   #2
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А так не пробовали?
if (listbox1.ItemIndex = 0) then begin
Memo1.Lines.LoadFromFile('1\1.txt') ;
ShellExecute (Handle,'open', '1\1.jpg', nil, nil, SW_SHOWNORMAL);
end;
ReportCube вне форума Ответить с цитированием
Старый 28.12.2013, 17:12   #3
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Код в обработчик Button1Click перемести.

Цитата:
Сообщение от ReportCube Посмотреть сообщение
А так не пробовали?
А так?

Код:
var
s: string;
begin
s:= IntToStr(listbox1.ItemIndex + 1);
Memo1.Lines.LoadFromFile(s + '\' + s + '.txt');
ShellExecute (Handle,'open', PChar(s + '\' + s + '.jpg'), nil, nil, SW_SHOWNORMAL);
 end;

Последний раз редактировалось Stilet; 28.12.2013 в 22:53.
doktor255 вне форума Ответить с цитированием
Старый 28.12.2013, 17:36   #4
disa512
 
Регистрация: 28.12.2013
Сообщений: 7
По умолчанию

Это мне не подходит. Если я поменяю каталоги 1.2.3.4.5 на названия то у меня не выведет результата
Код:
var
i: integer;
begin
 if ListBox1.ItemIndex=-1 then exit;
 i:= ListBox1.ItemIndex+1;
 Memo1.Lines.LoadFromFile(IntToStr(i)+'\' +(IntToStr(i)+'.txt'));
 ShellExecute (Handle,'open',Pchar(IntToStr(i)+'\' +(IntToStr(i)+'.jpg')), nil, nil, SW_SHOWNORMAL);
 end;
и этот тоже не подходит!
Код:
var
s: string;
begin
s:= IntToStr(listbox1.ItemIndex + 1);
Memo1.Lines.LoadFromFile(s + '\' + s + '.txt');
ShellExecute (Handle,'open', PChar(s + '\' + s + '.jpg'), nil, nil, SW_SHOWNORMAL);
 end;
Ваши предложения.

Последний раз редактировалось disa512; 28.12.2013 в 20:29.
disa512 вне форума Ответить с цитированием
Старый 28.12.2013, 17:49   #5
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

ужас .
eval вне форума Ответить с цитированием
Старый 28.12.2013, 20:14   #6
disa512
 
Регистрация: 28.12.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
ужас .
Скоро научусь. Не когда на форумах не был!!


Последний раз редактировалось Stilet; 28.12.2013 в 22:40.
disa512 вне форума Ответить с цитированием
Старый 28.12.2013, 20:58   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

каждый айтем может держать еще объект, при формировании списка закинте туда что надо и не придется писать такой ужас
eval вне форума Ответить с цитированием
Старый 28.12.2013, 21:11   #8
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Сообщение от disa512 Посмотреть сообщение
1.2.3.4.5 на названия то у меня не выведет результата
Код:
const
FileNames: Array [0..2] Of String = ('КаталогА/файлБ', 'КаталогБ/ФайлР', КаталогD/Файл23');
var i: integer;
s: string;
begin
ShowMessage(FileNames[ListBox1.ItemIndex]);
Заполни массив нужными путями, и обращайся к ним по индексу. Получишь путь к файлу. Если нужно два пути, соответственно сделай два массива с путями.

Цитата:
Сообщение от eval Посмотреть сообщение
каждый айтем может держать еще объект, при формировании списка закинте туда что надо и не придется писать такой ужас
Код закидывания будет не менее ужасен.

Последний раз редактировалось Stilet; 28.12.2013 в 22:40.
doktor255 вне форума Ответить с цитированием
Старый 28.12.2013, 21:39   #9
disa512
 
Регистрация: 28.12.2013
Сообщений: 7
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Код:
const
FileNames: Array [0..2] Of String = ('КаталогА/файлБ', 'КаталогБ/ФайлР', КаталогD/Файл23');
var i: integer;
s: string;
begin
ShowMessage(FileNames[ListBox1.ItemIndex]);
Заполни массив нужными путями, и обращайся к ним по индексу. Получишь путь к файлу. Если нужно два пути, соответственно сделай два массива с путями.
он мне выводит сообщение!1/1 ...2/2 и т.д.
disa512 вне форума Ответить с цитированием
Старый 28.12.2013, 22:56   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну правильно. Это же пример. В твоем случае его нужно адаптировать под твои нужды
Хотя я бы сделал так:
Код:
var p:string;
...
if (listbox1.ItemIndex > -1) then begin
 p:=IntToStr(listbox1.ItemIndex);
 Memo1.Lines.LoadFromFile(p+'\'+p+'.txt') ;
 ShellExecute (Handle,'open', PChar(p+'\'+p+'.jpg'), nil, nil, SW_SHOWNORMAL);
end;
Раз уж твои файлы пронумерованы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ для новичка , нужна помощь Sanya_simple Visual C++ 17 06.12.2013 19:07
Delphi - нужна помощь Psi_X Помощь студентам 11 05.02.2009 14:59
Задачи по C (Borland C 3.1) Нужна помощь в решении xcyber Помощь студентам 3 23.12.2008 17:04
Простенькая задача на BORLAND C++ для 1 курса, нужна консультация! Graf Xandr Помощь студентам 5 04.12.2008 20:07
Нужна ваша помощь для решения задач в Delphi DJ Kost Помощь студентам 3 20.10.2008 18:26