|
Вопрос # 4 366/ вопрос открыт / |
|
Здравствуйте, эксперты!
Написал программу- альбом. Но изображения выводит не соответствующие каталогу. Посмотрите пожалуйста!
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls, ExtCtrls, Menus, XPMan, ComCtrls;
-
- type
- TForm1 = class(TForm)
- GroupBox1: TGroupBox;
- RadioButton1: TRadioButton;
- RadioButton2: TRadioButton;
- RadioButton3: TRadioButton;
- RadioButton4: TRadioButton;
- RadioButton5: TRadioButton;
- GroupBox2: TGroupBox;
- ComboBox1: TComboBox;
- Image1: TImage;
- ListBox1: TListBox;
- ListBox2: TListBox;
- MainMenu1: TMainMenu;
- N1: TMenuItem;
- N2: TMenuItem;
- N3: TMenuItem;
- N4: TMenuItem;
- XPManifest1: TXPManifest;
- procedure RadioButton1Click(Sender: TObject);
- procedure RadioButton2Click(Sender: TObject);
- procedure RadioButton3Click(Sender: TObject);
- procedure RadioButton4Click(Sender: TObject);
- procedure RadioButton5Click(Sender: TObject);
- procedure ComboBox1Change(Sender: TObject);
- procedure N3Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- var i: integer;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.RadioButton1Click(Sender: TObject);
-
- begin
- comboBox1.Clear;
- ComboBox1.Tag:= (Sender as TRadioButton).Tag;
- for i:=0 to 4 do
- ComboBox1.Items.Add(ListBox1.Items[ComboBox1.Tag+i]);
- ComboBox1.ItemIndex:=0;
- image1.Picture.LoadFromFile(ListBox2.Items[comboBox1.tag]);
-
- end;
-
- procedure TForm1.RadioButton2Click(Sender: TObject);
-
- begin
- comboBox1.Clear;
- ComboBox1.Tag:= (Sender as TRadioButton).Tag;
- for i:=0 to 4 do
- ComboBox1.Items.Add(ListBox1.Items[ComboBox1.Tag+i]);
- ComboBox1.ItemIndex:=0;
- image1.Picture.LoadFromFile(ListBox2.Items[comboBox1.Tag]);
- end;
-
- procedure TForm1.RadioButton3Click(Sender: TObject);
- begin
- comboBox1.Clear;
- ComboBox1.Tag:= (Sender as TRadioButton).Tag;
- for i:=0 to 4 do
- ComboBox1.Items.Add(ListBox1.Items[ComboBox1.Tag+i]);
- ComboBox1.ItemIndex:=0;
- image1.Picture.LoadFromFile(ListBox2.Items[comboBox1.Tag]);
- end;
-
- procedure TForm1.RadioButton4Click(Sender: TObject);
- begin
- comboBox1.Clear;
- ComboBox1.Tag:= (Sender as TRadioButton).Tag;
- for i:=0 to 4 do
- ComboBox1.Items.Add(ListBox1.Items[ComboBox1.Tag+i]);
-
- image1.Picture.LoadFromFile(ListBox2.Items[comboBox1.Tag]);
- end;
-
- procedure TForm1.RadioButton5Click(Sender: TObject);
- begin
- comboBox1.Clear;
- ComboBox1.Tag:= (Sender as TRadioButton).Tag;
- for i:=0 to 4 do
- ComboBox1.Items.Add(ListBox1.Items[ComboBox1.Tag+i]);
- ComboBox1.ItemIndex:=0;
- image1.Picture.LoadFromFile(ListBox2.Items[comboBox1.Tag]);
- end;
-
- procedure TForm1.ComboBox1Change(Sender: TObject);
- begin
- image1.Picture.LoadFromFile(ListBox2.Items[ComboBox1.itemindex]);
- end;
-
- procedure TForm1.N3Click(Sender: TObject);
- begin
- form1.Close;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- RadioButton1Click(Radiobutton1) ;
- end;
-
- end.
 |
Вопрос задал: fail-gataullin (статус: Посетитель)
Вопрос отправлен: 28 июня 2010, 13:31
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: DNK
Здравствуйте, fail-gataullin!
Исправь так:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
image1.Picture.LoadFromFile(ListBox2.Items[ComboBox1.Tag + ComboBox1.itemindex]);
end;
И не надо столько обработчиков разводить. Заведи один для первой радиокнопки, а для остальных назначь от первой.
 |
Ответ отправил: DNK (статус: Студент)
Время отправки: 28 июня 2010, 16:01
Оценка за ответ: 5
Комментарий к оценке: Спасибо! Помогло!!!
|
Мини-форум вопроса
Всего сообщений: 15; последнее сообщение — 28 июня 2010, 16:31; участников в обсуждении: 4.
|
DNK (статус: Студент), 28 июня 2010, 13:55 [#1]:
Было бы неплохо и DFM увидеть
"Digital Networked Knight"
|
|
DNK (статус: Студент), 28 июня 2010, 14:29 [#3]:
Давай куда-нибуть на всеобщее обозрение. Особо интересно, что в ListBox'ах.
"Digital Networked Knight"
|
|
IlluminatI (статус: 2-ой класс), 28 июня 2010, 14:30 [#4]:
залей куда-нибудь на файлообменник
|
|
min@y™ (статус: Доктор наук), 28 июня 2010, 15:00 [#6]:
Под дебаггером прогони и посмотри значения переменных, особенно индексов, и всё станет понятно сразу.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
fail-gataullin (статус: Посетитель), 28 июня 2010, 15:25 [#8]:
Залил на депозит-посмотрите пожалуйста!!!
|
|
DNK (статус: Студент), 28 июня 2010, 15:44 [#9]:
У тебя абсолютный путь указан, как так может не соответствует каталогу? Или ты имеешь в виду, что не соответствуют выбранной модели.
"Digital Networked Knight"
|
|
fail-gataullin (статус: Посетитель), 28 июня 2010, 15:54 [#10]:
Выбираешь любую модель, первое изображение соответствует модели. Остальные кртинки идут только десятой модели. какой бы каталог не выбрал.
|
|
min@y™ (статус: Доктор наук), 28 июня 2010, 16:04 [#11]:
Смотрю исходники и не понимаю, что должна делать программа. Объясни алгоритм, плиз.
Вижу очень много повторяющегося кода, который можно сократить.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
fail-gataullin (статус: Посетитель), 28 июня 2010, 16:12 [#12]:
Программа- альбом. Выбираешь модель ВАЗа и рядом должно появляться изображение автомобиля. В раскрывающемся списке 5 изображений, соответствующих модели. Все получилось. Как код можно сократить?
|
|
min@y™ (статус: Доктор наук), 28 июня 2010, 16:20 [#13]:
Цитата (fail-gataullin):
Как код можно сократить?
Сделай для всех RadioButton один обработчик OnClick.
А ещё лучше - замени на RadioGroup.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
DNK (статус: Студент), 28 июня 2010, 16:22 [#14]:
Выбираешь по очереди каждую кнопку. Идешь Object Inspector закладка Events. Напротив пунктов OnClick для каждой радиокнопки выбираешь из выпадающего списка RadioButton1Click. После этого RadioButton2Click, RadioButton3Click, RadioButton4Click, RadioButton5Click можно удалять.
"Digital Networked Knight"
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|