|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.12.2017, 20:25 | #1 |
Новичок
Джуниор
Регистрация: 22.10.2017
Сообщений: 2
|
Сократить программный код
Помогите сократить программный код
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, XPMan; type TForm1 = class(TForm) Panel1: TPanel; BtnRectangle: TBitBtn; BtnEllipse: TBitBtn; BtnRoundRect: TBitBtn; Panel2: TPanel; editRed: TEdit; editGreen: TEdit; editBlue: TEdit; RedUpDown: TUpDown; GreenUpDown: TUpDown; Label1: TLabel; Label2: TLabel; Label3: TLabel; sbRedScroll: TScrollBar; sbGreenScroll: TScrollBar; sbBlueScroll: TScrollBar; shShape: TShape; StatusBar1: TStatusBar; blueUpDown: TUpDown; XPManifest1: TXPManifest; procedure FormCreate(Sender: TObject); procedure FGK(n: TObject); procedure sbScrollChange(Sender: TObject); procedure BtnClick(Sender: TObject); procedure editChange(Sender: TObject); private RedColor,GreenColor,BlueColor: TColor; { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin RedColor:=127; redUpDown.Position:=RedColor; sbRedScroll.Position:=RedColor; editRed.Text:=IntToStr(RedColor); GreenColor:=127; greenUpDown.Position:=GreenColor; sbGreenScroll.Position:=GreenColor; editGreen.Text:=IntToStr(GreenColor ); BlueColor:=127; blueUpDown.Position:=BlueColor; sbBlueScroll.Position:=BlueColor; editBlue.Text:=IntToStr(BlueColor); shShape.Brush.Color:=RGB(RedColor,G reenColor,BlueColor); end; procedure TForm1.BtnClick(Sender: TObject); begin case (sender as TBitBtn).tag of 0: shShape.Shape:=stRectangle; 1: shShape.Shape:=stEllipse; 2: shShape.Shape:=stRoundRect; end; end; procedure TForm1.editChange(Sender: TObject); var S: String; begin if (sender as TEdit).Name='editred' then begin S:=(sender as TEdit).Text; while Pos(' ',S)>0 do Delete(S,Pos(' ',S),1); if S='' then Exit; RedColor:=StrToInt(S); if RedColor<0 then RedColor:=0; if RedColor>255 then RedColor:=255; sbRedScroll.Position:=RedColor; RedUpDown.Position:=RedColor; shShape.Brush.Color:=RGB(RedColor,G reenColor,BlueColor); end; if (sender as TEdit).Name='editgreen' then begin S:=editGreen.Text; while Pos(' ',S)>0 do Delete(S,Pos(' ',S),1); if S='' then Exit; greenColor:=StrToInt(S); if GreenColor<0 then GreenColor:=0; if GreenColor>255 then GreenColor:=255; sbGreenScroll.Position:=GreenColor; GreenUpDown.Position:=GreenColor; shShape.Brush.Color:=RGB(RedColor,G reenColor,BlueColor); end; if (sender as TEdit).Name='editblue' then begin S:=editBlue.Text; while Pos(' ',S)>0 do Delete(S,Pos(' ',S),1); if S='' then Exit; blueColor:=StrToInt(S); if BlueColor<0 then BlueColor:=0; if BlueColor>255 then BlueColor:=255; sbBlueScroll.Position:=BlueColor; BlueUpDown.Position:=BlueColor; shShape.Brush.Color:=RGB(RedColor,G reenColor,BlueColor); end; end; procedure TForm1.sbScrollChange(Sender: TObject); begin if (sender as TScrollBar).Name='sbRedScroll' then begin RedColor:=sbRedScroll.Position; RedUpDown.Position:=RedColor; editRed.Text:=IntToStr(RedColor); shShape.Brush.Color:=RGB(RedColor,G reenColor,BlueColor); FGK(sender); end; if (sender as TScrollBar).Name='sbGreenScroll' then begin GreenColor:=sbGreenScroll.Position; GreenUpDown.Position:=GreenColor; editGreen.Text:=IntToStr(GreenColor ); shShape.Brush.Color:=RGB(RedColor,G reenColor,BlueColor); FGK(sender) end; if (sender as TScrollBar).Name='sbBlueScroll' then begin BlueColor:=sbBlueScroll.Position; BlueUpDown.Position:=BlueColor; editBlue.Text:=IntToStr(BlueColor); shShape.Brush.Color:=RGB(RedColor,G reenColor,BlueColor); FGK(sender) end; end; procedure TForm1.FGK(n: TObject); begin case (n as TScrollBar).Position of 1..50: StatusBar1.Panels[(n as TScrollBar).tag].Text:= 'Насыщенние цвета отсутсвует'; 51..100: StatusBar1.Panels[(n as TScrollBar).tag].Text:= 'Слабо насыщенный'; 101..150: StatusBar1.Panels[(n as TScrollBar).tag].Text:= 'Слабо насыщенный'; 151..200: StatusBar1.Panels[(n as TScrollBar).tag].Text:= 'Сильно насыщенный'; 201..255: StatusBar1.Panels[(n as TScrollBar).tag].Text:= 'Насыщеннеее максимальное'; end; end; end. |
06.12.2017, 21:28 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
аналогично этим объектам
Код:
Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 06.12.2017 в 21:47. |
06.12.2017, 21:48 | #3 | |
Новичок
Джуниор
Регистрация: 22.10.2017
Сообщений: 2
|
Спасибо за помощь, но у меня остался один вопрос, а можно ли как нибудь сократить процедуры в которых используются RedColor,GreenColor,BlueColor. Просто они повторяются, а как сократить я не знаю.
Цитата:
Последний раз редактировалось Retboon; 06.12.2017 в 21:57. Причина: Не отметил пользователя |
|
06.12.2017, 22:55 | #4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
в принципе другой способ сокращения кода для нескольких однотипных групп контролов
делаем Frame на него добавляем Edit, UpDown, ScrollBar (нашу группу взаимосвязанных конторолов) добавляем ДВА свойства Код:
Код:
Код:
теперь немножко о самой форме на ФОРМУ добавляем наш Frame три раза и как-то называем иx ...Red ...Green ... Blue пишем новый метод (процедуру) реакции на изменения в наших контролах(в их группах!!!) Код:
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 06.12.2017 в 23:05. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите сократить код. | Hadson | Помощь студентам | 1 | 30.01.2017 20:34 |
сократить код | kostan3 | Visual C++ | 0 | 15.03.2013 14:08 |
сократить код | Kirja23 | Microsoft Office Excel | 1 | 20.02.2013 22:34 |
сократить код | kostan3 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 17.02.2013 17:24 |
Сократить код | shapiro | Помощь студентам | 0 | 14.04.2010 17:38 |