Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
ВнизКак сие оптимизировать? ИМХО! Найти похожие ветки
← →
mctarik © (2006-05-10 12:13) [0]Привет Мастера!
И опять у меня не скромный вопрос:
Возможно ли это оптимизировать, в смысле
не меняя функционал -> уменьшить данный код?
***
procedure TForm1.Asm_Click(Sender: TObject);
begin
if Asm_.Checked then
SynPasSyn.AsmAttri.Foreground := clMaroon
else
SynPasSyn.AsmAttri.Foreground := clNone;
end;
procedure TForm1.Char_Click(Sender: TObject);
begin
if Char_.Checked then
SynPasSyn.CharAttri.Foreground := clTeal
else
SynPasSyn.CharAttri.Foreground := clNone;
end;
procedure TForm1.Comment_Click(Sender: TObject);
begin
if Comment_.Checked then
SynPasSyn.CommentAttri.Foreground := clNavy
else
SynPasSyn.CommentAttri.Foreground := clNone;
end;
procedure TForm1.Directive_Click(Sender: TObject);
begin
if Directive_.Checked then
SynPasSyn.DirectiveAttri.Foreground := clGreen
else
SynPasSyn.DirectiveAttri.Foreground := clNone;
end;
procedure TForm1.Float_Click(Sender: TObject);
begin
if Float_.Checked then
SynPasSyn.FloatAttri.Foreground := clAqua
else
SynPasSyn.FloatAttri.Foreground := clNone;
end;
procedure TForm1.Hex_Click(Sender: TObject);
begin
if Hex_.Checked then
SynPasSyn.HexAttri.Foreground := clRed
else
SynPasSyn.HexAttri.Foreground := clNone;
end;
procedure TForm1.Identifier_Click(Sender: TObject);
begin
if Identifier_.Checked then
SynPasSyn.IdentifierAttri.Foreground := clPurple
else
SynPasSyn.IdentifierAttri.Foreground := clNone;
end;
procedure TForm1.Key_Click(Sender: TObject);
begin
if Key_.Checked then
SynPasSyn.KeyAttri.Foreground := clBlack
else
SynPasSyn.KeyAttri.Foreground := clNone;
end;
procedure TForm1.Number_Click(Sender: TObject);
begin
if Number_.Checked then
SynPasSyn.NumberAttri.Foreground := clGray
else
SynPasSyn.NumberAttri.Foreground := clNone;
end;
procedure TForm1.Space_Click(Sender: TObject);
begin
if Space_.Checked then
SynPasSyn.SpaceAttri.Foreground := clMoneyGreen
else
SynPasSyn.SpaceAttri.Foreground := clNone;
end;
procedure TForm1.String_Click(Sender: TObject);
begin
if String_.Checked then
SynPasSyn.StringAttri.Foreground := clBlue
else
SynPasSyn.StringAttri.Foreground := clNone;
end;
procedure TForm1.Symbol_Click(Sender: TObject);
begin
if Symbol_.Checked then
SynPasSyn.SymbolAttri.Foreground := clLime
else
SynPasSyn.SymbolAttri.Foreground := clNone;
end;
***
С Уважением mctarik!
← →
Ega23 © (2006-05-10 12:16) [1]Мжно. Не то чтобы оптимизировать, а, скорее, облагородить.
← →
Desdechado © (2006-05-10 12:17) [2]а смысл?
несвязанные контролы имеют несвязанные реакции
то, что они похожи внешне, ни к чему не обязывает
← →
Sergey13 © (2006-05-10 12:29) [3]Попробовать повесить всю эту катавасию на onUpdate ActionManager-а - по крайней мере все в одном месте будет.
Но я пожалуй присоединюсь к [2] Desdechado © (10.05.06 12:17)
← →
Альф (2006-05-10 12:42) [4]IMHO только так
procedure SetCheckedColor(Attri: TSynHighlighterAttributes; Color: TColor; Value: boolean);
begin
if Value
then Attri.Foreground := Color
else Attri.Foreground := clNone;
end;
...
procedure TForm1.Asm_Click(Sender: TObject);
begin
SetCheckedColor(SynPasSyn.AsmAttri, clMaroon, Asm_.Checked );
end;
но это не оптимизация - это [1]
← →
Юрий Зотов © (2006-05-10 12:58) [5]> mctarik © (10.05.06 12:13)
У чекбоксов проставить Tag от 1 до 12 в том же порядке, как Вы перечислили их обработчики. Далее так.
const
Colors: array[1...12] of TColor = (clNavy, clAqua...clLime); // Тот же порядок
procedure SetColor(Attr: общий_тип; Sender: TObject);
begin
with TCheckBox(Sender) do
if Checked then
Attr.Foreground := Colors[Tag]
else
Attr.Foreground := clNone
end;
И теперь всем чекбоксам назначаем один общий обработчик:
procedure TForm1.CheckBoxClick(Sender: TObject);
begin
with SynPasSyn do
case TCheckBox(Sender).Tag of
1: SetColor(AsmAttri, Sender);
...
12: SetColor(SymbolAttri, Sender)
end
end;
И все.
← →
Desdechado © (2006-05-10 13:13) [6]Юрий Зотов © (10.05.06 12:58) [5]
это пока в обработчики отдельных чеков чего-нибудь дополнительно не попало
← →
Ega23 © (2006-05-10 13:15) [7]Я бы не стал в конкретных обработчиках назначать конкретные цвета. Потому как если понадобится изменить цвет - всё, амба.
← →
mctarik © (2006-05-10 19:05) [8]
> Юрий Зотов © (10.05.06 12:58) [5]
Всё получилось, О сколько нам открытий чудных ...
Всем большое спасибо за ваше внимание и поддержку!С Уважением mctarik!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.05.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c