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 ... 743 744 [745] 746 747 ... 756
11161
Progetti degli utenti / Re: Smart Timer
« il: 17 Novembre 2011, 19:16:46 »
Come commutare il pulsante di start del cronometro in stop ?


Non so se ho compreso bene.... se tu vuoi che il Timer sia avviato e bloccato premendo solo sul medesimo tasto:

1) metti al posto del Button un ToggleButton, poi in sua corrispondenza metti questo codice:

Codice: [Seleziona]
Public Sub ToggleButton1_Click()

  If Last.value Then
    Timer1.Enabled = True
  Else
    Timer1.Enabled = False
  Endif

End
     :coder:

11162
Segnalazione bug / Re: [Install] Gambas 3 + Natty x86
« il: 17 Novembre 2011, 13:48:00 »
Prova a seguire questa procedura:

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

Quelle librerie, non sono per Natty credo.

Sì. Lo sono. Per la vers. 11.04 - su sistema 64bit.

11163
Segnalazione bug / Re: [Install] Gambas 3 + Natty x86
« il: 17 Novembre 2011, 11:52:02 »

11164
Programmazione / Re: Tastiera virtuale
« il: 17 Novembre 2011, 10:22:58 »
Tra gli esempi di gambas c'è anche quello dell'embed. Quello ti funziona?

Buon suggerimento quello di Ceskho.

Ecco, Tornu, anche l'esempio di Gambas, suggerito da Ceskho, a me funziona regolarmente !  :-\

Ad ogni modo, l'unica cosa che mi pare cambi rispetto agli esempi precedenti, da me segnalati, è semplicemente e sostanzialmente la modalità di individuazione ed estrazione del PID, che comunque è già presente in questo forum:
http://www.gambas-it.org/smf/index.php?topic=163.0
http://www.gambas-it.org/smf/index.php?topic=1791.msg20424#msg20424

e che vorrei qui riportare dall'esempio di Gambas, ricordato sopra da Ceskho, per completare il quadro delle possibilità, con questo quarto modo.
E' necessario avere attivato il componente gb.desktop:

Codice: gambas [Seleziona]

Public Sub btnEmbed_Click()

  Dim sTitle as String
  Dim aHandle As Integer[]
  Dim iHandle As Integer
  
    sTitle = txtTitle.Text

' se nel campo del titolo è stato inserito direttamente
' il numero esadecimale dell'ID della finestra del programma aperto,
' lo muta nella sua versione comprensibile da Gambas,
' poi lo converte in decimale:
  If Left(sTitle, 2) = "0x" Then
    iHandle = Val("&" & Mid$(sTitle, 3))

' se, invece, è stato inserito il numero esadecimale dell'ID
' della finestra del programma aperto, già nella sua versione
' comprensibile da Gambas, lo converte direttamente in decimale:
    Else If Left(sTitle) = "&" Then
      iHandle = Val(sTitle)
  
' se, invece, è stato inserito il "titolo" della finestra del programma aperto,
' ne ricava il suo ID (avendo anche l'accortezza di eliminare ogni eventuale
' spazio presente all'inizio o alla fine del titolo inserito):
    Else
     aHandle = Desktop.FindWindow(Trim(txtTitle.Text))

    If aHandle.Count = 0 Then
      Message.Warning(("Window not found!"))
      Return
    Else If aHandle.Count >= 2 Then
      Message(("Several windows found. I take the first one!"))
    Endif
    
      iHandle = aHandle[0]
  Endif
  
  Try embEmbedder.Embed(iHandle)

  If Error Then Message.Warning(Error.Text)

End

11165
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.

11166
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).

11167
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 ?

11168
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


11169
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.

11170
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

11171
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 .

11172
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:

11173
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:

11174
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:

11175
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....

Pagine: 1 ... 743 744 [745] 746 747 ... 756