Gambas-it

Gambas3 => Programmazione => Topic aperto da: tornu - 15 Giugno 2017, 21:06:00

Titolo: [Risolto] Gestione Form attive
Inserito da: tornu - 15 Giugno 2017, 21:06:00
Buonasera a tutti,
mi serve un vostro aiuto per trovare un metodo di gestione per più Form attive,
non sò se ricordo male ma sul Forum qualcosa del genere si era già discusso,
facendo tutte le ricerche possibili non sono riuscito a trovare niente che mi
potesse dare uno spunto.
Praticamente quello che mi serve implementare nel programma che stò creando è
il seguente:
in qualsiasi punto del programma mi trovi ho la neccessità tramite un tasto
per esempio Esc (vecchio rettaggio di programmi IBM) di richiamare un'apposita Form,
senza chiudere quella attiva (in modalità ShowModal per capirci) che mi visualizzi
un elenco (max 5) di Form rimaste attive, in quanto richiamate in altri momenti e non
chiuse con apposito pulsante, avendo la possibilità di selezionarne una che ovviamente
diverrà la Form attiva principale. Spero di avervi fatto capire cosa mi neccessita.
Vi allego un'immagine di quello che vorrei ottenere.
Aspetto fiducioso vostri suggerimenti
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 16 Giugno 2017, 00:07:02
Avevo pensato a qualcosa del genere da affinare, ma non capisco perchè DesktopWindow non mi ritorna i nomi delle finestre.
Ora sono stanco e vado a nanna, magari voi capite l'inghippo.
 :ciao: :ciao:
Titolo: Re:Gestione Form attive
Inserito da: vuott - 16 Giugno 2017, 01:01:14
...DesktopWindow non mi ritorna i nomi delle finestre.
Devi utilizzare la proprietà ".VisibleName" anziché ".Name". Ciò, però, comporta anche che devi modificare i valori stringa di ciascun "Case" nel "Select Case", contenuto nella routine "Form_Open( )". Quindi ad esempio nel primo "Case" avrai "ARTICOLI".


Ad ogni buon fine modificherei la Classe "FMenu.class" come segue:
Codice: [Seleziona]
Private $sName As String

Public Sub Form_Open()
 
  Dim w As DesktopWindow
 
  For Each w In Desktop.Windows
    Select Case w.VisibleName
      Case "ARTICOLI"
        ListView1.Add("1", "Finestra Articoli")
      Case "CLIENTI"
        ListView1.Add("2", "Finestra Clienti")
      Case "FORNITORI"
        ListView1.Add("3", "Finestra Fornitori")
      Case "INTERROGAZIONI"
        ListView1.Add("4", "Finestra Interrogazioni")
      Case "ORDINI"
        ListView1.Add("5", "Finestra Ordini")
      Case "STATISTICA"
        ListView1.Add("6", "Finestra Statistica")
    End Select
  Next

End

Public Sub ReturnName() As String

  Me.ShowModal()

End

Public Sub ListView1_Click()
 
  Dim s As String
 
  s = ListView1.Key
  Select Case s
    Case "1"
      $sName = "Articoli"
    Case "2"
      $sName = "Clienti"
    Case "3"
      $sName = "Fornitori"
    Case "4"
      $sName = "Interrogazioni"
    Case "5"
      $sName = "Ordini"
    Case "6"
      $sName = "Statistica"
  End Select
 
' Individua l'handle della finestra, scelta dalla lista della "ListView", e la imposta come finestra "Attiva":
  Desktop.ActiveWindow = Desktop.FindWindow($sName, Null, Null)[0]

End

Public Sub btnOK_Click()

  Me.Close(True)

End

Public Sub btnCancel_Click()

  Me.Close

End


Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 16 Giugno 2017, 12:21:33
 :ciao: vuott,
ti ringrazio perchè mi hai permesso di capire dove sbagliavo, sbagliavo nel valore di ritorno che non vedevo perchè quando si è stanchi non si ragiona e io guardavo la console vuota solo perchè troppo sottile e mi sono dimenticato che occorre sempre (tenendo Echo a true) guardare l'Open contents.
Come regola usare w.Name dovrebbe funzioinare sempre perchè dovrebbe ritornare il Name anche se Text o Title non sono impostati, se impostati ritorna quello (vedo ora ma non lo sapevo e mi pare assurdo).
Invece mi accorgo che così non è e secondo me si tratta di un bug tu cosa ne dici?
Comunque io preferisco avere un valore di ritorno su cui poter lavorare, perchè hai cambiato quella parte di codice?
Non è meglio come l'ho pensato io? Se l'utente ci ripensa?
Titolo: Re:Gestione Form attive
Inserito da: vuott - 16 Giugno 2017, 13:45:23
si tratta di un bug tu cosa ne dici?
Non saprei: è da anni che riscontro questo problema.



Se l'utente ci ripensa?
E' giusto: evitare gravi errori, in futuro irrimediabili, è l'opportunità più importante.   (https://patient.azureedge.net/forums/emoticons/sad.gif)
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 16 Giugno 2017, 17:01:34
si tratta di un bug tu cosa ne dici?
Non saprei: è da anni che riscontro questo problema.
Secondo Bruen sulla ML sembrerebbe corretto così al 100%.
Citazione

Se l'utente ci ripensa?
E' giusto: evitare gravi errori, in futuro irrimediabili, è l'opportunità più importante.   (https://patient.azureedge.net/forums/emoticons/sad.gif)
Questa tua risposta appare più una considerazione filosofica che  però la interpreto come risposta affermativa e pertanto se sei d'accordo sintetizzerei la risposta a Tornu con questo codice allegato.
 :ciao: :ciao:
Titolo: Re:Gestione Form attive
Inserito da: vuott - 16 Giugno 2017, 21:09:51
però la interpreto come risposta affermativa
In vero ognuno ha le sue esigenze e decide per sé.  :-\
Sarà Tornu in fine a fare la sua scelta.



se sei d'accordo
Ma io mica appongo l'imprimatur ai codici !
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 16 Giugno 2017, 22:16:20
In base a quanto ho capito delle esigenze di Tornu ho proposto un codice che potesse soddisfarle.
C'era un piccolo particolare, che il codice proposto non funzionava  ;D
Tu lo hai fatto funzionare, a quel punto è diventato un codice a "due mani".
Ti ho chiesto un chiarimento che ho creduto di "sintetizzare" nell'ultimo codice proposto e quindi trovo corretto chiederne la tua approvazione, tutto li.
Va da se che poi Tornu farà quel che vuole.  :)

 :ciao:
Titolo: Re:Gestione Form attive
Inserito da: vuott - 16 Giugno 2017, 23:33:44
trovo corretto chiederne la tua approvazione, tutto li.

Approbatio, ratificatio, assensus atque consensus a Nobis eisdem Romanis Pontificibus et Ecclesiæ in perpetuum conceduntur.    (http://www.giuspen.com/emoticons/_amen.gif)
Titolo: Re:Gestione Form attive
Inserito da: tornu - 17 Giugno 2017, 10:45:47
Inanzitutto grazie per la vostra solerte risposta.
Analizzando quanto da voi proposto, non è esattamente quanto volevo ottenere,
è comunque una traccia, il mio solito problema nell'esporre in modo chiaro i quesiti.
Nell'esempio allegato da Gianluigi all'avvio del programma nel Modulo MMain le Form
vengono avviate tutte a prescindere, infatti se premo Esc nella FMenu vengono visualizzate
tutte contemporaneamente. Nel mio caso essendo il programma un gestionale non so quale Form
andrò a richiamare in un determinato punto dello stesso, tenedo presente che al momento sono
già una trentina (è sono solo all'inizio dello sviluppo). Quello che avete proposto diciamo che a me
servirebbe "dinamico", nel senso:
- All'avvio la FMenu se richiamata sarà vuota
- Se apro la FArticoli chè in quel momento sarà la Form attiva solo lei sarà visibile in FMenu
   se richiamato
- Mentre la FArticoli e attiva dalla barra dei menù apro FFornitori che diverrà la Form visibile,
  se in questo momento richiamo con Esc FMenu, verranno visualizzate FArticoli e FFornitori.
- Se chiudo tramite pulsante per esempio "Chiusura" o "Uscita" la FFornitori, tornerà visibile la
  FArticoli e richiamando FMenu sarà visibile solo FArticoli
Tutto questo ovviamente per un numero limitato di Form (max 5 contemporaneamente come avevo già scritto),
ovviamente al tentativo di aprire la sesta ci sarà un controllo che avvertirà di aver raggiunto il numero massimo.
La gestione se ci si riesce in FMenu dovrebbe essere gerarchica, l'ultima Form richiamata deve diventare la prima
della lista se sono presenti altre, le altre devono scalare.
Mi scuso per la lungaggine.
Titolo: Re:Gestione Form attive
Inserito da: vuott - 17 Giugno 2017, 13:54:00
Risposndo come ti risponderebbero nei forum del linguaggio C:
...ma hai tentato ? Facci vedere un po' il codice con cui hai tentato ... vediamo dove sbagli ...
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 17 Giugno 2017, 14:53:28
Vi è da precisare che nel mio ultimo codice c'è un'errore nel codice:
Codice: [Seleziona]
Public Sub Form_Open()
 
  Dim w As DesktopWindow
 
  For Each w In Desktop.Windows
    Print w.VisibleName
    Select Case w.VisibleName
      Case "ARTICOLI"
        ListView1.Add("1", "Finestra Articoli")
      Case "CLIENTI"
        ListView1.Add("2", "Finestra Clienti")
      Case "FORNITORI"
        ListView1.Add("3", "Finestra Fornitori")
      Case "INTERROGAZIONI"
        ListView1.Add("4", "Finestra Interrogazioni")
      Case "ORDINI"
        ListView1.Add("5", "Finestra Ordini")
      Case "STATISTICA"
        ListView1.Add("6", "Finestra Statistica")
    End Select
  Next

End
Ho invertito due voci, questo è quello di Vuott (giusto).
La distrazione è la mia prerogativa  ;D

Chiudendo delle finestre e poi dando Esc in console appaiono errori tipo questi:

Codice: [Seleziona]
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d

Ricevo, ma non sempre, l'errore Out of bound da Desktop.FindWindow(s, Null, Null)[0] quando, dopo le chiusure, le finestre rimangono due. Forse ci vorrebbe un refresh...  :-\

Comunque anche io penso che concettualmente il codice postato faccia quello che chiedi.

 :ciao:
Titolo: Re:Gestione Form attive
Inserito da: vuott - 17 Giugno 2017, 15:06:37
Ricevo, ma non sempre, l'errore Out of bound da Desktop.FindWindow(s, Null, Null)[0]
Potresti anche provare ad integrare il primo parametro del Metodo ".FindWindow( )" con un paio di asterischi, come quando si usa l'operatore Like.

Codice: [Seleziona]
...Desktop.FindWindow("*" & s & "*", ....



Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 17 Giugno 2017, 15:52:45
Mi sembra che non cambi niente, comunque se mettiamo un Try davanti a Desktop.ActiveWindow = così:

Codice: [Seleziona]
If Not IsNull(s) Then Try Desktop.ActiveWindow = Desktop.FindWindow("*" & s & "*", Null, Null)[0]

Sembra funzionare e non mi da più errore.

Rimangono gli :

Codice: [Seleziona]
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00011
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00011
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00011
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00011
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00015
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00019
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c00019
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0001d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x20455355
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x2052554f

in console.
Si aggiungono ogni volta che si chiude la finestra attiva e si da Esc (ho provato a mettere dei Try sul caricamento del menu ma senza risultato)  :-\

 :ciao: :ciao:
Titolo: Re:Gestione Form attive
Inserito da: vuott - 17 Giugno 2017, 17:17:20
Chiudendo delle finestre e poi dando Esc in console appaiono errori tipo questi:

Codice: [Seleziona]
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
X Error: BadWindow (invalid Window parameter) 3
  Major opcode: 20 (X_GetProperty)
  Resource id:  0x3c0000d
I valori espresi in rappresentazione esadecimale sono gli identificativi di ciascuna finestra chiusa, dopo che - come hai sottolineato tu - sia stata già chiusa la finestra "MENU".

Per verificare ciò, è sufficiente porre alla fine della routine "Sub ListView1_Click( )" questa riga di codice:
Codice: [Seleziona]
Print Hex(Desktop.FindWindow($sName, Null, Null)[0], 8), $sName
e compiere quindi tutta la sequenza del test.
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 17 Giugno 2017, 17:47:49
Questo dovrebbe significare che Gambas mantiene in memoria le finestre chiuse e quando noi testiamo ogni finestra lui non le trova più e da quell’errore?
Suggeriresti di memorizzare l’esadecimale delle finestre chiuse in un vettore e testare prima del Select Case di Menu?
 :hatecomputer:
Titolo: Re:Gestione Form attive
Inserito da: vuott - 17 Giugno 2017, 18:09:24
Invece di immaginare miei possibili suggerimenti, perché non fai la prova diretta delle tue ipotesi ?   (https://forum.ubuntu-it.org/images/smilies/puzzled.gif)
Titolo: Re:Gestione Form attive
Inserito da: vuott - 17 Giugno 2017, 18:11:35
perché non fai
Anzi lo sforzo di risolvere dovrebbe farlo tornu. 
Titolo: Re:Gestione Form attive
Inserito da: tornu - 17 Giugno 2017, 20:15:42
Risposndo come ti risponderebbero nei forum del linguaggio C:
...ma hai tentato ? Facci vedere un po' il codice con cui hai tentato ... vediamo dove sbagli ...
No, perchè come premesso in apertura discussione mi serviva una traccia su cui lavorare, e voi me l'avete data... ci stò
lavorando. La mia risposta non era una critica ai vostri suggerimenti, anzi, era solo per integrare la mia richiesta caso mai
dovreste suggerirmi altre vie da percorrere.

perché non fai
Anzi lo sforzo di risolvere dovrebbe farlo tornu. 
Giusto   :coder:
Titolo: Re:Gestione Form attive
Inserito da: tornu - 21 Ottobre 2017, 21:46:54
Buonasera a tutti,
finalmente ho trovato del tempo per dedicarmi alla soluzione di questo post. Seguendo le indicazioni
di vuott e Gianluigi sono arrivato quasi a conclusione implementando le funzionalità che mi
servivano: un menù dinamico di gestione delle Form attive. Mi rimane un' ultimo passo che proprio
non riesco a risolvere. Quando seleziono una Form attiva dal Menù Attenzione non riesco a portarla
in primo piano. Sicuramente da quanto ho potuto capire sia dai suggerimenti e dall'esempio che mi era stato
postato il componente che dovrebbe risolvere è la classe Desktop, ma sia leggendo la Wiki, i post trovati
sul Forum e altra documentazione (poca) mi risulta un pò ostica.
Posto il progetto al punto in cui sono arrivato.
Mi serve il vostro aiuto e sopratutto il vostro parere sulla strada da me intrapresa per la soluzione.
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 22 Ottobre 2017, 13:10:23
Guarda un po se ti va bene, essendo la FMain a Below devi ridurre a icona la IDE altrimenti non vedi la finestra.

 :ciao: :ciao:

P.S. Solo una cosa: Se la finestra principale non ha il focus CTRL+Q non funziona, se ti interessa devi aggiungere queste righe
Codice: [Seleziona]
  Else If Key.code = Key["Q"] And Key.Control Then
    FMain.Close()
alla routine KeyPress di MMain.

P.S. 2. Mi sono accorto che c'è un errore che forse potrebbe essere riparato caricando subito tutte le form per poi nasconderle e giocare su visible.true o false per mostrarle o no.
Purtroppo ora non ho tempo di farlo, ci aggiorniamo a domani.
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 22 Ottobre 2017, 18:25:15
Mi arrendo, non riesco a capire perché questo codice un po funziona e un po no.
Al forum l'ardua (si fa per dire) sentenza.

 :ciao: :ciao:
Titolo: Re:Gestione Form attive
Inserito da: tornu - 22 Ottobre 2017, 21:03:07
Ciao Gianluigi,
Ho risolto, ti ringrazio comunque per averci provato.
Ho dato uno sguardo all'ultimo codice che hai postato, hai tenuto salvo alcune modifiche
la stessa logica del codice che avevi postato precedente (che comunque mi è servito come spunto),
che però come già avevo detto non era quello che io volevo ottenere, a me serviva una gestione
"dinamica", nel senso che le Form le voglio aprire e chiudere quando lo decido io in base alla logica
del programma. E' ovvio che l'esempio usato in questa discussione parlava solo di alcune Form,
ma io dovrò usare la logica che mi sono prefissato in un programma dove ci saranno parecchie Form
che non potranno essere avviate tutte contemporaneamente per ovvi motivi di flusso dei dati.
La soluzione che ho trovato mi sembra abbastanza funzionale.
Posto il programma definitivo. Se avete suggerimenti in senso migliorativo sempre pronto ad
accoglierli.
Titolo: Re:Gestione Form attive
Inserito da: tornu - 22 Ottobre 2017, 21:06:28
Non mi permette di mettere [Risolto] sul primo post.
Per le modifiche c'è un limite di tempo ?
Titolo: Re:Gestione Form attive
Inserito da: Gianluigi - 22 Ottobre 2017, 21:56:10
Non mi permette di mettere [Risolto] sul primo post.
Per le modifiche c'è un limite di tempo ?

Può essere, non so  :-\
L'ho messo io per te.

 :ciao:
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: Gianluigi - 22 Ottobre 2017, 22:12:38
Ho dato una breve occhiata, ma devo dirti che non funziona a dovere.
Se premi due volte Esc crasha, se apri quattro finestre e ne chiudi due le due chiuse rimangono nell'elenco.
Per Esc è facile basta un booleano il resto la vedo dura, sempre che abbia capito cosa ti serve...

 :ciao: :ciao:

P.S. Se credi domani ci do un occhio più profondo.
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: tornu - 22 Ottobre 2017, 23:07:38
Grazie Gianluigi per averlo provato.
Ho corretto le anomalie che mi hai segnalato.
Se hai la pazienza di riprovare fammi sapere se riscontri altri malfunzionamenti.  ;)
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: Gianluigi - 23 Ottobre 2017, 14:27:38
Ciao Tornu,
bella la soluzione del ID delle finestre col modulo di appoggio  :D

Mi sono permesso di variare alcune cose:
Ora il menu si basa sull'evento Select invece di Click
La FMain non si può chiudere se ci sono finestre aperte
Ho tolto i pulsanti di chiusura e i relativi booleani inutili, se vuoi i pulsanti basta scriverci Me.Close.
Ho tolto del codice superfluo (credo)  :-[

 :ciao: :ciao:
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: tornu - 23 Ottobre 2017, 19:33:30
Grazie... :2birre:
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: tornu - 29 Marzo 2022, 20:49:39
Buonasera a tutti,
scusate se riapro questo vecchio post, ma come ho detto qualche giorno fà sono troppo arruginito con Gambas.
In questo post a suo tempo con l'aiuto di Vuott e Gianluigi ero riuscito a far funzionare il codice che trovate allegato
all'ultima risposta di Gianluigi, funzionava perfettamente.Ora mi dà un'errore che non riesco a decifrare per poter
eventualmente modificare il codice. Allego screenshot errore.
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: Gianluigi - 29 Marzo 2022, 23:40:01
Buonasera a tutti,
...Ora mi dà un'errore che non riesco a decifrare per poter
eventualmente modificare il codice.

Credo che tu debba togliere l'evento dal modulo start (in effetti i moduli non dovrebbero generare eventi) e spostare il codice in ogni form:
Codice: [Seleziona]
Public Sub Form_KeyPress()
  Dim i As Integer

  If Key.Code = Key.Esc Then
    i = FMnuAttenzione.ReturnId()
    If Not IsNull(i) Then Desktop.ActiveWindow = i
  Endif
End
Ti rammento che l'uso di Workspace del componente gb.form.mdi è creato per fare queste cose, vale a dire mostrare in primo piano la finestra che si desidera senza tanti sbattimenti.

 :ciao:
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: tornu - 30 Marzo 2022, 20:26:06
Tutto qui?  :o... scherzo  ;)
Perfetto, fatta la modifica e tutto è tornato a funzionare perfettamente.
Grazie Gianluigi nell'essere sempre solerte con le tue risposte  :2birre:
P.S.: Grazie anche per i suggerimenti in coda alla risposta :ciao:
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: Gianluigi - 31 Marzo 2022, 14:24:44

P.S.: Grazie anche per i suggerimenti in coda alla risposta :ciao:

 :D Prego, sono qui per discutere volentieri di Gambas che continua a piacermi molto.

Riguardo a Workspace allego un esempio semplice e basilare del suo utilizzo.

Per chi è interessato a creare i logo di sfondo ho aggiunto qui https://www.gambas-it.org/smf/index.php?topic=9148.msg51655#msg51655 un programmino utile allo scopo, spero vi piaccia.

 :ciao:
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: kicco - 31 Marzo 2022, 15:58:54

Riguardo a Workspace allego un esempio semplice e basilare del suo utilizzo.


Grazie, molto interessante!
Titolo: Re:[Risolto] Gestione Form attive
Inserito da: vuott - 31 Marzo 2022, 21:14:56
C'era anche qualcosa nella nostra Wiki:

    https://www.gambas-it.org/wiki/index.php/Uso_della_Classe_WorkSpace