Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - vuott

Pagine: 1 ... 745 746 [747] 748 749 ... 758
11191
Programmazione / Re: Tastiera virtuale
« il: 17 Novembre 2011, 00:34:00 »
Il fatto che a te funzioni....mi rode  :hatecomputer: >:( :evil:
Uso Gnome, gb.qt4, gb.gui, ho provato ad inpostare anche gb.gtk, idem non funziona.
A meno che tu non abbia attivato componenti o qualche configurazione che io ho disabilitati, non so proprio cosa dire.
Come ho detto sopra la cosa mi fa inca....volare perchè mi serve proprio per il progetto che sto eseguendo.

Guarda, mi spiace davvero  :-\ , io ce l'ho messa tutta !  :'(
Ti ripeto, l'ho fatto funzionare con tutti e tre quei metodi sia su KDE che su GNOME...  :-\
Ad ogni modo devo ringraziarti per aver messo questa domanda, perché mi hai dato la spinta per tornare sull'argomento.

Riguardo al tuo problema.... non so cosa dire   :-\   :hard:
Comunque su questa questione ed sul tuo problema teniamoci in contatto.

11192
Programmazione (Gambas 2) / Re: desktop.sendkeys
« il: 17 Novembre 2011, 00:10:56 »
Dai un'occhiata alla documentazione:

http://gambasdoc.org/help/comp/gb.desktop/desktop/sendkeys?v2

poi per i codici con sendkeys devi vedere nel file: keysymdef.h, che puoi cercare nel sistema (in Ubuntu nella cartella: /usr/include/X11).

11193
Programmazione / Re: Tastiera virtuale
« il: 16 Novembre 2011, 20:15:48 »
Il risultato non cambia.Ti allego uno screenshot del risultato.
Il comportamento è strano davvero   :rolleyes: , poiché io ho inglobato  :coder: la tastierina, con tutti e tre i metodi prima descritti !

Scusami, puoi darmi queste informazioni ?

1) usi KDE o GNOME ?
2) quale componente hai impostato? gb.qt4, gb.gui oppure gb.gtk ?

11194
Programmazione / Re: Tastiera virtuale
« il: 16 Novembre 2011, 17:32:56 »
..ad ogni modo... mi ha incuriosito il programmino EMBED.tar.gz, che hai inserito in un tuo messaggio sopra, e gli ho dato uno sguardo. E' vero, le spiegazioni scritte dall'autore sono in tedesco, però ho cercato di capirne il funzionamento e soprattutto di individuare i passaggi più importanti e salienti.
...e ho lì trovato un terzo modo di individuare l'ID della finestra di un programma  ;D . L'algoritmo lo puoi vedere all'interno della subroutine "WindowIDErmitteln()" (che infatti in tedesco insomma significa sostanzialmente "determina l'Id di una finestra).

Allora, il comando essenziale usato per ricavare l'ID è xwininfo:
xwininfo -name "nome_finestra_programma" | grep "nome_finestra_programma"

Ti riporto dunque il mio codice precedente, come sarebbe inserendo però il metodo di identificazione ed estrapolazione dell'ID della finestra utilizzato nel programma dell'autore tedesco:

Codice: gambas [Seleziona]


Private h as Process

Public Sub Form_Open()

  h = Shell "onboard"
      
End


Public Sub Button1_Click()
  Dim iWinId_Dezimal As Integer
  Dim sXWinInfoListe As String
  Dim aMatrix As String[]
  
' inserisce nella variabile stringa tutto il risultato del comando "xwininfo"...
  Shell "xwininfo -name " & "\"onboard\" | grep " & "\"onboard\"" To sXWinInfoListe

' ... e lo "spezzetta" nelle sue parole componenti,
' che inserisce in piu variabili stringhe[]:
  aMatrix = Split(sXWinInfoListe, " ")

' prende il contenuto della variabile stringa[] contenente il numero dell'ID (in esadecimale);
' lo converte in esadecimale compresibile da Gambas; poi in decimale....
     iWinId_Dezimal = Val("&" & Mid$(aMatrix[3], 3))
  
 ' ...che va ad inserire in Embed:
   Embedder1.Embed(iWinId_Dezimal)
  
End


Public Sub Button2_Click()  ' chiude "onboard" e poi il programma

  h.Kill
  Me.Close

End


11195
Programmazione / Re: Tastiera virtuale
« il: 16 Novembre 2011, 13:29:35 »
Ho provato l'ultimo codice che hai postato ed avviene una cosa "strana", si avvia il form che contiene l'Embedder, viene visualizzata la tastiera
(onboard) all'interno del form, ma se sposto con il mouse il form in un'altra posizione la tastiera rimane ferma nella sua posizione.
Ne ho dedotto che la tastiera non è "inglobata" nell'Embedder ma che i due oggetti sono separati. ??? ???
Io uso:
Ubuntu 10.04 LTS
Gambas3 Rev.(svn)4249

...dunque.... sto provando l'ultimo codice (quello più veloce con le funzioni di Gambas) con Kubuntu-KDE: ho inglobato la calcolatrice, ed ho provato a spostare il form per verificare il problema da te sollevato. Posso confermarti che la calcolatrice resta inglobata regolarmente nel riquadro dell'Embedder, e si sposta coerentemente con il form all'interno (come detto) dell'Embedder. Ti segnalo (ed è una conferma in fondo) che questo mi avviene (ho infatti eseguito per curiosità nuovamente le prove) sia impostando gb.qt4, sia gb.gui, sia gb.gtk.

Il problema da te segnalato, sospetto sia derivato dal fatto che tu - probabilmente (dammi conferma o smentita) - non hai piazzato sul form almeno un Button. Il mio breve codice, infatti, prevede l'azione di inglobamento solo se clicchi su un tasto, che deve chiamarsi "Button1" (come da codice).
La circostanza che la tastierina a te si apra proprio sul form, suppongo sia del tutto casuale. E', però, semplicemente visualizzata lì su.
Se è così, allora fai così:
1) piazza un Button1 nel form;
2) lancia il programmino;
3) clicca sul tasto;
4) verificato l'effettivo inglobamento nel riquadro dell'Embedder, prova a spostare il form.
Puoi piazzare anche un Button2 per chiudere contemporaneamente la tastierina ed il programmino Gambas.

Fammi sapere.

11196
Programmazione / Re: Tastiera virtuale
« il: 15 Novembre 2011, 12:56:01 »
...ma ho elaborato una strada molto più breve e veloce:  :coder:
(qui non è più necessario wmctrl, né useremo più la Classe Process. Bisogna però attivare il componente: gb.desktop)

Codice: gambas [Seleziona]


Private dw As DesktopWindow  


Public Sub Form_Open()

  Shell "onboard"
      
End


Public Sub Button1_Click()

  Dim a As Integer


' Fra le finestre aperte sul Desktop...
    For Each dw In Desktop.Windows
    
 '...cerca quella avente nome "onboard"...
      If dw.name = "onboard" Then
 ' ...per estrarne l'Id (già in decimale !)...
        a = dw.Id
      Endif

   Next
  
 ' ...che va ad inserire in Embed:
   Embedder1.Embed(a)
  
End


Public Sub Button2_Click()  ' chiude "onboard"

' La finestra di "onboard" viene liberata dall'inglobamento:
   Embedder1.Discard()

' Viene nuovamente individuata...
   For Each dw In Desktop.Windows  
     If dw.name = "onboard" Then  
'  e quindi viene chiusa:
       dw.Close
     Endif  
   Next

End




...... di più "nin zò" !  ;D

11197
Aggiornamento:

Dopo alcuni mesi sono tornato sull'argomento ed ho fatto delle prove e verifiche sull'individuazione del ID di una finestra e sul funzionamento di Embed con Gambas 3 (che bisognerà avere cura di aggiornare); e rinvio a questa discussione dove ho descritto i risultati finalmente positivi (con risoluzione dei problemi sopra citati):

http://www.gambas-it.org/smf/index.php?topic=1923.msg21337#msg21337

Sono riuscito a trovare alcuni modi per individuare l' ID della finestra di un programma, che sono visibili in questa pagina:
http://www.gambas-it.org/wiki/index.php?title=Individuare_ed_estrarre_l%27ID_della_finestra_di_un_programma


Consultare anche questa pagina della WIKI: http://www.gambas-it.org/wiki/index.php/Embedder .

11198
Programmazione / Re: Tastiera virtuale
« il: 14 Novembre 2011, 20:28:34 »
....ho provato il tuo codice ma all'avvio mi da questo errore:
Not enough arguments
Mi manca forse qualcosa?  ???

...me lo dava anche a me fino a ieri questo medesimo problema, al di là del codice, che ho scritto solo oggi pomeriggio e che t'ho passato. Poi ieri sera ho fatto un aggiornamento di Gambas, ed oggi funziona. Forse il problema stava in qualche bug...  :-\  ..non saprei !  :-\
L'Embdder oggi mi funziona sia con KDE che con Gnome (poco fa - tra l'altro - ho embeddato con Mint-Gnome proprio la tastierina "onboard" !!!  :coder:  Quindi la cosa la potrai fare tranquillamente... se risolvi quel problema.)

Ho notato però che:
  • effettuando l'inglobamento (...embedding) con Mint-Gnome, questo non avviene con impostazione del componente gb.qt4, ma solo impostando il componente gb.gui oppure il componente gb.gtk ! (ma questo fatto solo i più esperti, rispetto ad un semianalfabeta come me, potranno spiegarti il perché);
  • effettuando l'inglobamento, invece, con Kubuntu-KDE, esso avviene anche con gb.qt4 !





Adde:
Dunque... sto provando ancora con l'Embedder: sto inglobando l'ira di dio !  Proprio di tutto !  :coder:  Mr Calamita ! :P Uno spassoooo !  :party:

11199
Programmazione / Re: Tastiera virtuale
« il: 14 Novembre 2011, 16:59:26 »
Ho la soluzione per te
(necessita ancora  ;D la presenza nel sistema del programmino wmctrl):

Codice: gambas [Seleziona]


Private h As Process

Public Sub Form_Open()

'....va be', metto qui a fini esemplificativi l'avvio di "onboard"
  h = Shell "onboard"

End

Public Sub Button1_Click()

 Dim id As Integer
 Dim listaId, s As String
 Dim ss As String[]
 Dim j As Byte

  Shell "wmctrl -p -l" To listaId

' per estrapolare l'ID di "onboard" raccolgo tutte le righe della variabile "listaId"
' distinguendole sulla base del carattere "nuova riga a capo":
    ss = Split(listaId, "\n")
 
    For j = 0 To ss.Max
' Se nella riga presa in considerazione è presente la parola "onboard"...
       If ss[j] Like "*onboard" Then
'...allora ne raccogliamo i caratteri che indicano l'Id in esadecimale della sua finestra...
         s = Replace(Split(ss[j], " ")[0], "0x", Null)
' ...e lo convertiamo in decimale:
         id = Val("&" & s)
' Per curiosità vediamo l'Id in console:
         Print id
       Endif
     Next

 ' Inserisco l'Id della finestra di "onboard" in "Embed":
     Embedder1.Embed(id)

End


Public Sub Button2_Click()  ' con questo puoi anche eliminare la tastierina

   h.kill

End


 :rolleyes:

Io l'ho provato con la calcolatrice KCalc su Kubuntu-KDE, e funziona perfettamente.

Fammi sapere.  :ciao:

11200
Ringrazio vivamente  :ciao: i miei amici Sotema e Milio per i loro interventi.

Faccio qualche prova al riguardo  :coder:  e faccio sapere....



Prove effettuate (nessuna gestione dei Group):

Soluzione di Sotema
Ovviamente funziona (si può utilizzare volendo anche Panel).
Ho provato, poi, la strada indicata da Sotema per ridimensionare in un solo momento non solo la proprietà Width, ma anche quella Height. Per fare ciò ho così proceduto:
Ho inserito prima un HBox, quindi un VBox, e in quest'ultimo un Button; impostando la gerarchia dei tre oggetti nella sequenza prima espressa, ossia: HBox-->VBox-->Button.
Per quel riguarda il codice ho fatto così:
Codice: gambas [Seleziona]

Public Sub soluzioneSotema()
 Dim btn As Button
 Dim vb As VBox

' ridimensiono VBox.Width (e quindi indirettamente anche Button.Width)
  For Each vb In HBox1.Children
    vb.Width = 10
  Next

' passo quindi a ridimensionare direttamente Button.Height
  For Each btn In VBox1.children
    btn.H = 10  
  Next
End


Ho ottenuto il contemporaneo ridimensionamento di entrambe le proprietà del Button.


Soluzione di Milio (con il .Tag)
Funziona. Rapida e semplice.
Provo a modificare entrambe le dimensioni del Button:
Codice: gambas [Seleziona]

Public Sub soluzioneMilio()
  Dim btn As Button

For Each btn In Panel1.Children
    If btn.Tag = "milio" Then
     btn.W = 60
     btn.H = 10
    Endif
  Next
End


Molto rapido.



Molto bene.  :)
Ancora grazie ad entrambi.   :ciao:

11201
Presupposti:
- allora... ho un contenitore qualsiasi, per esempio un Panel1, nel quale sono children 4 Button;
- questi 4 Button sono raggruppati in due Group aventi nomi diversi: per esempio: button1 e button2 appartengono al Gruppo: "gruppoUno", mentre button3 e button4 appartengono al Gruppo: "gruppoDue";

Problema:
- usando la sintassi For Each ... IN ...... vorrei modificare, per esempio, la proprietà Width di quei button in modo distinto, ossia soltanto dei button appartenenti ad un solo gruppo (ad esempio solo ai due button appartenenti al Gruppo chiamato "gruppoDue", lasciando inalterata quindi la Width dei button appartenenti al Gruppo "gruppoUno").  :rolleyes:
- vorrei gestire la cosa - se possibile - utilizzando la denominazione del Gruppo per coinvolgere in un botta sola i due button interessati, e non quindi scrivere i nomi di ciascuno dei due button.

Non so se mi sono spiegato....

11202
Programmazione / Re: Tastiera virtuale
« il: 12 Novembre 2011, 19:58:15 »
A me serve non solo visualizzarla ma deve interagire con il programma che sto realizzando...
Scusami, non sono stato preciso. Con "wmctrl la tastierina virtuale non viene solo visualizzata, ma funziona regolarmente: il comando wmctrl ti consente semplicemente di gestire la finestra della tastierina.
Se, infatti, provi a piazzare ad esempio una TextArea nel form ed a posizionare sullo schermo la tastierina virtuale con wmctrl, potrai vedere che cliccando sui suoi tasti  :coder: appaiono i caratteri sulla TextArea del programma.


Ho detto contenuta all'interno di un form...
...non ho capito i contenuti dei link che mi hai postato.
Da quel che so, lo puoi fare con Embed; ci sono varie discussioni al riguardo nel forum: prova a fare una ricerca.

11203
Programmazione / Re: Tastiera virtuale
« il: 12 Novembre 2011, 14:12:05 »
"all'interno di un form" io direi con l'Embedder ed il metodo Embed.


Se vuoi, invece, semplicemente visualizzarla sullo schermo:

Codice: gambas [Seleziona]

Public Sub BtnKeyb_Click()

Shell "onboard" Wait

' la tastierina virtuale viene posta in basso al centro dello schermo:
  Shell "wmctrl -r onboard -e 0,500,800,600,300"

End


Note:
1) Con il comando bash wmctrl la tastierina virtuale (in realtà: la finestra del programma da gestire) deve essere ovviamente aperta prima che operi il comando wmctrl (perché appunto questo agirà sulla sua finestra);
2) riguardo ai valori dell'esempio precedente:
  • 500 = coordinate x;
  • 800 = coordinate y;
  • 600 = lunghezza della finestra;
  • 300 = altezza della finestra.
Quindi, volendo, puoi anche far modificare la grandezza della tastierina virtuale. Se non vuoi, i due ultimi parametri dovrebbero essere posti a -1.


11204
Ahhh quindi c'è qualche differenza ^^


Anch'io ho coominciato con VB. Le differenze con Gambas ci sono: come ha ricordato, tra l'altro, Ceskho, Gambas non è un semplice un clone di Vb.

Io credo che ti conviene comunque dare uno sguardo alla documentazione ed al manuale (se fai una ricerca anche qui nel forum, puoi trovare il collegamento al sito dove puoi trovare la traduzione in italiano; anche se ormai si può dire che quel contiene sostanzialmente le cose basilari): almeno così eviti ed elimini i problemi, errori e dubbi iniziali.

11205

infatti su windows avevo dichiarato la variabile fuori dalle funzioni, sempre con dim.
Se provo a farlo con gambas mi da un altro errore, "Unexpected DIM alla linea 2 in FMain.class"

 :ciao:

...senza DIM in Gambas all'esterno:

spesso basta anche solo:

variabile As Integer (o quello che è)  <------------

Public sub.......()
etc.. etc...

Pagine: 1 ... 745 746 [747] 748 749 ... 758