Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 01:22   #1
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
Сообщение Оптимизация кода

Привет всем!
имеется неоптимальный код:
Код:
procedure TMainForm.Copy2Click(
  Sender: TObject);
begin
 if MessagesBox.Focused then
   Clipboard.AsText:=MessagesBox.Items[MessagesBox.ItemIndex];
 if RuMessagesBox.Focused then
   Clipboard.AsText:=RuMessagesBox.Items[RuMessagesBox.ItemIndex];
 if AzMessagesBox.Focused then
   Clipboard.AsText:=AzMessagesBox.Items[AzMessagesBox.ItemIndex];
end;
MessagesBox,RuMessagesBox,AzMessage sBox:TListBox;
Ещё есть AdvPageControl2, в страницах которого и находятся вышеуказанные листбксы.
надо сделать так чтобы была одна проверка, известно что фокус находится на определенном листбоксе.
nusik вне форума Ответить с цитированием
Старый 21.05.2009, 11:14   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Я бы на твоем месте когда вызываю эту твою Copy2Click, либо передавал в ее Sender нужный контрол типа:
Код:
Copy2Click(RuMessagesBox);
а сам обработчик:
Код:
procedure TMainForm.Copy2Click(
  Sender: TObject);
begin
 if TListBox(Sender)Focused then
   Clipboard.AsText:=TListBox(Sender).Items[TListBox(Sender).ItemIndex];
end;
Либо брал контрол в фокусе:
Код:
procedure TMainForm.Copy2Click(
  Sender: TObject);
begin
   Clipboard.AsText:=TListBox(ActiveControl).Items[TListBox(ActiveControl).ItemIndex];
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.05.2009, 17:55   #3
nusik
Форумчанин
 
Регистрация: 13.04.2009
Сообщений: 117
По умолчанию

Код:
procedure TMainForm.Copy2Click(
  Sender: TObject);
begin
 if TListBox(Sender)Focused then
   Clipboard.AsText:=TListBox(Sender).Items[TListBox(Sender).ItemIndex];
end;
TMainForm.Copy2Click это обработчик попап меню (AdvPageControl), т.е.
Sender не тот...как следаствие Abstract Error, не так ли?

Код:
procedure TMainForm.Copy2Click(
  Sender: TObject);
begin
   Clipboard.AsText:=TListBox(ActiveControl).Items[TListBox(ActiveControl).ItemIndex];
end;
Вот это работает чудненько.
добавил ещё условие
Код:
if TListBox(ActiveControl).Count>0 then
Clipboard.AsText:=TListBox(ActiveControl).Items[TListBox(ActiveControl).ItemIndex];
И всё тип-топ.
Stilet, спасибо.
nusik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация кода Terran Общие вопросы Delphi 6 01.11.2008 16:57
Оптимизация кода [Smarik] Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 20.08.2008 15:00
Оптимизация кода. MAKTECYMA Общие вопросы C/C++ 2 05.06.2008 16:48
Нужна оптимизация дельфинского кода JTG Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 29.05.2008 14:53
Оптимизация кода программы insi Фриланс 2 17.05.2008 18:30