Академический Документы
Профессиональный Документы
Культура Документы
TIFF en PowerBuilder?
En la actualidad, PowerBuilder no ofrece soporte nativo a imágenes en formato TIFF. Hay dos
soluciones para visualizar imágenes TIFF en PowerBuilder:
1. Usar un OCX para ver la imagen TIFF (por ejemplo, Kodak Image Edit Control)
2. Convertir primero la imagen TIFF a un Bitmap (u otro formato soportado por PowerBuilder)
usando una herramienta de terceros.
Si el control Kodak Image Edit Control no aparece en la lista del paso 2, usted debe ubicar
manualmente el archivo OCX (por ejemplo,C:\Windows\System32\imgedit.ocx) y registrarlo
manualmente antes de poder crear el objeto, usando la opción 'Register New...' que aparece en
la pestaña'Insert Control' del paso 2.
La siguiente porción de código (que se puede usar en el evento 'clicked' de un botón) permite abrir
una imagen TIFF y mostrarla en la ventana (ole_1 es el nombre del objeto):
ole_1.object.ClearDisplay()
ole_1.object.Image = ls_filename
ole_1.object.Display()
Finalmente, estas dos líneas de código le permiten ver las dimenciones de la imagen:
MessageBox("Alto:", string(ole_1.object.ImageHeight))
MessageBox("Ancho:", string(ole_1.object.ImageWidth))
O sea tengo una ventana con un botón reporte, que al hacer click sobre este abre una nueva
ventana en la que se encuentra el datawindows con el reporte. Pero no se como puedo
acceder al control picture en tiempo de ejecución. Para poder poner la imagen que yo quiera
en tiempo de ejecución.
Yo se que con la siguiente sentencia cambio una imagen p_1.picturename, pero no se como
referenciar al control que se encuentra en la otra ventena en el evento clicked del botón
reporte.
Experto
Todos los controles integrados en el datawindow object incluyendo las propiedades de este,
pueden ser modificadas de 2 maneras,
Por ejemplo:
Invocación directa:
La forma de modificar las propiedades de los objetos incluidos en un datawindow es por medio
del prefijo object.
Cambiar un ancho
<datawindow>.object.<control>.width = <valor>
Una explicación más profunda de cada uno de las posibilidades de cambio por objeto, la
puedes encontrar en la ayuda online de pb. busca DESCRIBE
Selecciona
En la siguiente pantalla obtendrás la información por cada uno de los objetos, con los 2
métodos de modificación
Notas:
Con esta ultima la forma de retraer los valores, puedes conocer la manera de asignarle
valores a la propiedad pues lo único que hacer falte es el signo de igual y su valor.
Hola con todos, podrian ayudarme porfavor con este pequeño programilla:
1. Creamos una tabla llamada 'alumnos_fotos' con 2 campos: 'cod_alumno' de tipo char(2) y
foto_alumno de tipo image(16),
al campo cod_alumno lo ponemos como Clave Principal.
a esta tabla le agregamos 3 registros con los codigos: '01', '02', y '03'
p_foto.picturename = ls_pathname
ls_cod_alumno = trim(sle_cod_alumno.text)
Blob lb_imagen
STRING ls_cod_alumno
ls_cod_alumno = trim(sle_cod_alumno.text)
p_foto.SetPicture(lb_imagen)
5. Ejecutar y probar:
escribimos el codigo '01' en sle_cod_alumno, le damos click en cb_cargar_foto y seleccionamos el
archivo que
se va a guardar en la DB. Repetimos este paso para los demas codigos '02' y '03'. Luego, probamos
el boton cb_ver_foto, para cada codigo.
al ejecutar y seleccionar la foto me muestra este error: " fallo el updateblob", me podrían ayudar
a mi parecer todo esta bien no m explico porque no graba, Gracias
compañero, que flojera leer todo lo que pusiste, te dire lo que yo hago ok,, espero y te sirva...
despues en una variable string sacas el valor del campo imagen ( el campo donde metiste la
direccion de is_path) yo la guarde en is_image
String ls_QueryModeCheck
ls_QueryModeCheck = &
dw_product.Describe( "datawindow.querymode" )
The first value in the argument is the object name and the second one is
the attribute name. There are few attributes that are applicable for
whole DataWindow object. For example, querymode, printpreview. In
that case, the first argument is literally "DataWindow". Say, you want to
find whether the font for the "product_description" field is italic or not,
then we need to replace "DataWindow" with the column name,
"product_description" in the above code.
String ls_FontItalicCheck
ls_FontItalicCheck = dw_product.Describe( &
"product_description.font.italic" )
While dealing with the column, you can specify the column number
instead of column name. For example, in the "dw_product" DataWindow
control, the second column is "product_description", the function call
would be:
String ls_FontItalicCheck
ls_FontItalicCheck = &
dw_product.Describe( "#2.font.italic" )
When you use the column number, you need to prefix the column
number with pound sign as shown in the above example. The return
value of Describe() is always a string datatype. So, when you are
expecting a numeric or other datatype, you need to convert it into the
desired datatype.
dw_product.Modify( "DataWindow.QueryMode=yes" )
dw_product.Modify("product_balance.Format='[red] &
$#,###,##0.00'")
The above example is taken from the Payroll project. In the employee
data entry window we have four DataWindows. Since we can't print all
those four DataWindows together as we see on the window, we are
using a composite DataWindow which has four DataWindows. Each of
the DataWindow has a retrieval argument of the employee id.
You are not limited to using a constant value in the Modify() function.
You can assign a value through an expression that PowerBuilder
evaluates during execution, instead of having to directly assign a value.
The following is the syntax:
dw_wages.Modify( "effective_date.TabSequence=0" )
dw_wages.Modify("gross_wages.Protect='1~tIf( &IsRowNew(),0,1)'")
When you set the tab sequence of a field, it applies to the field in all
records. Instead, if you use protect attribute, you can apply at a record
level. In the above example, we are protecting the field if it's not a new
record. The above two examples would be useful for you in the
upcoming project "Payroll Project", which you need to code from
beginning.
You are not limited to one expression per Modify() function. You can
use multiple expressions separated by a single space between each
expression. In the above statement we are setting the product_balance
to red color with bold font and left aligned. We have used three
expressions separated by a single space.
You can also use CREATE statement to add objects to the DataWindow
at run-time. The following example is taken from the help, which adds
an ellipse to the DataWindow.
dw_1.Modify("DESTROY oval2")
Destroying a column by name does not remove the column data from
the buffer. It just removes the column from the display.
dw_1.Modify("DESTROY emp_id")
If you want to remove the column's data also from the buffer, include
the keyword COLUMN.
Modify
Respuesta de
agdsys
a
marcediaz
06/10/2003
Usuario
Hola Agdsys!
Mira, creo que estoy cayendo con lo que me escribiste. Hice todo dentro de un solo DW.
Estuve probando, me salen todavía algunos errores, pero me distraje con otra parte del
programa. Como ya conoces más o menos del tema(ojala te acuerdes el tema de campos,
parcelas y árboles), te sigo contando. Tengo dos tablas muy importantes: Árbol y
Mediciones.
La tabla árbol :Id_campo, Parcela, Id_arbol, distanciamiento, especie etc .
Donde: Id_campo+ Parcela+ Id_arbol forman una clave compuesta que me va a identificar
unívocamente a cada arbol. Debe ser compuesta pues los nombres de parcelas pueden
repetirse en cada campo, y los arboles van de 1 a 25 en cada parcela.
Ahora bien: Cuando se miden arboles por primera vez, en ese momento se incorporan nuevos
árboles a la base de datos. Esto quiere decir que debo hacer la actualización de dos tablas a
la vez, o sea de la tabla Árbol y de la tabla Mediciones. Me encuentro entonces con el
problema de actualizar dos tablas en un DW. Así que he buscado en la ayuda la sintaxis de
Modify, siguiendo un ejemplo que esta allí.
Al crear el DW puse a árbol como updatable. Escribí el código que creo correspondiente, hice
unas pruebas y me salio este error:
SQLSTATE = S0022
[Microsoft][Controlador ODBC Microsoft Access] La instrucción INSERT INTO contiene el
siguiente nombre de campo desconocido: 'distanciamiento'. Asegúrese de que ha escrito
correctamente el nombre y vuelva a intentar la operación.
Distanciameiento es de la tabla Árbol! ¿Qué paso? Te resumo un poco el código, solo quito
algunos campos para que no sea tan extenso:
integer rc
string err
//actualiza arbol
rc=dw_1.update(true, false)
If rc= 1 then
//deshabilita actualizacion de las columnas de arbol
dw_1.Modify("arbol_id_campo.update =no")
dw_1.Modify("arbol_parcela.update=no")
dw_1.Modify("arbol_id_arbol.update=no")
dw_1.Modify("arbol_id_campo.key =no")
dw_1.Modify("arbol_parcela.key=no")
dw_1.Modify("arbol_id_arbol.key=no")
dw_1.Modify("mediciones_id_campo.key=yes")
dw_1.Modify("mediciones_parcela.key=yes")
dw_1.Modify("mediciones_id_arbol.key=yes")
dw_1.Modify("mediciones_anio.key=yes")