Differenze tra le versioni di "Uso della Classe WorkSpace"
Riga 8: | Riga 8: | ||
====Esempio pratico==== | ====Esempio pratico==== | ||
− | Mostriamo un semplice esempio, nel quale viene creata una ''WorkSpace'' con tre schede. | + | Mostriamo un semplice esempio, nel quale viene creata una ''WorkSpace'' con tre schede. Si inseriranno nel ''Form'' due ''Button'': uno per cambiare il testo all'interno di una "TextLabel" posta in una scheda, l'altro per eliminare la scheda in evidenza. |
'''Private''' ws As Workspace | '''Private''' ws As Workspace | ||
'''Private''' tl As TextLabel | '''Private''' tl As TextLabel | ||
Riga 83: | Riga 83: | ||
tl.Text = "Cambio testo alla TextLabel" | tl.Text = "Cambio testo alla TextLabel" | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub Button2_Click() | ||
+ | |||
+ | Dim j As Byte | ||
+ | |||
+ | For j = 0 To ws.Windows.Max | ||
+ | |||
+ | <FONT color=#006400>' ''Viene eliminata la scheda posta in primo piano (in evidenza rispetto alle altre):''</font> | ||
+ | If ws.Windows[j].Id = ws.ActiveWindow.Id Then | ||
+ | ws.Windows[j].Close | ||
+ | Exit | ||
+ | Endif | ||
+ | |||
+ | Next | ||
'''End''' | '''End''' |
Versione delle 12:12, 15 gen 2013
La Classe WorkSpace consente di utilizzare un oggetto speciale somigliante ad una TabStrip. La WorkSpace, in sostanza, implementa un'area di lavoro analoga ad una TabStrip, in ciascuna scheda della quale è possibile inglobare delle finestre di primo livello. Per poter inglobare tali oggetti Window nella WorkSpace, sarà necessario inanzitutto istanziarli, e, differentemente dall'oggetto TabStrip, bisognerà inserirli mediante il metodo .Add .
Ci si sposterà da una scheda ad un'altra della WorkSpace, semplicemente cliccando sulla rispettiva linguetta.
Per poter utilizzare detta Classe bisognerà attivare il componente: gb.form.mdi .
Essa è creabile via codice, ovvero è possibile porre l'oggetto speciale "WorkSpace" dall'IDE di Gambas.
Esempio pratico
Mostriamo un semplice esempio, nel quale viene creata una WorkSpace con tre schede. Si inseriranno nel Form due Button: uno per cambiare il testo all'interno di una "TextLabel" posta in una scheda, l'altro per eliminare la scheda in evidenza.
Private ws As Workspace Private tl As TextLabel Public Sub Form_Open() ' Dichiariamo la variabile del tipo Window per le finestre ' che dovranno essere inglobate nelle schede della "WorkSpace": Dim w As Window Dim ww As New Window[] Dim j As Byte ' Istanziamo innanzitutto ad esempio tre oggetti di tipo "Window" ' che saranno inglobati in tre rispettive schede della "WorkSpace": For j = 0 To 2 With w = New Window(Fmain) .Border = True .W = 100 .H = 100 Select Case j Case 1 ' Nel secondo oggetto "Window" poniamo una immagine: .Picture = Picture.Load("percorso_file_immagine") Case 2 ' Nel terzo oggetto "Window" poniamo una "TextLabel", ' affinché si abbia almeno una scheda della "WorkSpace" con del testo: With tl = New TextLabel(w) .X = 60 .Y = 100 .W = 150 .H = 80 .Border = Border.Sunken .Background = Rnd(&000000, &FFFF00) .Text = "Questa è una TextLabel posta nella terza scheda della WorkSpace !" End With End Select ' Diamo un colore casuale a ciascuna "Window": .Background = Rnd(&000000, &FFFF00) End With ' Inseriamo ciascuna "Window" in una variabile array di tipo "Window", ' per poter trasferire le variabili "Window" alla "WorkSpace" successivamente: ww.Add(w) Next ' Quindi creaiamo l'oggetto "WorkSpace" e gli attribuiamo delle proprietà: With ws = New Workspace(FMain) As "pippo" .X = 10 .Y = 30 .W = 400 .H = 400 For j = 0 To ww.Max ' Inseriamo gli oggetti "Window" nella "WorkSpace" per determinare il nuemro di schede di cui sarà costituita: .Add(ww[j]) .Windows[j].Caption = "Scheda" & CStr(j + 1) ' Poniamo le linguette di ciascuna scheda in alto (ad ogni modo così è di default). ' Se volessimo farle apparire in basso la proprietà sarebbe: "Align.Bottom": .Orientation = Align.Top .Font.Bold = True Next ' Stabiliamo che la scheda in risalto sarà la seconda: .ActiveWindow = ww[1] End With End Public Sub Button1_Click() tl.Text = "Cambio testo alla TextLabel" End Public Sub Button2_Click() Dim j As Byte For j = 0 To ws.Windows.Max ' Viene eliminata la scheda posta in primo piano (in evidenza rispetto alle altre): If ws.Windows[j].Id = ws.ActiveWindow.Id Then ws.Windows[j].Close Exit Endif Next End