Главная страница
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.027 c
1-81760
PsoFT
2003-08-14 15:19
2003.08.25
перевод из одного формата в другой


14-81894
Е-Моё имя
2003-08-05 13:15
2003.08.25
откуда прога запущена под DOS(!!!) ?


1-81820
Andry
2003-08-13 16:49
2003.08.25
Открытие приложения из DElphi


7-81983
O?O
2003-05-30 06:16
2003.08.25
Файловый кеш


14-81961
aga
2003-08-06 17:25
2003.08.25
Окно из DLL...