Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.08.2008, 20:31
Beast Beast вне форума
Прохожий
 
Регистрация: 23.08.2008
Сообщения: 47
Репутация: 10
По умолчанию Как упростить код?

Использовал эффект при нажатии на панель для наглядности, можно как нибудь упростить такой код?
Код:
procedure TForm1.Panel7MouseDo(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel7.BevelOuter:=bvLowered;
end;

procedure TForm1.Panel7MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel7.BevelOuter:=bvRaised;
end;

procedure TForm1.Panel8MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel8.BevelOuter:=bvLowered;
end;

procedure TForm1.Panel8MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel8.BevelOuter:=bvRaised;
end;

procedure TForm1.Panel9MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel9.BevelOuter:=bvLowered;
end;

procedure TForm1.Panel9MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Panel9.BevelOuter:=bvRaised;
end;
Admin: Используем теги для оформления кода!

Последний раз редактировалось Admin, 23.08.2008 в 20:36.
Ответить с цитированием
  #2  
Старый 23.08.2008, 22:30
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

а вот так, пишешь процедуру
Код:
procedure TForm1.PanelMouse(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
 Panel: TPanel;
begin
 Panel := (Sender as TPanel);

  if Panel.BevelOuter = bvRaised then
   Panel.BevelOuter := bvLowered
  else
   Panel.BevelOuter := bvRaised;
end;

Кидаешь ее в
Код:
type
  TForm1 = class(TForm)
    ...
    procedure PanelMouse(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer); 
  private

И в Инспекторе каждой панели в свойства OnMouseUp и OnMouseDown прописываешь это процедурку
Ответить с цитированием
  #3  
Старый 23.08.2008, 22:38
Beast Beast вне форума
Прохожий
 
Регистрация: 23.08.2008
Сообщения: 47
Репутация: 10
По умолчанию

Спасибо, но программа прервалась на строке: Panel := (Sender as TPanel);

Сообщение EInvalidCast 'Invalid class typecast'

Поясни почему?

Последний раз редактировалось Beast, 23.08.2008 в 22:47.
Ответить с цитированием
  #4  
Старый 23.08.2008, 22:49
_dazem_ _dazem_ вне форума
Прохожий
 
Регистрация: 23.08.2008
Сообщения: 1
Репутация: 10
По умолчанию

Цитата:
Сообщение от Drozh
а вот так, пишешь процедуру
[code]
procedure TForm1.PanelMouse(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Panel: TPanel;
begin
Panel := (Sender as TPanel);
замени Panel := (Sender as TPanel) на
(TPanel(Panel))
Ответить с цитированием
  #5  
Старый 23.08.2008, 22:53
Beast Beast вне форума
Прохожий
 
Регистрация: 23.08.2008
Сообщения: 47
Репутация: 10
По умолчанию

Спасибо огромное, я сам ступил, первый вариант как часы работает)))

Последний раз редактировалось Beast, 23.08.2008 в 23:01.
Ответить с цитированием
  #6  
Старый 24.08.2008, 19:57
Beast Beast вне форума
Прохожий
 
Регистрация: 23.08.2008
Сообщения: 47
Репутация: 10
По умолчанию

Как можно тут объединить код?

Код:
procedure TForm2.ComboBox1Enter(Sender: TObject);
 begin
  RadioButton1.Checked := True;
 end;

procedure TForm2.ComboBox2Enter(Sender: TObject);
 begin
   RadioButton2.Checked := True;
 end;

procedure TForm2.ComboBox3Enter(Sender: TObject);
 begin
   RadioButton3.Checked := True;
 end;

Извиняюсь, что не в новой теме.

Последний раз редактировалось Beast, 24.08.2008 в 20:00.
Ответить с цитированием
  #7  
Старый 24.08.2008, 22:06
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Здесь ИМХО не как))) Используй RadioGroup

В его свойстве Items добавь три строки (можешь как хочешь назвать)
Для каждого ComboBox в свойство Tag поставь цыфрый 0, 1 и 2 для 1, 2 и 3 бокса соответсвенно

Пиши функцию
Код:
procedure TForm1.ComboBoxEnter(Sender: TObject);
begin
 RadioGroup1.ItemIndex := (Sender as TComboBox).Tag;
end;

(незабудь прописать в заголовке и для каждого бокса в соответствующем свойстве)
Ответить с цитированием
  #8  
Старый 24.08.2008, 22:45
Beast Beast вне форума
Прохожий
 
Регистрация: 23.08.2008
Сообщения: 47
Репутация: 10
По умолчанию

Спасибо!!!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025