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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 02:47   #1
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
Сообщение Улучшение кода

Доброй ночи еще раз

Код:
procedure TForm1.View(c: Char);
var t:string;
begin
  if (c='-')
   then
    begin
     t:=label1.Caption;
     delete(t,length(t),1);
     label1.Caption:=t;
    end
   else
    Label1.Caption:=Label1.Caption+c;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
    View('*');
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
    View('v');
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
   View('(');
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
   View(')');
end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
   View('X');
end;

procedure TForm1.BitBtn6Click(Sender: TObject);
begin
  View('Y');
end;
Как сделать код красивее
Можно конечно создать массив из BitBtn'ов
создавать их в oncreate формы....

А есть ли другой вариант ?
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 23.09.2010, 07:41   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

вот такой вариант:
1) Кидаешь на форму BitBtn сколько-то штук, но немного.
2) BitBtn1.Tag = 0, BitBtn2.Tag выставляешь 1 (можно в инспекторе объектов), BitBtn3.Tag выставляешь 2 и т.д. Привязка по Tag будет.
3) Выбираешь на форме или в окошке структуры - все BitBtn и в событии OnClick в инспекторе объектов на вкладке событий вешаешь им BitBtnsClick.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    Label1: TLabel;
    BitBtn4: TBitBtn;
    //обработка кликов по кнопкам
    procedure BitBtnsClick(Sender: TObject);

  private
    //обработка символов
    procedure CharReplace(Key: Char);
    { Private declarations }

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.BitBtnsClick(Sender: TObject);
begin
  if Sender is TBitBtn then
    case (Sender as TBitBtn).Tag of
      0: CharReplace('*');
      1: CharReplace('v');
      2: CharReplace('(');
      3: CharReplace('-');
    end;

end;

procedure TForm1.CharReplace(Key: Char);
var
  str: string;
begin

  if Key = '-' then
  begin

    if length(Label1.Caption) > 0 then
    begin
      str := Label1.Caption;
      delete(str, length(str), 1);
      Label1.Caption := str;
    end;

  end
  else
    Label1.Caption := Label1.Caption + key

end;

end.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 23.09.2010, 08:19   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Tag может и понадобится, да и хранит он только целое, что не всегда удобно.
Я уже давно делаю так:
Переопределяю класс кнопки:
Код:
  TBitBtn=class(Buttons.TBitBtn)
   c:char;
  end;
Заполняю поля кнопок:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 BitBtn1.c:='*'; BitBtn2.c:='v';
end;
И банально указав один обработчик всем кнопкам работаю с полем вызвавшей его кнопки:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 View(TBitBtn(Sender).c);
end;
Это надежнее и удобнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2010, 08:52   #4
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 Stilet - нну да, это лучше, согласен
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 23.09.2010, 19:15   #5
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
По умолчанию

Спасибо большое!
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Улучшение кода megachuhancer Общие вопросы Delphi 5 27.01.2010 00:42
Улучшение кода The riddle Помощь студентам 2 07.12.2009 10:00
Улучшение DBLookUpComboBox 1sal1 БД в Delphi 0 20.08.2008 16:11
Улучшение зрения Манжосов Денис :) Свободное общение 13 30.04.2008 13:21