Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.08.25;
Скачать: CL | DM;

Вниз

Вопрос про закладки и массив строк.   Найти похожие ветки 

 
deninside   (2003-08-13 22:37) [0]

Мне нужно при открытии рисунка, добавлять новую закладку в TabControl (потому что добавлять закладку в PageControl я неумею), на TabControl лежит всего один TImage>Image1. При смене закладок, я в Image1 подгружаю рисунок соответствующий каждой заклаке.
При нажатии на Button1 я присваиваю каждому элементу массива адрес каждого рисунка.

var
Str:array[0..100] of String;
C:Integer;

implementation
.....
procedure ButtonClick;
If OpenDialog1.Execute then
begin
C:=C+1;
TabControl1.Tabs.Add(IntToStr(c));
str[c]:=OpenDialog1.FileName;
end;
end;

procedure TForm1.TabControl1Change(Sender: TObject);
begin
StatusBar1.Panels[0].Text:=ExtractFileName(Str[StrToInt(TabControl1.Ta bs.Text)]);
Image1.Picture.LoadFromFile(Str[StrToInt(TabControl1.Tabs.Text)]);
end;

но приложение виснет напрочь уже на первой строчке.
Вопрос(ы):
1. Как сделать так что бы при выполнении этого кода приложение не зависало?
2. Может этот код можно записать проще и грамотнее, тода как?
Если я непонятно написал и спросил, то поясню всем кому непонятно, очень уж надо идею реализовать.


 
Моджахед   (2003-08-13 23:51) [1]

> но приложение виснет напрочь уже на первой строчке.

первая строка у тебя "var",
может, все таки, объяснишь по-человечески?


 
Abelisto ©   (2003-08-14 00:11) [2]

Хм... я бы это делал примерно так:
==================================
Pictures: array of TPicture;
..................................
procedure TForm1.BtnInsertClick(Sender: TObject);
begin
if od.Execute then
begin
TabControl1.Tabs.Add(ExtractFileName(od.FileName));
SetLength(Pictures,TabControl1.Tabs.Count);
Pictures[TabControl1.Tabs.Count-1] := TPicture.Create;
Pictures[TabControl1.Tabs.Count-1].LoadFromFile(od.FileName);
TabControl1.TabIndex := TabControl1.Tabs.Count-1;
TabControl1Change(TabControl1); // здесь вызов метода потому как событие TabControl1Change не вызывается при программной смене закладки
end;
end;

procedure TForm1.TabControl1Change(Sender: TObject);
begin
Image1.Picture.Assign(Pictures[TabControl1.TabIndex]); // Image1 лежит на клиентской части TabControl1
end;
====================================================
Проверено на Delphi 7
Ежели кто подскажет лучшее решение - буду безмерно благодарен :)
Спасибо за внимание.
ЗЫЖ И не забывать освобождать Pictures :)



Страницы: 1 вся ветка

Текущий архив: 2003.08.25;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-81824
cjiohobaji
2003-08-13 13:19
2003.08.25
QReport


1-81760
PsoFT
2003-08-14 15:19
2003.08.25
перевод из одного формата в другой


1-81778
Borealis
2003-08-13 14:33
2003.08.25
Порядок поиска dll ок


1-81692
Yuliya
2003-08-11 09:55
2003.08.25
типизированный файл


4-82000
3223(jab)
2003-06-24 09:38
2003.08.25
Рисуем не стандартное окно в дельфи...