Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.013 c
1-81630
Мак
2003-08-12 15:31
2003.08.25
Исключительные ситуации


1-81771
Relaxxx
2003-08-14 12:51
2003.08.25
Диманическое присвоение имени StringList


1-81655
MegaVolt
2003-08-12 10:03
2003.08.25
Как сравнить переменную процедурного типа?


3-81559
николай
2003-07-30 18:32
2003.08.25
помогите разобраться с DBGrid-ом


1-81733
Yanis
2003-08-10 16:54
2003.08.25
MultiSelect





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский