Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 26.12.2011, 20:03   #1
LatuSerge
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 10
По умолчанию Оптимизация кода

Есть довольно некрасивый код, потому что вовсю используется копипаст. Очень хотелось бы узнать как можно было бы автоматизировать этот процесс. Что то типа к этому виду или другому удобному:
Пример:
For i:=1 to 28 do begin
(FindComponent('KeyLabel'+IntToStr( i)) as TLabel).Visible:=False;
end;

А вот сам кусочек кода для оптимизации:

procedure TForm2.ProgramLabel1MouseEnter(Send er: TObject);
begin
ProgramLabel1.Font.Style:=[fsBold];
end;

procedure TForm2.ProgramLabel1MouseLeave(Send er: TObject);
begin
ProgramLabel1.Font.Style:=[];
end;

procedure TForm2.ProgramLabel2MouseEnter(Send er: TObject);
begin
ProgramLabel2.Font.Style:=[fsBold];
end;

procedure TForm2.ProgramLabel2MouseLeave(Send er: TObject);
begin
ProgramLabel2.Font.Style:=[];
end;

procedure TForm2.ProgramLabel3MouseEnter(Send er: TObject);
begin
ProgramLabel3.Font.Style:=[fsBold];
end;

procedure TForm2.ProgramLabel3MouseLeave(Send er: TObject);
begin
ProgramLabel3.Font.Style:=[];
end;

procedure TForm2.ProgramLabel6MouseEnter(Send er: TObject);
begin
ProgramLabel6.Font.Style:=[fsBold];
end;

procedure TForm2.ProgramLabel6MouseLeave(Send er: TObject);
begin
ProgramLabel6.Font.Style:=[];
end;

procedure TForm2.ProgramLabel4MouseEnter(Send er: TObject);
begin
ProgramLabel4.Font.Style:=[fsBold];
end;

procedure TForm2.ProgramLabel4MouseLeave(Send er: TObject);
begin
ProgramLabel4.Font.Style:=[];
end;

procedure TForm2.ProgramLabel5MouseEnter(Send er: TObject);
begin
ProgramLabel5.Font.Style:=[fsBold];
end;

procedure TForm2.ProgramLabel5MouseLeave(Send er: TObject);
begin
ProgramLabel5.Font.Style:=[];
end;

procedure TForm2.ProgramLabel7MouseEnter(Send er: TObject);
begin
ProgramLabel7.Font.Style:=[fsBold];
end;

procedure TForm2.ProgramLabel7MouseLeave(Send er: TObject);
begin
ProgramLabel7.Font.Style:=[];
LatuSerge вне форума   Ответить с цитированием
Старый 26.12.2011, 20:10   #2
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,997
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

назначить всем лейблам один обработчик, а доступ к лейблу вызвавшему событие получать доступ через Sender.
пример
Код:

(Sender as TLabel).Font.Style:=[fsBold];

__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 26.12.2011, 20:12   #3
LatuSerge
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 10
По умолчанию

Спасибо) А можешь в примере описать твой способ? Просто я с таким еще не сталкивался, а узнать очень интересно))
LatuSerge вне форума   Ответить с цитированием
Старый 26.12.2011, 20:17   #4
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,997
Репутация: 3402

icq: 446843180
skype: phoenix_proger
По умолчанию

я привел пример кода.
а назначение одного обработчика это выбрать в инспекторе объектов этот обработчик(прописать только один из них)
или выделить все лейблы и выбрать обработчик к ним(всем сразу)
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 26.12.2011, 20:19   #5
LatuSerge
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 10
По умолчанию

Ах..Точно))) Большое спасибо)))) Пошел оптимизировать код)))
LatuSerge вне форума   Ответить с цитированием
Старый 26.12.2011, 20:34   #6
LatuSerge
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 10
По умолчанию

А вот похожий код который не получается оптимизировать((


procedure TForm2.ProgramLabel1Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=2;
end;

procedure TForm2.ProgramLabel2Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=3;
end;

procedure TForm2.ProgramLabel3Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=4;
end;

procedure TForm2.ProgramLabel4Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=5;
end;

procedure TForm2.ProgramLabel5Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=6;
end;

procedure TForm2.ProgramLabel6Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=7;
end;

procedure TForm2.ProgramLabel7Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=8;
end;

procedure TForm2.ProgramLabel8Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=9;
end;

procedure TForm2.ProgramLabel9Click(Sender: TObject);
begin
NotebookPrograms1.PageIndex:=10;
end;
LatuSerge вне форума   Ответить с цитированием
Старый 26.12.2011, 20:35   #7
LatuSerge
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 10
По умолчанию

Просто сдесь каждый Label ведет на определенную страницу Notebook и я не знаю как можно было бы оптимизировать такой код
LatuSerge вне форума   Ответить с цитированием
Старый 26.12.2011, 20:57   #8
veniside
Профессионал
 
Регистрация: 03.01.2011
Сообщений: 2,508
Репутация: 868
По умолчанию

Код:

NotebookPrograms1.PageIndex := (Sender as TLabel).Tag;

__________________
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума   Ответить с цитированием
Старый 26.12.2011, 21:01   #9
LatuSerge
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 10
По умолчанию

Большое Спасибо!!!!! Вообще шикарно)))) Пожалуй мне надо выучить Sender и Tag)))
LatuSerge вне форума   Ответить с цитированием
Старый 26.12.2011, 22:48   #10
kettanaito
Веб-дизайнер
Форумчанин
 
Аватар для kettanaito
 
Регистрация: 11.08.2011
Адрес: Украина
Сообщений: 305
Репутация: 18
По умолчанию

Или как вариант создай свою функцию/процедуру.
Код:

procedure TForm2.SetNoteBookIndex(Index:Integer);
begin
NotebookPrograms1.PageIndex:=Index;
end;

procedure TForm2.ProgramLabel9Click(Sender: TObject);
begin
SetNotebookIndex(10);
end;

На случай если в качестве Sender не всегда бывает TLabel.
kettanaito вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода LuckyTheGreat C# (си шарп) 3 15.07.2011 00:46
Оптимизация кода Shouldercannon Общие вопросы Delphi 23 22.07.2010 22:45
Оптимизация кода. Alex Cones Общие вопросы Delphi 19 12.10.2009 20:51
Оптимизация кода nusik Общие вопросы Delphi 2 21.05.2009 17:55
Оптимизация кода [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 20.08.2008 15:00


15:58.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru