Page 1 of 1

Sugerencias para Xailer 7

Posted: Mon Mar 09, 2020 10:51 am
by bingen
Buenas xTeam, tengo algunas sugerencias que voy a indicar aquí, si son posibles y hubiera tiempo para ello serían bienvenidas.
1.- Ahora que hemos empezado a usar Hash en las lecturas a las bases de datos SQL, el código es mucho más legible y más seguro que los elementos de los arrays, es un gran avance. Pero ahora lo echo en falta en otros casos como por ejemplo
oDataSet:GetRows()
2.- Sería muy complicado hacer que cuando añades una columna a un browse se posicione en ella, me llamareis vago pero.... me parece lo lógico.
3.- Como sabeis y además recomendais, en caso de necesidad y solo ocasionalmente, entramos directamente a los Xfm a editarlos, pero para ello hemos de abandonar el IDE y buscarnos la vida por fuera y con otro editor. Si tan util es que incluso indicais que es una de las cosas que podemos hacer si hace falta, no es mas lógico que podamos editarlos desde el IDE?, aunque sea con una advertencia, pulsando una tecla al abrir o lo que sea para que no sea una opción directa por defecto.
4.- Como comenté en el foro en Inglés y añado de nuevo aqui sería interesante tener este foro en una pestaña del ide para poder abrirlo a la vez qque tenemos abierto el IDE y poder copiar y pegar entre ventanas, etc.
5.- Cuando seleccionas un bloque de texto "irregular" con ALT+click del raton y estirar no funciona la tecla SUPR para borra el área, ahora corto sin pegar después. Y mucho cuidado con pegar por que tengas la inserción o sobreescritura, siempre sobreescribe el texto donde te encuentras.
6.- No estaría nada mal tener las propiedades nAlignment y nVAlignment en los tLabelEx

De momento hasta aquí, no recuerdo nada más.

Re: Sugerencias para Xailer 7

Posted: Fri Mar 27, 2020 1:37 pm
by ignacio
Hola Bingen,

1) Entiendo que GetRows() debe de devolver una matriz en todo caso.

2) No soy partidario de tanto automatismo. Además a no todo el mundo le gustaría esa funcionalidad. Lo siento.

3) Esto es algo que se nos ha pedido muchas veces y tiene más trabajo del que parece ya que hay que tener en cuenta que el formulario puede estar en edición o simplemente cargado en memoria. No obstante, le doy una vuelta.

4) Eso llegará con Xailer 7

5) Me temo que ese es trabajo únicamente de Scintilla. Esperemos que en próximas versiones funcione mejor.

6) Le echo un vistazo. No obstante, este control es tremendamente complejo y no es una tarea fácil.

Un saludo

Re: Sugerencias para Xailer 7

Posted: Fri Mar 27, 2020 2:22 pm
by ignacio
Buenos días,

El primer punto se puede hacer. Me pongo con ello:
TDataset:GetRows( lAsHashes ) // Sigue siendo una matriz, pero de hashes
TDataset:GetRow( lAsHash )

Un saludo

Re: Sugerencias para Xailer 7

Posted: Fri Mar 27, 2020 2:38 pm
by ignacio
Buenos días,

Aquí están:

Code: Select all

//--------------------------------------------------------------------------

METHOD GetRows( lAsHashes ) CLASS XDataSet

   LOCAL xData := ::oRecords:GetRows()
   LOCAL aFlds, aRow
   LOCAL hHash

   IF !Empty( lAsHashes )
      aFlds := Array( ::FieldCount() )
      AEval( aFlds, {|v,e| aFlds[ e ] := ::FieldName( e )  } )
      FOR EACH aRow IN @xData
         hHash := HB_Hash()
         Aeval( aRow, {|v,e| HB_HSet( hHash, aFlds[ e ], v )  } )
         aRow := hHash
      NEXT
   ENDIF

RETURN xData

//--------------------------------------------------------------------------

METHOD GetRow( nRow, lAsHash ) CLASS XDataSet

   LOCAL xData := ::oRecords:GetRow( nRow )
   LOCAL aFlds
   LOCAL hHash

   IF !Empty( lAsHash ) .AND. ValType( xData ) == "A"
      aFlds := Array( ::FieldCount() )
      AEval( aFlds, {|v,e| aFlds[ e ] := ::FieldName( e )  } )
      hHash := HB_Hash()
      Aeval( xData, {|v,e| HB_HSet( hHash, aFlds[ e ], v )  } )
      xData := hHash
   ENDIF

RETURN xData

Si los puedes probar te lo agradezco.

Un saludo

Re: Sugerencias para Xailer 7

Posted: Wed Apr 08, 2020 12:34 pm
by bingen
Probados ambos GetRows( lAsHashes ) y GetRow( nRow, lAsHash )como sobrecargas de tDataSet

En principio funcionan bien pero tengo una pregunta.
Hago
::oSQLTable:oDataSource:=Appdata:oSqlSource
::oSQLTable:lOpen:=.T.
Msg(ValType(::oSQLTable:GetRow(1,.T.)))
MSg(hb_HKeyAt(::oSQLTable:GetRow(1,.T.), 1))

y me devuelve el tipo H y el campo ID, totalmente correcto

Pero si hago
::oSQLTable:oDataSource:=Appdata:oSqlSource
::oSQLTable:lOpen:=.T.
Msg(ValType(::oSQLTable:GetRows(.T.)[1]))
Msg(hb_HKeyAt(::oSQLTable:GetRows(.T.)[1], 1))

El primer MSG me da H correcto y el segundo Peta, pero si quito el primer Msg el segundo funciona correctamente e indica el campo ID. Supongo que es por el valor por referecia de @xData.

Salu2

Re: Sugerencias para Xailer 7

Posted: Thu Apr 09, 2020 1:15 pm
by ignacio
MSg(hb_HKeyAt(::oSQLTable:GetRow(1,.T.), 1))
El primer MSG me da H correcto y el segundo Peta, pero si quito el primer Msg el segundo funciona correctamente e indica el campo ID. Supongo que es por el valor por referecia de @xData.



@Data se utiliza en GetRowS(), y no en GetRow().

Si ::oSQLTable:GetRow(1,.T.) devuelve correctamente un hash, no entiendo como hb_keyAt( DeAlgoSeguroQueEsUnHash, 1 ) peta.

Te ruego envés un ejemplo. Gracias.

Un saludo

Re: Sugerencias para Xailer 7

Posted: Fri Jun 05, 2020 5:21 pm
by ddupre
Hola,
Creadores de Xailer, me gustaría aportar un pequeña sugerencia para el IDE tando de Xailer como XEdit

No se que tan fuerte puede impactar esto en el desarrollo de Xailer, pero me resultaría cómodo poder configurar a elección del usuario, que la "ventana" "Mensajes de salida", tenga el comportamiento actual o permanezca cerrada cuando compilamos y que se abra automáticamente solo en caso de Warning o Error y a su vez, disponer de una ProgressBar en la barra de notificaciones para indicar que el proceso se está llevando a cabo.

Muchas gracias
Daniel