Багатокритерiальна задача лiнiйного програмування
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
der, NewCols);
Sender is TStringGrid then:=TStringGrid(Sender);CurNum:=0 to Length(NewCols) - 1 do
{Заголовки лише для нефiксованих комiрок:}NewCols[CurNum]>=(Self.CHeadColNum+1) then. Cells [NewCols[CurNum], 0]:=(NewCols[CurNum] - Self.CHeadColNum);;;;
TGridFormattingProcs. UpdateLTaskHeadRowToStrGrid (SGrid:TStringGrid);
{Процедура для пiдтримки масиву рядка-заголовка пiд час редагування
таблицi. ВстановлюСФ довжину масиву вiдповiдно до ширини екранноСЧ таблицi
i координат вписування в неСЧ таблицi задачi, заповнюСФ новi комiрки
значеннями за змовчуванням, а також змiнюСФ останню комiрку перед новими.}CurLTaskVarCount, OldCount, CurVarMark: Integer;
{Кiлькiсть стовпцiв для коефiцiСФнтiв змiнних у таблицi:}:=SGrid. ColCount-Self.CHeadColNum-_LTaskColsBeforeVars {-bc_LTaskColsAfterVars};
{Якщо таблиця маСФ надто малу ширину, то нiчого тут не робимо:}CurLTaskVarCount<0 then Exit;
{Масив видовжуСФмо до кiлькостi стовпцiв у StringGrid, у яких
редагуСФмо коСФфiцiСФнти при змiнних:}:=Length (Self. CurHeadRow);OldCount<>CurLTaskVarCount then(Self. CurHeadRow, CurLTaskVarCount); {змiнюСФмо довжину}
{ЗаповнюСФмо новi елементи масиву значеннями за змовчуванням:
вiльнi змiннi:}CurVarMark:=OldCount to CurLTaskVarCount-2 do. CurHeadRow[CurVarMark].ElmType:=bc_IndependentVar;. CurHeadRow[CurVarMark].VarInitInRow:=True;. CurHeadRow[CurVarMark].VarInitPos:=CurVarMark;. CurHeadRow[CurVarMark].AsVarName:=sc_XVarName+IntToStr (CurVarMark+1);;
{Останнiй елемент СФ числом, а не змiнною: це множник стовпця
вiльних членiв (правих частин):}CurLTaskVarCount>0 then. CurHeadRow [CurLTaskVarCount-1].ElmType:=bc_Number;. CurHeadRow [CurLTaskVarCount-1].AsNumber:=1;
{Колишнiй останнiй елемент тепер буде змiнною:}(OldCount>0) and (OldCount<CurLTaskVarCount) then. CurHeadRow [OldCount-1].ElmType:=bc_IndependentVar;. CurHeadRow [OldCount-1].AsVarName:=sc_XVarName+IntToStr(OldCount);;;;
TGridFormattingProcs. UpdateLTaskHeadColToStrGrid (SGrid:TStringGrid;: array of Integer);
{Процедура для пiдтримки масиву стовпця-заголовка пiд час редагування
таблицi. ВстановлюСФ довжину масиву вiдповiдно до висоти екранноСЧ таблицi
i координат вписування в неСЧ таблицi задачi, заповнюСФ новi комiрки
значеннями за змовчуванням.
Вхiднi данi:- екранна таблиця, пiд яку треба настроСЧти масив;- масив номерiв рядкiв таблицi, що були доданi чи змiненi
(що зазнали змiн з часу останнього виклику цiСФСЧ процедури пiд час
редагування).}CurHeight, OldHeight, CurRow: Integer;FillWithDefVal (SElmNum: Integer);. CurHeadCol[SElmNum].ElmType:=bc_FuncVal;. CurHeadCol[SElmNum].VarInitInRow:=False;. CurHeadCol[SElmNum].VarInitPos:=SElmNum;. CurHeadCol[SElmNum].AsVarName:=sc_YFuncName+(SElmNum+1);;{Висота таблицi за поточною висотою екранноСЧ таблицi:}:=SGrid. RowCount-Self.CHeadRowNum-bc_LTaskRowsBeforeVars;:=Length (Self. CurHeadCol); {попередня висота таблицi}(OldHeight=0) then
{ЗмiнюСФмо довжину масиву стовпця-заголовка:}(Self. CurHeadCol, CurHeight);
CurRow:=OldHeight to CurHeight-1 do(CurRow); {заповнюСФмо новi комiрки за змовчуванням};;
TGridFormattingProcs. EdLineTaskOnDrawCell (Sender: TObject; ACol,: Integer; Rect: TRect; State: TGridDrawState);
{Процедура виконуСФться при малюваннi кожноСЧ комiрки StringGrid.
ЗафарбовуСФ в iнший колiр фону комiрок:
перший стовпець комiрок (стовпець-заголовок таблицi задачi лiнiйного
програмування). Комiрки цього стовпця зафарбовуються вiдповiдно до типiв
елементiв у масивi стовпця-заголовка (якщо цей масив створений для цих
комiрок, iнакше - за змовчуванням: кольором назв функцiй умов-нерiвностей,
i найнижчу комiрку - кольором для назви функцiСЧ мети);
останнiй стовпець (стовпець значень правих сторiн рiвнянь або
нерiвностей та комiрка значення цiльовоСЧ функцiСЧ);
найнижчий рядок (рядок коефiцiСФнтiв цiльовоСЧ функцiСЧ);
вiдмiчаСФ кольором комiрки-заголовки стовпцiв коефiцiСФнтiв змiнних
за вiдмiтками про залежнiсть змiнних (рядок-заголовок таблицi задачi ЛП).}CurGrid:TStringGrid; SafeBrushColor:TColor;:THeadLineElmType; CurColor:TColor;: Integer;
Sender=Nil then Exit;
{Якщо до вмикання форматування був якийсь обробник подiСЧ, запускаСФмо його:}@Self. OldOnDrawCell<>Nil then Self. OldOnDrawCell (Sender, ACol, ARow, Rect,);
:=ARow - (Self.CHeadRowNum+bc_LTaskRowsBeforeVars);Sender is TStringGrid then:=TStringGrid(Sender);:=CurGrid. Canvas. Brush. Color;:=bc_NotColored;
{Комiрки останнього стовпця СФ стовпцем правих сторiн рiвнянь.
ФарбуСФмо СЧх у блакитний колiр (окрiм комiрок заголовкiв):}Not (gdFixed in State) then {якщо комiрка не у заголовках StringGrid}ACol>=(CurGrid. ColCount-bc_LTaskColsAfterVars) then {останнi стовпцi:}
{Якщо це комiрка значення цiльовоСЧ функцiСЧ - для неСЧ свiй колiр:}Self. CurHeadCol[ArrRowNum].ElmType of_DestFuncToMax: CurColor:=lwc_DestFuncValColor;_DestFuncToMin: CurColor:=lwc_DestFuncValColor;CurColor:=lwc_RightSideColColor;;if ACol<(Self.CHeadColNum+bc_LTaskColsBeforeVars) then{Якщо першi стовпцi (стовпець-заголовок):}
{Якщо для цiСФСЧ комiрки задано елемент у масивi стовпця-заголовка,
то фарбуСФмо СЧСЧ залежно вiд типу цього елемента:}Length (Self. CurHeadCol)>
(ARow - (Self.CHeadRowNum + bc_LTaskRowsBeforeVars)) then{Тип елемента у комiрцi:}:=Self. CurHeadCol [ARow - (Self.CHeadRowNum+_LTaskRowsBeforeVars)].ElmType;:=GetColorByElmType(CurVarColState); {колiр за типом}{Якщо масив стовпця-заголовка не визначено для комiрки -
фарбуСФмо за змовчуванням - як назву функцiСЧ умови-нерiвностi:}:=lwc_HeadColColor;{Якщо рядок коефiцiСФнтiв при змiнних цiльовоСЧ функцiСЧ:}if (Self. CurHeadCol[ArrRowNum].ElmType=bc_DestFuncToMax) or
(Self. CurHeadCol[ArrRowNum].ElmType=bc_DestFuncToMin) then
{Якщо рядок функцiСЧ видiлений, то видiляСФмо кольором:}InSolving and (Self. CurGridSolveRow=ARow) then:=lwc_SolveRowColorCurColor:=lwc_FuncRowColor; {iнакше - колiр рядка функцiСЧ мети}{Якщо це розв'язувальна комiрка, чи рядок або стовпець з такою
комiркою, i треба вiдображати хiд вирiшування задачi:}if InSolving thenSelf. CurGridSolveCol=ACol then {якщо це розв'язувальний стовпець:}Self. CurGridSolveRow=ARow then {якщо це розв'язувальна комiрка:}:=lwc_SolveCellColorCurColor:=lwc_SolveColColor;{Якщо це розв'язувальний рядок (але не розв'язувальна комiрка):}if Self. CurGridSolveRow=ARow then CurColor:=lwc_SolveRowColor;;;
{ЗафарбовуСФмо комiрки-заголовки стовпцiв коефiцiСФнтiв при змiнних
вiдповiдно до масиву помiток про залежнiсть:}(ARow=Self.CHeadRowNum) and