Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.013 c
1-81687
h@1f-e1f
2003-08-11 11:50
2003.08.25
Загрузка HTML кода


1-81792
korvin
2003-08-14 08:51
2003.08.25
Правильное сворачивание всех окон программы из модальной


1-81754
Vulko
2003-08-09 03:12
2003.08.25
Почему компилятору не нравится эта строка?


1-81711
Lina
2003-08-11 09:47
2003.08.25
RichEdit


14-81880
Man
2003-08-07 17:57
2003.08.25
скоспилить приложение только с несколькими пакетами




   Наверх