Gambas-it

Gambas3 => Domande tecniche => Topic aperto da: Michy9393 - 27 Febbraio 2013, 22:29:03

Titolo: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: Michy9393 - 27 Febbraio 2013, 22:29:03
E' possibile fare una cosa del genere?
Mi spiego meglio
Ho il FORM1 e dentro di esso ho il tasto cancella in alto a destra...bene ora voglio che questo tasto ci sia nel FORM2 , FORM3 e così via...E' possibile una cosa del genere? Perchè sennò bisogna fare una modifica per ogni form e se si hanno tanti form diventa distruttivo!
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: vuott - 27 Febbraio 2013, 22:35:15

Ho il FORM1 e dentro di esso ho il tasto cancella in alto a destra...

Per "tasto cancella" cosa intendi ? Un classico Button ?
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: Michy9393 - 27 Febbraio 2013, 22:35:46

Ho il FORM1 e dentro di esso ho il tasto cancella in alto a destra...

Per "tasto cancella" cosa intendi ? Un classico Button ?
si un classico button ...oppure qualche label e cose del genere :) niente di speciale!
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: vuott - 27 Febbraio 2013, 23:10:10
Se tu creassi quei Form da codice, la impostazione dei Button sarebbe più semplice.
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: Picavbg - 27 Febbraio 2013, 23:15:16
E' possibile fare una cosa del genere?
Mi spiego meglio
Ho il FORM1 e dentro di esso ho il tasto cancella in alto a destra...bene ora voglio che questo tasto ci sia nel FORM2 , FORM3 e così via...E' possibile una cosa del genere? Perchè sennò bisogna fare una modifica per ogni form e se si hanno tanti form diventa distruttivo!

In alto a Dx in ciascuna form è già presente il pulsantino con la "x". Esso ti da già la possibilità di chiudere brutalmente la form attiva al momento. Ciò vale anche per tutte le form modali aperte in successione durante l'esecuzione del programma, se esso le prevede. Cioè proprio come hai indicato tu. Non capisco pertanto la domanda. Ciò anche perchè nel tuo ultimo post parli di:
Citazione
un classico button ...oppure qualche label e cose del genere  niente di speciale!

Ma quest'ultimo tuo riferimento è in totale contrapposizione con quanto richiesto nel primo post. Ma cosa vuoi ottenere veramente? E perchè?  ???
 :ciao:
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: vuott - 27 Febbraio 2013, 23:19:29
In alto a Dx in ciascuna form è già presente il pulsantino con la "x".

Anche io avevo pensato, a tutta prima, a quella X, ma.....


Ma cosa vuoi ottenere veramente?

...poi lui ha chiarito che si può trattare di un qualsiasi "oggetto" posto su ciascun Form.
Insomma, posti, ad esempio, 4 Form già creati, non via codice, bensì dall'IDE, se io voglio, poi, via codice aggiungere magari con un ciclo un oggetto (ad esempio un "Button") su ciascuno dei 4 Form, come devo fare ?   ;D
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: Picavbg - 27 Febbraio 2013, 23:28:18
@ vuott
Ma sei sicuro che voglia proprio quello che hai intuito?
Sentiamo cosa vuole fare.  :D
 :ciao:
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: vuott - 27 Febbraio 2013, 23:34:56
 :ciao:

@ vuott
Ma sei sicuro che voglia proprio quello che hai intuito?

Ma... lui mi ha risposto così:  :-\
si un classico button ...oppure qualche label e cose del genere :) niente di speciale!
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: milio - 28 Febbraio 2013, 00:51:39
Si va a creare un form Master con tutti i tasti che servono...
Poi tutti i form che utilizzano i tasti del form Master verranno creati all'interno del form master...

Lascio esempio
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: vuott - 28 Febbraio 2013, 01:05:56
Si va a creare un form Master con tutti i tasti che servono...
Poi tutti i form che utilizzano i tasti del form Master verranno creati all'interno del form master...

Non ne fallisce una, milio !

   (http://www.the-garfield-show.tv/italiano/wp-content/uploads/2008/08/gif-garfield_sept.gif)



In sostanza, tu assegni come genitore di ciascun Form secondario la ScrollView del Form-Master. Ricrei detto Form-Master per ciascuno dei Form secondari, i quali verrano ad essere in pratica inglobati in quella ScrollView, in quanto figli di quest'oggetto. E quindi i Button del Form-Master con quello stratagemma vanno a servire nella identica maniera tutti i Form secondari.
Il Form-Master si moltiplica per il numero dei Form secondari, i quali assumono solo un ruolo quasi decorativo con i propri particolari oggetti che, comunque, sono attivi ed operativi, e che essi portano in dote al Form (ossia il Form-Master) del loro nuovo genitore (la ScrollView).

Ingegnoso.
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: Michy9393 - 28 Febbraio 2013, 12:44:08
Grazie mille a tutti :) ho risolto!
@Picavbg
Vuott ha capito benissimo la mia domanda :) era solo per fare un esempio il bottone esci...ma poteva essere anche un bottone cancella...vai ad una altro form e così via :)

RISOLTA!
Titolo: Re: Elementi del form ripetuti in tutti gli altri
Inserito da: ZioCrick - 17 Marzo 2013, 10:58:28
Si va a creare un form Master con tutti i tasti che servono...
Poi tutti i form che utilizzano i tasti del form Master verranno creati all'interno del form master...
Scusate se mi inserisco.
Siccome sto ancora studiando (e provando) Gambas nella sua sintassi di base, volevo solo chiedere un'informazione pertinente con l'argomento.
Per ottenere il risultato richiesto da Michy9393, io con VB in .net usavo l'ereditarieta'.
Siccome ho letto che Gambas implementa pienamente la OOP, non sarebbe meglio usarla in questo caso?
Tra l'altro si vedrebbe immediatamente il risultato grafico nell'IDE e non servirebbe scrivere tutto il codice (come ho visto nell'esempio) per la creazione degli oggetti comuni a tutte le Form figlie.
Ci sono per caso delle limitazioni in Gambas? O delle controindicazioni?
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: Michy9393 - 17 Marzo 2013, 17:14:33
Il problema è come hai fatto a richiamare l'ereditarietà su VB? e su Gambas come si può fare?
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: ZioCrick - 17 Marzo 2013, 22:15:25
Il problema è come hai fatto a richiamare l'ereditarietà su VB?
Attento: ho specificato che la usavo su VB .net, NON  su VB6 (dove non era possibile).
La piattaforma .net e' nata OOP indipendentemente che si sviluppasse in VB o in C#.
Per ereditare le caratteristiche di una classe/Form, bastava inserire la clausola Inherits seguita dalla classe/form padre; per esempio:
Ho una Form ArchivioBaseFrm con la struttura di pulsanti, ListBox, TextBox etc. (dichiarati publici) comuni a tutti gli archivi,
e una Form AnagraficaBaseFrm nella quale ho aggiunto i campi e pulsanti specifici per le anagrafiche, le cui prime due righe sono:

Public Class AnagraficaBaseFrm

Inherits ArchivioBaseFrm


Poi il gioco continua perche' ogni anagrafica specifica eredita la AnagraficaBaseFrm e ci aggiunge gli oggetti specifici per quella.
La cosa bella e' che oltre ad ereditare gli oggetti, puoi sfruttare anche gli eventi e i metodi della Form padre e puoi decidere se far scatenare solo quelli della Form padre e/o anche quelli della Form figlia, il tutto per ogni singolo oggetto.
Si risparmia di scrivere un mucchio di codice.
Ovviamente sto parlando di applicazioni complesse.

Citazione
e su Gambas come si può fare?
Questo non l'ho ancora studiato.
Per questo ho fatto qui la richiesta di chiarimento.  :)
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: vuott - 18 Marzo 2013, 00:01:57

Inherits ArchivioBaseFrm



Riguardo al concetto di eredità fra Classi rinvierei a questa discussione ed in particolare alla risposta n. 6 e segg. del nostro caro amico sotema:
http://www.gambas-it.org/smf/index.php?topic=2616.msg27638#msg27638

ma anche a queste altre:
http://www.gambas-it.org/smf/index.php?topic=156.0
http://www.gambas-it.org/smf/index.php?topic=1210.msg13360#msg13360
http://www.gambas-it.org/smf/index.php?topic=69.0
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: ZioCrick - 18 Marzo 2013, 11:03:02
Grazie vuott.
Ho avuto la risposta che cercavo, e credo che anche Michy ne possa giovare parecchio.  :)
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: sotema - 18 Marzo 2013, 11:40:17
Attenzione che Gambas non permette di usare l'ereditarietà in una FORM.
L'oggetto FORM eredita la classe WINDOW; tentando di ereditare una Form otterresti l'errore di doppia eredità (cannot inherit twice)
L'unica soluzione percorribile è quella proposta da Milio.
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: ZioCrick - 18 Marzo 2013, 11:57:48
Attenzione che Gambas non permette di usare l'ereditarietà in una FORM.
L'oggetto FORM eredita la classe WINDOW; tentando di ereditare una Form otterresti l'errore di doppia eredità (cannot inherit twice)
Caspita! ...  Questo e' grave!   :hard:
Ma allora la OOP che fine fa?
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: Michy9393 - 19 Marzo 2013, 10:44:49
Mi state aiutando veramente tanto :) Grazie!
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: sotema - 19 Marzo 2013, 10:56:27
Attenzione che Gambas non permette di usare l'ereditarietà in una FORM.
L'oggetto FORM eredita la classe WINDOW; tentando di ereditare una Form otterresti l'errore di doppia eredità (cannot inherit twice)
Caspita! ...  Questo e' grave!   :hard:
Ma allora la OOP che fine fa?

Guarda che la OOP non è solo l'implementazione che ne fa MS.

In ogni caso per evitare l'errore potresti usare il seguente metodo:
disponendo di una Form2 che vuoi inserire nella Form1 nella classe di Form1 inserisci il seguente codice

Codice: gambas [Seleziona]
Public Sub _new()
Dim myForm As Form2
  myForm = New Form2(Me)
  myForm.Show()
End


e ti ritrovi con Form2 inserita in Form1
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: ZioCrick - 19 Marzo 2013, 13:20:12
In ogni caso per evitare l'errore potresti usare il seguente metodo:
disponendo di una Form2 che vuoi inserire nella Form1 nella classe di Form1 inserisci il seguente codice
Non l'ho provato, ma mi sembra che non abbia nulla a che vedere con la OOP visto che comunque restano due form distinte con gestione degli eventi distinti etc. O no?
Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: md9327 - 19 Marzo 2013, 15:08:31
Si...

In realtà l'oggetto Form si riesce pure a renderlo ereditabile, ma l'ide non lo prevede, per cui non presenta le proprietà di nuovi oggetti ereditati dalla Form.

Come già suggerito, Window è l'oggetto base da cui ereditare eventuali Form personalizzate, cosa che avviene più o meno anche in altri linguaggi, come ad esempio anche Visual Basic...
Da codice, quindi, è possibile creare le proprie maschere ma, purtroppo solo a livello di codice, in quanto non è possibile farlo graficamente (finora...).

Titolo: Re: [RISOLTA] Elementi del form ripetuti in tutti gli altri
Inserito da: ZioCrick - 19 Marzo 2013, 15:24:39
Come già suggerito, Window è l'oggetto base da cui ereditare eventuali Form personalizzate, cosa che avviene più o meno anche in altri linguaggi, come ad esempio anche Visual Basic...
Da quel che ho sperimentato io non era possibile in VB6, ma l'ho usata in VBnet alla grande, ed era comodissima.

Citazione
Da codice, quindi, è possibile creare le proprie maschere ma, purtroppo solo a livello di codice, in quanto non è possibile farlo graficamente (finora...).
Eh  :) ... speriamo che prossimamente venga implementata.
Infatti quel che avevo letto su Gambas mi aveva entusiasmato, perche' mi sembrava un linguaggio semplice e con un bel IDE (tipo VB6) ma con le potenzialita' di VBnet (proprio per la OOP).