¿Cómo capturar dos botones con un único TextView

Tengo dos botones y quiero que al clicar a cada uno me lance una otra actividad, pero mostrando un mensaje diferente implementando un único Text View. No logro hacerlo con un único TextView.

Mi código:

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);      Button btn = (Button) findViewById(R.id.button2);     Button btn2 = (Button) findViewById(R.id.button3);     Button btn3 = (Button) findViewById(R.id.button1);      btn.setOnClickListener(new View.OnClickListener() {          @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str", "check");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Sin");             startActivity(intent);         }     });     btn2.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str2", "check2");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Con");             startActivity(intent);         }     });     btn3.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent3 = new Intent(MainActivity.this,SecondActivity.class);             startActivity(intent3);         }     });  } 

En la otra actividad tengo esto:

```Intent intent = getIntent();     String message = intent.getStringExtra("str");       txt = (TextView) findViewById(R.id.textView2);     txt.setText(""+message); 
 

¿Cómo capturar dos botones con un único TextView

Tengo dos botones y quiero que al clicar a cada uno me lance una otra actividad, pero mostrando un mensaje diferente implementando un único Text View. No logro hacerlo con un único TextView.

Mi código:

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);      Button btn = (Button) findViewById(R.id.button2);     Button btn2 = (Button) findViewById(R.id.button3);     Button btn3 = (Button) findViewById(R.id.button1);      btn.setOnClickListener(new View.OnClickListener() {          @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str", "check");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Sin");             startActivity(intent);         }     });     btn2.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str2", "check2");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Con");             startActivity(intent);         }     });     btn3.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent3 = new Intent(MainActivity.this,SecondActivity.class);             startActivity(intent3);         }     });  } 

En la otra actividad tengo esto:

```Intent intent = getIntent();     String message = intent.getStringExtra("str");       txt = (TextView) findViewById(R.id.textView2);     txt.setText(""+message); 
 

Como llamar un reporte que tiene un sub-reporte

Trabajo con Visual Studio 2019, SQL Server 2014, Windows Forms, Crystal Reports 8.5

Estoy trabajando con reportes en el cual no había tenido problemas en llamar a un reporte, salvo este escenario en el cual tengo un reporte que dentro tiene un sub reporte. El problema es que no se como llamar a un reporte que tiene un sub reporte, muestro como lo estoy llamando.

private void MostrarReporte()     {         var cn = new ConnectionInfo()         {             ServerName = ".",             DatabaseName = "Business",             UserID = "xxx",             Password = "xxx",             Type = ConnectionInfoType.SQL         };          //SubReporte         var filePathD = @"D:\ReportesPrueba\DenominacionTotal.rpt";         _rptListaDenominacion.Load(filePathD);         var recuentoDenominacion = _saRecuento.MostrarRecuentoDenominacion(_operacionId);         _rptListaDenominacion.SetDataSource(recuentoDenominacion);         var frmD = new FrmReportes();         frmD.CrystalReportViewer.ReportSource = _rptListaDenominacion;         SetDbLogonForReport(cn, _rptListaDenominacion);         frmD.CrystalReportViewer.Refresh();           //Reporte principal         var filePath = @"D:\ReportesPrueba\CierreCaja.rpt";         _rptListaCierreCaja.Load(filePath);         var cierreCaja = _saRecuento.MostrarCierreCaja(_operacionId, _puntoEmisionId);         _rptListaCierreCaja.SetDataSource(cierreCaja);         var frm = new FrmReportes();         frm.CrystalReportViewer.ReportSource = _rptListaCierreCaja;            SetDbLogonForReport(cn, _rptListaCierreCaja);         frm.CrystalReportViewer.Refresh();         frm.Show();         Application.DoEvents();     } 

Lo que hago es primero poblar de información el primer reporte y después pueblo de información al reporte principal, estoy usando un Report Viewer, ¿en que me estoy equivocando?

Saludos!!!

¿Como hacer tabla en javascript, separando estructura de datos por un lado y utilizando una función para pintar dicha estructura?

function pintar_tabla(){ var col=document.getElementById(“columna”).value; var filas=document.getElementById(“fila”).value; var tabla = “”; tabla += “”; for (j = 0; j ” + (j + 1) + “”; } tabla += “”; for (i = 0; i “; tabla += “” + (i + 1) + “”; for (j = 0; j ” + “” + “”; } tabla += “”; } tabla += “”; document.getElementById(“resultado”).innerHTML = tabla; }

Cómo puedo añadir un campo personalizado de ordenación de productos en Prestashop 1.7.6?

Quiero implementar un nuevo campo de ordenación de productos que haga la ordenación a partir del valor de una característica concreta.

En SQL lo resuelvo de esta manera:

SELECT b.value  FROM ps_feature_product a, ps_feature_value_lang b  WHERE id_feature=10 AND a.id_feature_value=b.id_feature_value AND id_lang=1  ORDER BY b.value DESC 

Cómo debería hacerlo en Prestashop 1.7.6?

Muchas gracias!

¿Como eliminar espacios sobrantes CSS?

Tengo estos elementos creados para hacer un navbar pero el problema para empezar con los li es que tienen un pequeño espacio a la derecha cuando les pongo la propiedad display: inline-block y en el caso del navbar que le estoy agregando solamente el color de fondo blanco y una sombra me pone un espacio en la parte de abajo que no se a que se debe.

introducir la descripción de la imagen aquí

CSS

nav {     width: 100%;     background-color: var(--bgColor);     box-shadow: 14px 0px 23px -16px rgba(0,0,0,0.80);     display: flex;     justify-content: center;      /*Variables*/     --sideBar: #2f2e41;     --bgColor: white;     --fontFocus: #36d29e;     --fontOn: #b1b1b1; }  ul {     background-color: blueviolet; }  li {     display: inline-block;     height: 100px; } 

HTML

<nav>   <ul>     <li><a href="">Recipt</a></li>     <li><a href="">Customers</a></li>     <li><a href="">My account</a></li>     <li><a href="">Reports</a></li>     <li><a href="">UW Manager</a></li>     <li><a href="">Logout</a></li>   </ul> </nav>  <div class="container">   <div class="row">     <div class="col-md-4">       Column 1     </div>   </div> </div> 

Como poner un componente dentro de otro en ReactJS

Necesito poner un componente dentro de otro en ReactJS…

Tengo un componente que se llama Fondo el cual utilizo como fondo de todas las paginas y funciona perfectamente:

import React, {Component} from 'react'; import './Styles.css'; class Fondo extends Component {   render() {     return (       <div className="Fondo">Esto es el fondo</div>    );  } } export default Fondo;  

Y otro que se llama Monitor (Que es un bloque div el cual quiero posicionar dentro de Fondo) que al ponerlo luego de se ven los dos perfectamente… ahora, aquí viene el problema:

import React, {Component} from 'react'; import './Styles.css'; class Monitor extends Component {   render() {     return (       <div className="Monitor">Esto es el fondo</div>        );   }; } export default Monitor; 

Todo esto va dentro de una pagina llamada Display y necesito que Monitor se vea dentro de Fondo, cosa que no he logrado hasta ahora…

import React, {Component} from 'react'; import ReactDOM from 'react-dom'; import { Link } from 'react-router-dom'; import Fondo from '../../components/fondo'; import Monitor from '../../components/monitor'; import './Styles.css';  class Display extends Component {     render(){     return (         <div>             <Fondo > Dentro de esto </Fondo>              <Monitor> Quiero meter esto</Monitor>             </div>       );    } } export default Display;   

/* Intenté hacer esto **<Fondo> <Monitor> </Monitor> </Fondo>** pero entiendo que no es la forma indicada de hacerlo, si pueden ayudarme les agradecería mucho, se vienen cosas grandes genios!!! */

Como verificar que hay una letra repetida

Buenas tengo una consulta respecto a una tarea de la universdad que debo realizar, tengo que programar un juego de ahorcado donde el programa debe poseer 20 palabras distintas escogidas por mi, para que el usuario pueda jugar, si es que el usuario ya jugó las 20 palabras que programa puede volver a escoger una palabra ya jugada y por ultimo el programa debe ser capaz de no castigar al usuario si vuelve a ingresar una letra incorrecta, que ya hubiese ingresado en la partida en curso.

He podido realizar casí todo el que no penalize en caso de ingresar una palabra errornea, ¿como podría solucionarlo?

#include <stdio.h> #include <string.h> #include <ctype.h> #include "dibujos.h"  char palabra[20];  //general char arreglo[20][20]={"ENERO","FEBRERO","MANZANA","PERA","COMPUTADOR","NUMERO","EJECUCION","COMPUTADOR","LENGUAJE","VIVIR","PARACETAMOL","PARALELEPIPEDO","LINUX","CORREO","GARRAFAL","RESUMEN","PRUEBA","PSICOLOGIA","GATICA","GUSTAVO"}; //*UEDO char adivina[20];  // P _ _ _ char Prueba[20];   //indice es el contador principal int indice=0;   //vidas int vidas=6;   //para leer letra ingresada char letra;   //encontro int encontroletra;   //letras encontradas int letras_adivinadas=0; int i=0;  void Validacion_acento() {     if ((letra==-96)||(letra==-75)||(letra==-123)||(letra==-73))//Á ; á         letra=65;     else if ((letra==-44)||(letra==-126)||(letra==-118)||(letra==-112))//E         letra=69;     else if((letra==-42)||(letra==-95)||(letra==-115)||(letra==-34))//I         letra=73;     else if((letra==-94)||(letra==-32)||(letra==-107)||(letra==-29))//O         letra=79;     else if((letra==-93)||(letra==-23)||(letra==-105)||(letra==-21)||(letra== -102)||(letra==-127))//U         letra=85;  } void VueltaAlJuego() {     char eleccion, s,n,a;     while (1)     {          printf("QUIERES VOLVER A JUGAR <s/n>? ");         fflush(stdin);         scanf("%c", &eleccion);         if (eleccion == 115 || eleccion==83)         {             system("cls");             rellena();             break;         }         if(eleccion == 110 || eleccion==78)         {             system("cls");             exit(0);         }      } } void dibujos() {     switch (vidas)         {             case 0:TituloJuego();PiernaDerecha();break;             case 1:TituloJuego();PiernaIzquierda();break;             case 2:TituloJuego();BrazoDerecho();break;             case 3:TituloJuego();BrazoIzquierdo();break;             case 4:TituloJuego();Tronco();break;             case 5:TituloJuego();Cabeza();break;             case 6:TituloJuego();SinAhorcado();break;         }   } void rellena () {     int i, largo=strlen(palabra);     for (i=0; i<largo; i++)     {         palabra[i]=' ';     } } void llamar3() {     encontroletra = 0;       //banderita que encontro letra       for(indice=0; indice < strlen(palabra); indice++)       {         //verifica que no sea una letra encontradas         if (palabra[indice]!='*')           {             //verifica que no sea una letra encontrada             if (palabra[indice]==letra)             {               //activa la bandera que encontro letra               encontroletra=1;               //inclementa letra encontrada               letras_adivinadas++;               // coloca la letra en el adivina               adivina[indice]=palabra[indice];               //la marca como encontrada c:               palabra[indice]='*';             }           }       }       //return 0; } void llamar2() {     while(1)     {       dibujos();       printf("\nPALABRA SECRETA: ");       puts(adivina);       printf(" ");//espacio para separar letras        printf("\nINGRESA UNA LETRA: ");       //lee la letra que ingreso y la transforma en mayuscula       fflush( stdin );       scanf("%c",&letra);       Validacion_acento();       letra=toupper(letra);        system("cls");        llamar3();       //verifica si encontro       if (encontroletra==1)         {           if (letras_adivinadas == strlen(palabra))             {               TituloJuego();               MensajeGanaste();               printf("\n\n\t     LA PALABRA SECRETA ERA: ");               puts(adivina);               i++;//cambia la palabra               VueltaAlJuego();               indice = 0;               letras_adivinadas = 0;               vidas=6;               break;               }               else                 {                     break;                 }             }        {         if (vidas == 0)         {           TituloJuego();           MensajePerdiste();           printf("\n\n\t   LA PALABRA SECRETA ERA: %s", Prueba);           i++;//cambia la palabra           VueltaAlJuego();           indice = 0;           letras_adivinadas = 0;           vidas=6;           break;         }         else         {           printf("Error en letra");           vidas--;           printf("te quedan %i vidas\n\n",vidas);         }        }     }//cierra el segundo while     //return 0; } void llamar() {      while(i<20)   {     do     {       strcpy(Prueba, arreglo[i]);       if (strlen(Prueba)==indice)          break;        strcpy(palabra,Prueba);       strcpy(adivina,Prueba);       while(strlen(Prueba)>indice)       {         adivina[indice]='-';//guiones         indice++;       }     }      while(1);     printf("\n");      palabra[indice]='\x0';     adivina[indice]='\x0';      //ciclo para capturar letra     llamar2();   }//cierra el primer while } int main() {     llamar();     return 0; }  

Como puedo pasar los datos de mi Formulario html a traves de un script Perl?

estoy comenzando a hacer scripts en perl pero no porque me sale este error: Este es mi formulario en html ya vi los name de cada input, tambien vi la ruta del action que este bien. Y nada sigue apareciendo un error…

<!DOCTYPE HTML> <html> <head> 	<title>Mi FORMULARIO</title> 	<link rel="stylesheet" type="text/css" href="../estilos/estio.css"> </head> <body> 	<form action="../cgi-bin/FORMULARIO.pl" method="post"> 		<label for="nombre">Nombres: </label> 		<input  name="nombre" type="text" id="nombre"   placeholder="Escribe tu nombre"> 		<label for="Email">Email</label> 		<input name="apellido" type="text" id="Email" placeholder="Escribe tus apellidos"> 		<label for="mensaje" >Mensaje:</label> 		<textarea name="texto" type="text" id="mensaje" placeholder="Escribe tu mensaje"></textarea> 		<input type="submit" value="Enviar"> 	</form>  </body> </html>

Ahora voy a mostrar el script en perl, es basico…

introducir el código aquí #!usr/bin/perl -wT   use CGI; use strict;  my $  cgi=new CGI;  my $  nombre    = $  cgi ->param("nombre"); my $  apellido  = $  cgi ->param("apellido"); my $  texto     = $  cgi ->param("texto");  my $  cabecera = $  cgi->header(-type => "text/html");    print $  cabecera;    print "<h1>Mucho gusto" .$  nombre .$  apellido."</h1>"."\n";    print "<h1>Gracias por tu comentario</h1>";    print "<a href='../html/MiFORM.html'>Regresar al formulario</a>"; 

Y mi el error que me sale es: Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

Apache/2.4.29 (Ubuntu) Server at 34.70.178.207 Port 80

Cual es mi error?

¿Como eliminar las tablas que no le pertenezcan a una base de datos en un TreeView? c# Windows Forms, Microsoft SQL Server

Resulta que tengo un TreeView que me muestra todas las bases de datos que hay con sus respectivas tablas. El problema como verán es que me aparecen tablas a las que le pertenecen a una base de datos pero que tambien les aparecen en otras, lo cual está mal.

introducir la descripción de la imagen aquí

Y lo que quiero es que me muestren nomas las tablas a las que les pertenecen la base de datos únicamente.

       TreeNode node;     TreeNode hijo;     private void Form1_Load(object sender, EventArgs e)     {         DataTable tabla = new DataTable();         DataTable tablas = new DataTable();          ReglasDeNegocios.OperacionesBD operaciones = new ReglasDeNegocios.OperacionesBD();         if (operaciones.BaseDatos(sUsuario, sPassword, ref tabla))         {               foreach (DataRow dr in tabla.Rows)             {                 node = new TreeNode(dr["name"].ToString());                 string hijos = Convert.ToString(dr["name"].ToString());                 if (operaciones.BaseDatos(sUsuario, sPassword, hijos, ref tablas))                 {                     foreach (DataRow dr2 in tablas.Rows)                     {                          hijo = new TreeNode(dr2["Tabla"].ToString());                         node.Nodes.Add(hijo);                     }                     treeView1.Nodes.Add(node);                 }              }             }         else         {              MessageBox.Show("Ocurrio un error: " + operaciones.sLastError);         }     } 

Asi mando a llamar la BaseDatos:

  public Boolean BaseDatos(String sUsuario, String sPassword, String BD, ref DataTable Tabla)     {         Boolean bAllOk = false;         using (SqlConnection conexion = new SqlConnection())         {             try             {                  conexion.ConnectionString = $  "Server=ROBERTODIAZ; User Id={sUsuario}; Password={sPassword}";                 conexion.Open();                 SqlCommand comando = new SqlCommand($  "use {BD} select sc.name+'.'+tb.name AS Tabla from sys.tables tb inner join sys.schemas sc on tb.schema_id = sc.schema_id order by Tabla ASC", conexion);                 SqlDataAdapter adapter = new SqlDataAdapter(comando);                 adapter.Fill(Tabla);                   bAllOk = true;              }             catch (Exception ex)             {                 sLastError = ex.Message;             }             finally             {                 conexion.Close();             }         }         return bAllOk;     } 

¿Como solucionarían esto?