Advertisement
Cabana_Mario_Ariel_F

Taller3Metodologia

Sep 15th, 2020 (edited)
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 19.35 KB | None | 0 0
  1. unit taller03 ;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. interface
  6.  
  7. uses
  8.   Classes , SysUtils , Forms , Controls , Graphics , Dialogs , StdCtrls , Grids ,
  9.   ExtCtrls , ComCtrls , Buttons ;
  10.  
  11. type
  12.  
  13.   { TfrmDeposito }
  14.  
  15.   TfrmDeposito = class(TForm )
  16.     btbModificarSeleccion : TBitBtn ;
  17.     btbMostrarPrecio : TBitBtn ;
  18.     btbMostrarDescripcion : TBitBtn ;
  19.     btbSalir : TBitBtn ;
  20.     btbBuscar1 : TBitBtn ;
  21.     btbAlertaStock1 : TBitBtn ;
  22.     btbGuardar : TBitBtn ;
  23.     ckbActivo : TCheckBox ;
  24.     cmbTipo1 : TComboBox ;
  25.     edtBusqueda : TEdit ;
  26.     edtDescripcion : TEdit ;
  27.     edtCodigo1 : TEdit ;
  28.     edtPrecio1 : TEdit ;
  29.     edtStock1 : TEdit ;
  30.     edtStockMinimo1 : TEdit ;
  31.     edtTipoA1 : TEdit ;
  32.     edtTipoB1 : TEdit ;
  33.     edtTipoC1 : TEdit ;
  34.     gpbTipoMinimo : TGroupBox ;
  35.     gpbStringGrid : TGroupBox ;
  36.     grdDeposito1 : TStringGrid ;
  37.     imgUnju : TImage ;
  38.     lblMensajeBusqueda : TLabel ;
  39.     lblCodigo1 : TLabel ;
  40.     lblCodigo2 : TLabel ;
  41.     lblDescripcion : TLabel ;
  42.     lblPrecio1 : TLabel ;
  43.     lblStock1 : TLabel ;
  44.     lblTipo1 : TLabel ;
  45.     lblStockMInimo1 : TLabel ;
  46.     lblTipoA1 : TLabel ;
  47.     lblTipoB1 : TLabel ;
  48.     lblTipoC1 : TLabel ;
  49.     lblTipoProducto1 : TLabel ;
  50.     lblEstado : TLabel ;
  51.     lblTitulo1 : TLabel ;
  52.     memDescripcion : TMemo ;
  53.     memCodigo : TMemo ;
  54.     memEstado : TMemo ;
  55.     memStock : TMemo ;
  56.     memPrecio : TMemo ;
  57.     memTipo : TMemo ;
  58.     pgcCargarBuscar : TPageControl ;
  59.     pnlPrincipal : TPanel ;
  60.     pnlUnju : TPanel ;
  61.     tbsCargar : TTabSheet ;
  62.     tbsBuscar : TTabSheet ;
  63.     procedure btbAlertaStock1Click (Sender : TObject );
  64.     procedure btbBuscar1Click (Sender : TObject );
  65.     procedure btbGuardarClick (Sender : TObject );
  66.     procedure btbModificarSeleccionClick (Sender : TObject );
  67.     procedure btbMostrarDescripcionClick (Sender : TObject );
  68.     procedure btbSalirClick (Sender : TObject );
  69.     procedure btbMostrarPrecioClick (Sender : TObject );
  70.     procedure btnSalirClick (Sender : TObject );
  71.     procedure edtCodigoChange (Sender : TObject );
  72.     procedure edtPrecioChange (Sender : TObject );
  73.     procedure edtStockChange (Sender : TObject );
  74.     procedure edtTipoAChange (Sender : TObject );
  75.     procedure edtTipoProductoChange (Sender : TObject );
  76.     procedure FormCreate (Sender : TObject );
  77.     procedure imgUnjuClick (Sender : TObject );
  78.     procedure lblStockClick (Sender : TObject );
  79.     procedure pnlUnjuClick (Sender : TObject );
  80.   private
  81.  
  82.   public
  83.  
  84.   end;
  85.   TString10 = String[10];
  86.   Tstring50 = String[50];
  87.    TArticulo = record     //Tipo Registro de Articulos
  88.      Codigo, Stock: integer;
  89.      Precio_Unitario: real;
  90.      Tipo_Articulo : char;
  91.      descripcion: Tstring50;
  92.      estado: TString10;
  93.   end;
  94.   TListaArticulos = Array[1..100] of TArticulo; // Tipo vector de Articulos
  95.  
  96. var
  97.   frmDeposito : TfrmDeposito ;
  98.   Lista_Articulos : TListaArticulos;
  99.   Nro_Articulos,i ,countA, countB, countC, minimoStock,seleccionado : integer;
  100.   modificar : boolean;
  101. implementation
  102.  
  103. {$R *.lfm}
  104.  
  105. { TfrmDeposito }
  106. function BuscarEstado(): string;//Asigna el estado en palabras al registro estado;
  107. begin
  108.    if frmDeposito.ckbActivo.Checked then
  109.      BuscarEstado:='Activo'
  110.    else
  111.      BuscarEstado:='Inactivo';
  112. end;
  113. function Obligatorios(): boolean;//Valida Todos los Datos.
  114. var
  115.    valido: boolean;
  116. begin
  117.      valido := true;
  118.      if(frmDeposito.edtCodigo1.Text = '') then
  119.         valido := false;
  120.      if(frmDeposito.edtDescripcion.Text = '') then
  121.         valido := false;
  122.      if(frmDeposito.cmbTipo1.ItemIndex = -1) then
  123.         valido := false;
  124.      if(frmDeposito.edtPrecio1.Text = '') then
  125.         valido := false;
  126.      if(frmDeposito.edtStock1.Text = '') then
  127.         valido := false;
  128.  
  129.      Obligatorios := valido;
  130. end;
  131. function existeCodigo(CodigoA: integer): boolean; //Verifica que no se repiten códigos.
  132. var
  133.    existe : boolean;
  134. begin
  135.      existe := false;
  136.      i := 1;
  137.      while ( i <= Nro_Articulos) and not(existe) do
  138.      begin
  139.          if(CodigoA=Lista_Articulos[i].Codigo) then
  140.             existe := true;
  141.          i := i + 1;
  142.      end;
  143.      existeCodigo := existe;
  144. end;
  145. procedure restaContadorTipo(corresponde:Char);//Resta el Tipo contador que corresponde.
  146. begin
  147.      if corresponde='A' then
  148.         countA:=countA-1;
  149.      if corresponde='B' then
  150.         countB:=countB-1;
  151.      if corresponde='C' then
  152.         countC:=countC-1;
  153. end;
  154. procedure ContadorTipoRenovar(Ti: String; anterior:Char);//Refresca Tipo contador si se modifica.
  155. begin
  156.      if Ti[1]=anterior then
  157.         restaContadorTipo(Ti[1])
  158.      else
  159.         restaContadorTipo(anterior);
  160. end;
  161.  
  162. function StrToChar(Ti:String): char;//Cuenta cada tipo de Articulo y transforma a Char el Item que se selcciono.
  163. begin
  164.    if Ti[1]='A' then
  165.       countA:=countA+1;
  166.    if Ti[1]='B' then
  167.       countB:=countB+1;
  168.    if Ti[1]='C' then
  169.       countC:=countC+1;
  170.    StrToChar:=Ti[1];
  171. end;
  172.  
  173. procedure leerArticulo(var arti: TArticulo);//Llena la variable del tipo Registro.
  174. begin
  175.      arti.Codigo :=StrToInt(frmDeposito.edtCodigo1.Text);
  176.      arti.descripcion :=frmDeposito.edtDescripcion.Text ;
  177.      arti.Tipo_Articulo :=StrToChar (frmDeposito.cmbTipo1.Items[frmDeposito.cmbTipo1.ItemIndex]);
  178.      arti.estado :=BuscarEstado;
  179.      arti.Precio_Unitario := StrToFloat(frmDeposito.edtPrecio1.Text);
  180.      arti.Stock :=StrToInt(frmDeposito.edtStock1.Text);
  181.  
  182. end;
  183. procedure agregarArticulo(arti: TArticulo);//Agrega una variable ,del tipo de registro, al Vector.
  184. begin
  185.      Nro_Articulos := Nro_Articulos + 1;
  186.      Lista_Articulos[Nro_Articulos] := arti;
  187. end;
  188. procedure llenarStringGrid(pocisionVector: integer; fila: integer);//Se muestran datos para "una fila" de StringGrid.
  189. var
  190.    CodigoString, PrecioUnitarioString, StockString: String;
  191. begin
  192.       Str(Lista_Articulos[pocisionVector].Codigo, CodigoString);
  193.       Str(Lista_Articulos[pocisionVector].Precio_Unitario:7:2, PrecioUnitarioString);
  194.       Str(Lista_Articulos[pocisionVector].Stock, StockString);
  195.  
  196.       frmDeposito.grdDeposito1.Cells[1, fila] := CodigoString;
  197.       frmDeposito.grdDeposito1.Cells[2, fila] := Lista_Articulos[pocisionVector].descripcion;
  198.       frmDeposito.grdDeposito1.Cells[3, fila] := Lista_Articulos[pocisionVector].Tipo_Articulo;
  199.       frmDeposito.grdDeposito1.Cells[4, fila] := Lista_Articulos[pocisionVector].estado;
  200.       frmDeposito.grdDeposito1.Cells[5, fila] := PrecioUnitarioString;
  201.       frmDeposito.grdDeposito1.Cells[6, fila] := StockString;
  202.  
  203. end;
  204. procedure mostrarArticulos();//Muestra todos los Articulos en StringGrid.
  205. var
  206.    fila: integer;
  207. begin
  208.   frmDeposito.grdDeposito1.RowCount := 1;
  209.   for i:= 1 to Nro_Articulos do
  210.   begin
  211.       frmDeposito.grdDeposito1.RowCount := frmDeposito.grdDeposito1.RowCount + 1;
  212.       fila := frmDeposito.grdDeposito1.RowCount - 1;
  213.       llenarStringGrid(i,fila);
  214.   end;
  215. end;
  216. function MenorStock(numeroPosicion: integer;valorminimo: integer):integer;//Obtiene el valor del menor Stock del Vector.
  217. var
  218.    min: integer;
  219. begin
  220.      min:=valorminimo;
  221.      if (Lista_Articulos[numeroPosicion].Stock<min) then
  222.         min:=Lista_Articulos[numeroPosicion].Stock;
  223.      MenorStock:=min;
  224. end;
  225. function MinimoRenovar():integer;//Refresca minimoStock si se modifica.
  226. var
  227.    nuevominimo: integer;
  228. begin
  229.         nuevominimo:=Lista_Articulos[1].Stock;
  230.         for i:=2 to Nro_Articulos do
  231.         begin
  232.              nuevominimo:=MenorStock(i,nuevominimo);
  233.         end;
  234.      MinimoRenovar:=nuevominimo;
  235. end;
  236. procedure mostrarStockMinimo();//Muestra los Articulos que tienen menor el Stock en comun ,en StringGrid.
  237. var
  238.    fila: integer;
  239. begin
  240.      frmDeposito.grdDeposito1.RowCount := 1;
  241.      for i:= 1 to Nro_Articulos do
  242.      begin
  243.          if Lista_Articulos[i].Stock=minimoStock then
  244.          begin
  245.            frmDeposito.grdDeposito1.RowCount := frmDeposito.grdDeposito1.RowCount + 1;
  246.            fila := frmDeposito.grdDeposito1.RowCount - 1;
  247.            llenarStringGrid(i,fila);
  248.          end;
  249.      end;
  250. end;
  251. procedure mostrarSmyTipos();//Muestra Stock minimo y numero de cada tipo.
  252. begin
  253.    frmDeposito.edtStockMinimo1.Text:=IntToStr(minimoStock);
  254.    frmDeposito.edtTipoA1.Text:=IntToStr(countA);
  255.    frmDeposito.edtTipoB1.Text:=IntToStr(countB);
  256.    frmDeposito.edtTipoC1.Text:=IntToStr(countC);
  257. end;
  258. procedure intercambio(var p1: TArticulo; var p2: TArticulo);//Intercambia los registros que hay en el vector
  259. var
  260.   aux : TArticulo;
  261. begin
  262.   aux := p1;
  263.   p1 := p2;
  264.   p2 := aux;
  265. end;
  266. //procedure particion(primer: integer;ulti: integer); //Particion para el metodo Quick
  267. //var
  268. //  Derecha, Izquierda, pivot: integer;
  269. //  auxiliar : TArticulo;
  270. //begin
  271. //    Derecha:=primer;
  272. //    Izquierda:=ulti;
  273. //    pivot:=Lista_Articulos[(primer+ulti) div 2].Codigo;
  274. //    repeat
  275. //          while (Lista_Articulos[Derecha].Codigo <pivot) do
  276. //                Derecha:=Derecha+1;
  277. //          while (Lista_Articulos[Izquierda].Codigo >pivot) do
  278. //                Izquierda:=Izquierda-1;
  279. //          if Derecha<=Izquierda then
  280. //          begin
  281. //            //intercambio(Lista_Articulos[Derecha],Lista_Articulos[Izquierda]);
  282. //            auxiliar:= Lista_Articulos[Derecha];
  283. //            Lista_Articulos[Derecha]:=Lista_Articulos[Izquierda];
  284. //            Lista_Articulos[Izquierda]:=auxiliar;
  285. //            Derecha:=Derecha+1;
  286. //            Izquierda:=Izquierda-1;
  287. //          end;
  288. //    until Derecha>Izquierda;
  289. //    if primer<Izquierda then
  290. //       particion(primer, Izquierda);
  291. //    if Derecha<ulti then
  292. //       particion(primer, ulti)
  293. //end;
  294. procedure ordenarShell2();//Ordenar ascendentemente por metodo shell
  295. var
  296.   salto,j: integer;
  297.   hecho: boolean;
  298. begin
  299.   salto:= Nro_Articulos;
  300.   while (salto>1) do
  301.   begin
  302.       salto:= salto div 2;
  303.       repeat
  304.         hecho:=True;
  305.         for j:=1 to (Nro_Articulos-salto) do
  306.         begin
  307.             i:= j+salto;
  308.             if (Lista_Articulos[j].Codigo > Lista_Articulos[j+1].Codigo) then
  309.             begin
  310.                intercambio(Lista_Articulos[j], Lista_Articulos[j+1]);
  311.                hecho:= false;
  312.             end;
  313.         end;
  314.       until hecho;
  315.   end;
  316.  
  317. end;
  318. //procedure ordenarQuick(); //Ordena Ascendentemente por metodo Quick
  319. //var
  320. //  primero, ultimo: integer;
  321. //begin
  322. //     primero:=1;
  323. //     ultimo:=Nro_Articulos;
  324. //     if primero<ultimo then
  325. //        particion(primero,ultimo);
  326. //end;
  327. function busquedaBinaria(): integer;//Cuenta cada tipo de Articulo y transforma a Char el Item que se selcciono.
  328. var
  329.    encontro:boolean;
  330.    pInicial, pFinal, pMedio: integer;
  331. begin
  332.    encontro:=false;
  333.    pInicial:=1;
  334.    pFinal:=Nro_Articulos;
  335.    busquedaBinaria:=-1;
  336.    while (encontro=false) and (pInicial<=pFinal) do
  337.    begin
  338.         pMedio:=(pInicial+pFinal) div 2;
  339.         if Lista_Articulos[pMedio].Codigo=StrToInt(frmDeposito.edtBusqueda.Text) then
  340.         begin
  341.              encontro:=True;
  342.              busquedaBinaria:=pMedio;
  343.         end
  344.         else
  345.         begin
  346.              if Lista_Articulos[pMedio].Codigo<StrToInt(frmDeposito.edtBusqueda.Text) then
  347.                 pInicial:=pMedio+1
  348.              else
  349.                 pFinal:=pMedio-1;
  350.         end;
  351.    end;
  352. end;
  353. procedure mostrarCodigo();//Muestra el Articulo a Buscar por Código, en StringGrid.
  354. var
  355.    posicionEcontrada: integer;
  356. begin
  357.   frmDeposito.grdDeposito1.RowCount := 1;
  358.   ordenarShell2();
  359.   posicionEcontrada:= busquedaBinaria();
  360.   if posicionEcontrada<>-1 then
  361.   begin
  362.        frmDeposito.lblMensajeBusqueda.Visible :=False;
  363.        frmDeposito.grdDeposito1.RowCount := frmDeposito.grdDeposito1.RowCount + 1;
  364.        llenarStringGrid(posicionEcontrada,1);
  365.   end
  366.   else
  367.   begin
  368.        frmDeposito.lblMensajeBusqueda.Caption :='No existe'+#13+'el código solicitado';
  369.        frmDeposito.lblMensajeBusqueda.Visible :=True;
  370.   end;
  371. end;
  372. procedure llenarArticuloRamdom();//Llena la variable del tipo Registro.
  373. var
  374.   artic:TArticulo;
  375.   j:integer;
  376. begin
  377.   j:=0;
  378.   while (j<=9) do
  379.   begin
  380.      artic.Codigo :=StrToInt (frmDeposito.memCodigo.Lines[j]);
  381.      artic.descripcion :=frmDeposito.memDescripcion.Lines[Random(frmDeposito.memDescripcion.Lines.Count)];
  382.      artic.Tipo_Articulo :=StrToChar (frmDeposito.memTipo.Lines[Random(frmDeposito.memTipo.Lines.Count)]);
  383.      artic.estado :=frmDeposito.memEstado.Lines[Random(frmDeposito.memEstado.Lines.Count)];
  384.      artic.Precio_Unitario :=StrToFloat(frmDeposito.memPrecio.Lines[Random(frmDeposito.memPrecio.Lines.Count)]);
  385.      artic.Stock :=StrToInt(frmDeposito.memStock.Lines[Random(frmDeposito.memStock.Lines.Count)]);
  386.      agregarArticulo(artic);
  387.      mostrarArticulos();
  388.      if Nro_Articulos=1 then
  389.      minimoStock:=Lista_Articulos[1].Stock
  390.      else
  391.      minimoStock:=MenorStock(Nro_Articulos,minimoStock);
  392.      mostrarSmyTipos();
  393.      j:=j+1;
  394.   end;
  395.   frmDeposito.btbModificarSeleccion.Enabled :=True;
  396. end;
  397. procedure habilitarBotones(siono:boolean);//Habilita o no todos los botones menos el guardar;
  398. begin
  399.    frmDeposito.btbBuscar1.Enabled :=siono;
  400.    frmDeposito.btbAlertaStock1.Enabled :=siono;
  401.    frmDeposito.btbMostrarDescripcion.Enabled :=siono;
  402.    frmDeposito.btbMostrarPrecio.Enabled :=siono;
  403.    frmDeposito.btbModificarSeleccion.Enabled :=siono;
  404. end;
  405. procedure TfrmDeposito .edtCodigoChange (Sender : TObject );
  406. begin
  407.  
  408. end;
  409.  
  410. procedure TfrmDeposito .btnSalirClick (Sender : TObject );//Salir.
  411. begin
  412.   close;
  413. end;
  414.  
  415.  
  416.  
  417. procedure TfrmDeposito .btbAlertaStock1Click (Sender : TObject );
  418. begin
  419.   if Nro_Articulos<>0 then
  420.     mostrarStockMinimo();
  421. end;
  422.  
  423. procedure TfrmDeposito .btbBuscar1Click (Sender : TObject );
  424. begin
  425.   if Nro_Articulos<>0 then
  426.      if edtBusqueda.Text<>'' then
  427.         mostrarCodigo()
  428.      else
  429.        begin
  430.         lblMensajeBusqueda.Caption :='Ingrese un código'+#13+'     por favor';
  431.         lblMensajeBusqueda.Visible :=True;
  432.        end;
  433. end;
  434.  
  435. procedure TfrmDeposito .btbGuardarClick (Sender : TObject );
  436.   var
  437.   articulo: TArticulo;
  438.   filaselecionada: integer;
  439. begin
  440.   if(not Obligatorios()) then
  441.           ShowMessage('Debe ingresar todos los campos')
  442.   else if modificar=False then
  443.         begin
  444.              if (existeCodigo(StrToInt(edtCodigo1.Text))) then
  445.                 ShowMessage('Codigo ya existe')
  446.              else
  447.                begin
  448.                  lblMensajeBusqueda.Visible :=False;
  449.                  leerArticulo(articulo);
  450.                  agregarArticulo(articulo);
  451.                  mostrarArticulos();
  452.                  btbModificarSeleccion.Enabled :=True;
  453.                  if Nro_Articulos=1 then
  454.                     minimoStock:=Lista_Articulos[1].Stock
  455.                  else
  456.                  minimoStock:=MenorStock(Nro_Articulos,minimoStock);
  457.                  mostrarSmyTipos();
  458.                end;
  459.         end
  460.         else
  461.         begin
  462.             if (edtCodigo1.Text<>IntToStr(Lista_Articulos[seleccionado].Codigo)) and (existeCodigo(StrToInt(edtCodigo1.Text)))then
  463.                ShowMessage('Codigo ya existe')
  464.             else
  465.             begin
  466.                  lblMensajeBusqueda.Visible :=False;
  467.                  ContadorTipoRenovar(frmDeposito.cmbTipo1.Items[frmDeposito.cmbTipo1.ItemIndex],Lista_Articulos[seleccionado].Tipo_Articulo);
  468.                  for i:=1 to (grdDeposito1.RowCount-1) do
  469.                  begin
  470.                       if IntToStr(Lista_Articulos[seleccionado].Codigo)=grdDeposito1.Cells[1,i] then
  471.                            filaselecionada:=i;
  472.                  end;
  473.                  leerArticulo(articulo);
  474.                  Lista_Articulos[seleccionado] := articulo;
  475.                  llenarStringGrid(seleccionado,filaselecionada);
  476.                  minimoStock:=MinimoRenovar();
  477.                  mostrarSmyTipos();
  478.                  modificar:=False;
  479.                  btbGuardar.Caption :='Guardar Producto';
  480.                  habilitarBotones(True);
  481.             end;
  482.         end;
  483. end;
  484.  
  485. procedure TfrmDeposito .btbModificarSeleccionClick (Sender : TObject );
  486. var
  487.    codin, mos: String;
  488.  
  489. begin
  490.   if grdDeposito1.RowCount=1 then
  491.     ShowMessage('No se puede seleccionar nada')
  492.   else
  493.   begin
  494.     habilitarBotones(False);
  495.     frmDeposito.lblMensajeBusqueda.Caption :='Modifique en la'+#13+'pestaña Producto';
  496.     frmDeposito.lblMensajeBusqueda.Visible :=True;
  497.     mos:=IntToStr(grdDeposito1.Row);
  498.     codin:=grdDeposito1.Cells[1,grdDeposito1.Row];
  499.     for i:= 1 to Nro_Articulos do
  500.     begin
  501.         if Lista_Articulos[i].Codigo=StrToInt(codin) then
  502.         begin
  503.           seleccionado:=i;
  504.         end;
  505.     end;
  506.     ShowMessage('Fila Selecionada = ('+mos+') y Código selecionado '+codin);
  507.     if(seleccionado<>0) then
  508.     begin
  509.          modificar :=True;
  510.          edtCodigo1.Text:=IntToStr(Lista_Articulos[seleccionado].Codigo);
  511.          edtDescripcion.Text :=Lista_Articulos[seleccionado].descripcion;
  512.          cmbTipo1.Text:=Lista_Articulos[seleccionado].Tipo_Articulo;
  513.          if (Lista_Articulos[seleccionado].estado='Activo')then
  514.             ckbActivo.Checked:=True
  515.          else
  516.             ckbActivo.Checked:=False;
  517.          edtPrecio1.Text:=FloatToStr(Lista_Articulos[seleccionado].Precio_Unitario);
  518.          edtStock1.Text :=IntToStr(Lista_Articulos[seleccionado].Stock);
  519.          btbGuardar.Caption :='Modificar Producto';
  520.     end;
  521.   end;
  522. end;
  523.  
  524.  
  525. procedure ordenarShell();//Ordenar ascendentemente por metodo shell
  526. var
  527.   salto,j: integer;
  528.   hecho: boolean;
  529. begin
  530.   salto:= Nro_Articulos;
  531.   while (salto>1) do
  532.   begin
  533.       salto:= salto div 2;
  534.       repeat
  535.         hecho:=True;
  536.         for j:=1 to (Nro_Articulos-salto) do
  537.         begin
  538.             i:= j+salto;
  539.             if (Lista_Articulos[j].descripcion > Lista_Articulos[j+1].descripcion) then
  540.             begin
  541.                intercambio(Lista_Articulos[j], Lista_Articulos[j+1]);
  542.                hecho:= false;
  543.             end;
  544.         end;
  545.       until hecho;
  546.   end;
  547.  
  548. end;
  549. procedure TfrmDeposito .btbMostrarDescripcionClick (Sender : TObject );
  550. begin
  551.     ordenarShell ();
  552.     mostrarArticulos();
  553. end;
  554.  
  555. procedure TfrmDeposito .btbSalirClick (Sender : TObject );
  556. begin
  557.   close;
  558. end;
  559.  
  560. procedure ordenarSeleccion(); //Ordena descendentemente por metodo Seleccion
  561. var
  562.   j,k: integer;
  563.   y: real;
  564. begin
  565.     for i:=1 to (Nro_Articulos-1) do
  566.     begin
  567.         k:=i;
  568.         y:=Lista_Articulos[i].Precio_Unitario;
  569.         for j:=(i+1) to Nro_Articulos do
  570.         begin
  571.             if (Lista_Articulos[j].Precio_Unitario>y) then
  572.             begin
  573.               k:=j;
  574.               y:=Lista_Articulos[j].Precio_Unitario;
  575.             end;
  576.         end;
  577.         intercambio(Lista_Articulos[k], Lista_Articulos[i]);
  578.         Lista_Articulos[i].Precio_Unitario:=y;
  579.     end;
  580. end;
  581. procedure TfrmDeposito .btbMostrarPrecioClick (Sender : TObject );
  582. begin
  583.     ordenarSeleccion ();
  584.     mostrarArticulos();
  585. end;
  586.  
  587.  
  588. procedure TfrmDeposito .edtPrecioChange (Sender : TObject );
  589. begin
  590.  
  591. end;
  592.  
  593. procedure TfrmDeposito .edtStockChange (Sender : TObject );
  594. begin
  595.  
  596. end;
  597.  
  598. procedure TfrmDeposito .edtTipoAChange (Sender : TObject );
  599. begin
  600.  
  601. end;
  602.  
  603. procedure TfrmDeposito .edtTipoProductoChange (Sender : TObject );
  604. begin
  605.  
  606. end;
  607.  
  608. procedure TfrmDeposito .FormCreate (Sender : TObject );//formulario;
  609. begin
  610.   randomize;
  611.   countA:=0;
  612.   countB:=0;
  613.   countC:=0;
  614.   modificar :=False;
  615.   llenarArticuloRamdom();
  616. end;
  617.  
  618. procedure TfrmDeposito .imgUnjuClick (Sender : TObject );
  619. begin
  620.  
  621. end;
  622.  
  623. procedure TfrmDeposito .lblStockClick (Sender : TObject );
  624. begin
  625.  
  626. end;
  627.  
  628. procedure TfrmDeposito .pnlUnjuClick (Sender : TObject );
  629. begin
  630.  
  631. end;
  632.  
  633.  
  634. end.
  635.                
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement