Como alinear (justify) a la izquierda y a la derecha los textos creados con el comando SAY?
Lo que sucede es que los SAY creados con FiveLinux en Raspbian (Debian en Raspberry PI) siempre salen centralizados.
Añadi el siguiente codigo:
http://forums.fivetechsupport.com/viewt ... 11&t=10992 Sugerido por un compañero del foro, pero no me funciono.
Alguien ha podido alinear los textos en SAY ?
Alguna sugerencia?
Estoy usando la mas reciente version de harbour y fivelinux para Raspberry Pi sugerida por Antonio.
Saludos,
George
RASPI / FiveLinux y el alineamiento de los SAY
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: RASPI / FiveLinux y el alineamiento de los SAY
George,
Cómo has llamado a la función SAYSETALIGN() ?
Que parámetros le has proporcionado ?
Cómo has llamado a la función SAYSETALIGN() ?
Que parámetros le has proporcionado ?
Re: RASPI / FiveLinux y el alineamiento de los SAY
Antonio,
Este es el codigo que he usado acorde a lo indicado en el post:
George
Este es el codigo que he usado acorde a lo indicado en el post:
No se ejecuta ningun cambio en el alineamiento del texto y en la consola sale el siguiente mensaje:@ 14, 2 SAY oSayName PROMPT "Name:" OF oFormCompany SIZE 100,20 PIXEL
oSayName:SetAlignment(0.0, 0.5)
Saludos,(main:1803): Gtk-CRITICAL **: IA__gtk_misc_set_alignment: assertion 'GTK_IS_MISd
George
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: RASPI / FiveLinux y el alineamiento de los SAY
George,
Como has añadido el método SetAlignment() en la clase TSay ?
Como has añadido el método SetAlignment() en la clase TSay ?
Re: RASPI / FiveLinux y el alineamiento de los SAY
Antonio,
Estos son _ que hice para agregar el nuevo metodo SetAlignment a la clase TSay:
SAY.PRG
SAY.C
Estos son _ que hice para agregar el nuevo metodo SetAlignment a la clase TSay:
SAY.PRG
Code: Select all
#include "FiveLinux.ch"
//----------------------------------------------------------------------------//
CLASS TSay FROM TControl
METHOD New( nRow, nCol, oWnd, cText, nWidth, nHeight, lUpdate, oFont,;
lPixel, lDesign, cVarName )
METHOD cGenPrg()
METHOD SetText( cText ) INLINE SaySetText( ::hWnd, cText )
METHOD GetText() INLINE SayGetText( ::hWnd )
METHOD SetJustify( nType ) INLINE SaySetJustify( ::hWnd, nType ) // LEFT = 0, RIGHT = 1, CENTER = 2, FILL = 3
METHOD setangle(nAngle) INLINE SaySetAngle(::hWnd,nAngle)
// Added
METHOD SetAlignment( fHAlign, fVAlign ) INLINE SaySetAlign( ::hWnd, fHAlign, fVAlign )
ENDCLASS
//----------------------------------------------------------------------------//
METHOD New( nRow, nCol, oWnd, cText, nWidth, nHeight, lUpdate, oFont,;
lPixel, lDesign, cVarName ) CLASS TSay
DEFAULT oWnd := GetWndDefault(), nWidth := 70, nHeight := 20,;
lUpdate := .f., lPixel := .F., lDesign := .F.
::hWnd = CreateSay( cText )
::lUpdate = lUpdate
::lDrag = lDesign
::cVarName = cVarName
oWnd:AddControl( Self )
SetParent( ::hWnd, oWnd:hWnd )
::SetPos( nRow * If( lPixel, 1, 10 ), nCol * If( lPixel, 1, 10 ) )
::SetSize( nWidth, nHeight )
if oFont != nil
::SetFont( oFont )
endif
::Link()
::Show()
return Self
//----------------------------------------------------------------------------//
METHOD cGenPrg() CLASS TSay
local cCode := CRLF + " @ " + Str( ::nTop, 3 ) + ", " + ;
Str( ::nLeft, 3 ) + " SAY " + ::cVarName + ;
' PROMPT "' + ::GetText() + '"' + ;
' SIZE ' + Str( ::nWidth, 3 ) + ", " + ;
Str( ::nHeight, 3 ) + " PIXEL OF " + ::oWnd:cVarName + CRLF
return cCode
Code: Select all
[code]#include <hbapi.h>
#include <gtk/gtk.h>
gboolean button_press_event( GtkWidget * hWnd, GdkEventButton * event );
gboolean motion_notify_event( GtkWidget * hWnd, GdkEventMotion * event );
HB_FUNC( CREATESAY )
{
GtkWidget * hWnd = gtk_label_new( hb_parc( 1 ) );
GtkWidget * event_box = gtk_event_box_new();
gtk_signal_connect( GTK_OBJECT( event_box ), "button_press_event",
( GtkSignalFunc ) button_press_event, NULL );
gtk_signal_connect( GTK_OBJECT( event_box ), "motion_notify_event",
( GtkSignalFunc ) motion_notify_event, NULL );
gtk_widget_set_events( event_box, GDK_EXPOSURE_MASK
| GDK_LEAVE_NOTIFY_MASK
| GDK_BUTTON_PRESS_MASK
| GDK_POINTER_MOTION_MASK
| GDK_POINTER_MOTION_HINT_MASK );
gtk_container_add( GTK_CONTAINER( event_box ), hWnd );
gtk_widget_show( hWnd );
hb_retnl( ( HB_ULONG ) event_box );
}
HB_FUNC( SAYSETTEXT )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
GList * children = gtk_container_get_children( ( GtkContainer * ) hWnd );
gtk_label_set_text( children->data, hb_parc( 2 ) );
}
HB_FUNC( SAYGETTEXT )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
GList * children = gtk_container_get_children( ( GtkContainer * ) hWnd );
hb_retc( ( char * ) gtk_label_get_text( children->data ) );
}
HB_FUNC( SAYSETJUSTIFY )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
gtk_label_set_justify( ( GtkLabel * ) hWnd, ( GtkJustification ) hb_parnl( 2 ) );
}
HB_FUNC( SAYSETANGLE )
{
GtkWidget * hWnd = ( GtkWidget * ) hb_parnl( 1 );
GList * children = gtk_container_get_children( ( GtkContainer * ) hWnd );
gtk_label_set_angle( children->data , hb_parnl( 2 ) );
}
// Added
HB_FUNC( SAYSETALIGN )
{
GtkWidget * hWnd = (GtkWidget * ) hb_parnl( 1 );
gtk_misc_set_alignment( ( GtkMisc * ) hWnd, hb_parnd( 2 ), hb_parnd( 3 ) );
}
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: RASPI / FiveLinux y el alineamiento de los SAY
George,
He encontrado esto al revisar la documentación de gtk_misc_set_alignment():
https://developer.gnome.org/gtk3/stable ... -alignment
He encontrado esto al revisar la documentación de gtk_misc_set_alignment():
https://developer.gnome.org/gtk3/stable ... -alignment
gtk_misc_set_alignment has been deprecated since version 3.14 and should not be used in newly-written code.
Use GtkWidget's alignment (“halign” and “valign”) and margin properties or GtkLabel's “xalign” and “yalign” properties
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: RASPI / FiveLinux y el alineamiento de los SAY
Para modificar esas propiedades prodriamos usar:
gtk_object_set_data()
Tienes ejemplos de uso en source\winapi\windows.c (fivelinux)
gtk_object_set_data()
Tienes ejemplos de uso en source\winapi\windows.c (fivelinux)