Мне было интересно, есть ли две функции для одной кнопки. Например, у меня есть stringgrid, в котором есть заказы, и с помощью кнопки я хочу суммировать все заказы, и с помощью той же кнопки я хочу вернуться в предыдущее состояние, когда заказы не суммировались.Две процедуры от одной кнопки
if Sender = reduceOrderBTN then
begin
J:=1;
reduceOrderBTN.Caption:= 'Show all';
qryReduceOrders.Close;
qryReduceOrders.Open;
end;
advOrderGrid.RowCount:= qryReduceOrders.RecordCount + 1;
while NOT qryReduceOrders.Eof do
begin
advOrderGrid.Cells[0, qryReduceOrders.RecNo] := IntToStr(qryReduceOrders.RecNo);
advOrderGrid.Cells[1, qryReduceOrders.RecNo] := qryReduceOrdersProductName.AsString;
advOrderGrid.Cells[2, qryReduceOrders.RecNo] := qryReduceOrdersSpecialWish.AsString;
advOrderGrid.Cells[3, qryReduceOrders.RecNo] := qryReduceOrdersQuantity.AsString;
advOrderGrid.Cells[4, qryReduceOrders.RecNo] := qryReduceOrdersprepTime.AsString;
advOrderGrid.Repaint;
qryReduceOrders.next;
end;
if (Sender = reduceOrderBTN) and (J = 1) then
formShow(nil);
//trying to get back to old state but this doesnt work
end;
Возьмем [действие] (http://docwiki.embarcadero.com/RADStudio/XE8/en/What_Is_an_Action) и флаг, содержащий состояние, в котором находится сетка. В этом обработчике событий выполнения действия запрашивают этот флаг и действуют соответствующим образом. Затем переведите флаг в другое состояние. – TLama
Вот и все. Вам нужно понятие ** state **. –
@Juuri Вы приняли ответ, предполагающий, что вы используете 'Tag'. Это будет работать, но с точки зрения разработки программного обеспечения это ужасная идея. Вы можете делать все, что захотите, но я вынужден сообщить вам, что использование «тега» таким образом - очень плохая практика. –