|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.12.2011, 20:03 | #1 |
Регистрация: 18.04.2011
Сообщений: 7
|
Оптимизация кода
Есть довольно некрасивый код, потому что вовсю используется копипаст. Очень хотелось бы узнать как можно было бы автоматизировать этот процесс. Что то типа к этому виду или другому удобному:
Пример: 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:=[]; |
26.12.2011, 20:10 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
назначить всем лейблам один обработчик, а доступ к лейблу вызвавшему событие получать доступ через Sender.
пример Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
26.12.2011, 20:12 | #3 |
Регистрация: 18.04.2011
Сообщений: 7
|
Спасибо) А можешь в примере описать твой способ? Просто я с таким еще не сталкивался, а узнать очень интересно))
|
26.12.2011, 20:17 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
я привел пример кода.
а назначение одного обработчика это выбрать в инспекторе объектов этот обработчик(прописать только один из них) или выделить все лейблы и выбрать обработчик к ним(всем сразу) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
26.12.2011, 20:19 | #5 |
Регистрация: 18.04.2011
Сообщений: 7
|
Ах..Точно))) Большое спасибо)))) Пошел оптимизировать код)))
|
26.12.2011, 20:34 | #6 |
Регистрация: 18.04.2011
Сообщений: 7
|
А вот похожий код который не получается оптимизировать((
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; |
26.12.2011, 20:35 | #7 |
Регистрация: 18.04.2011
Сообщений: 7
|
Просто сдесь каждый Label ведет на определенную страницу Notebook и я не знаю как можно было бы оптимизировать такой код
|
26.12.2011, 20:57 | #8 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
26.12.2011, 21:01 | #9 |
Регистрация: 18.04.2011
Сообщений: 7
|
Большое Спасибо!!!!! Вообще шикарно)))) Пожалуй мне надо выучить Sender и Tag)))
|
26.12.2011, 22:48 | #10 |
Веб-дизайнер
Форумчанин
Регистрация: 11.08.2011
Сообщений: 305
|
Или как вариант создай свою функцию/процедуру.
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация кода | 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 |