Autore Topic: Creazione componente: gb.gridbox  (Letto 117031 volte)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #480 il: 05 Luglio 2011, 00:01:53 »
E' che pensavo di renderlo piu' anonimo possibile, anche perche' se ci metti un testo, quest'ultimo si ripete su tutti i button della colonna...

Sono d'accordo, pero' per esempio un bottone solo con due puntini che invita al click potrebbe andare bene

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #481 il: 07 Luglio 2011, 08:58:56 »
Scorrimento veloce gridbox: è possibile che si veda una colonna visualizzata al posto di un altra colonna? Durante lo scorrimento lento non succede.

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #482 il: 07 Luglio 2011, 13:42:50 »
Intendi lo scorrimento con la scroolbar orizzontale in modo da far scorrere le colonne?
Provato ma non mi succede niente di anomalo.

Puoi postarmi un esempio dove ti capita l'errore... puo' darsi che sia anche un problema di 'combinazioni' di tipo di colonne...

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #483 il: 07 Luglio 2011, 14:03:24 »
Intendi lo scorrimento con la scroolbar orizzontale in modo da far scorrere le colonne?
Provato ma non mi succede niente di anomalo.

Puoi postarmi un esempio dove ti capita l'errore... puo' darsi che sia anche un problema di 'combinazioni' di tipo di colonne...

è una 'sensazione visiva' che si ha con lo barra verticale di scorrimento. Poi ad un controllo lento non si verifica. La tabella test è composta da circa 7-8 colonne e circa 2000 records

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #484 il: 08 Luglio 2011, 14:40:23 »
Errore di visualizzazione
Con dati del recordset 'filtrati (quindi numero inferiore) la sensazione visiva di dati nella colonna sbagliata non si ripete

Button

Si implementa con:

Codice: [Seleziona]
Inc Col
  With GridBox1.Columns[Col]
    .Type = Grid.Type.Button
    .Name = "Button"
    .Text = "test"
    .W = Me.GridBox1.Rows.H
  End With


Gestione eventi con:
Codice: [Seleziona]
Public Sub GridBox1_ButtonClick(Row As Integer, Column As Integer, ColumnName As String)

 
  ......
  'Me.Label1.Text = "Riga: " & Row
  'Me.Label2.Text = "Colonna: " & Column
  'Me.Label3.Text = "Nome: " & ColumnName
.......
  

End

Dopo aver inserito il nuovo codice (abilitati tutti i componenti image) compilo ma mi si blocca alla riga 54 della classe  _button.class :hard: :hard: :hard:

Codice: [Seleziona]
Private Function CreatePic(Row As Integer, Column As Integer, Optional Down As Boolean) As Picture
Dim Pic As Image

  If $GridBox.Row = -1 Then Return
  Pic = New Image($GridBox[Row, Column].W - 2, $GridBox[Row, Column].H - 2)
  Paint.Begin(Pic)  ===> si blocca qua

help me please

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #485 il: 08 Luglio 2011, 15:02:45 »
Probabile un consumo eccessivo di memoria, dato l'elevato numero di oggetti gestiti dalla GridBox?

Che dimensioni hai di ram e cpu ? (solo per fare una valutazione generica sul problema e le cause...)

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #486 il: 08 Luglio 2011, 16:11:56 »
Probabile un consumo eccessivo di memoria, dato l'elevato numero di oggetti gestiti dalla GridBox?

Che dimensioni hai di ram e cpu ? (solo per fare una valutazione generica sul problema e le cause...)

Le caratteristiche del portatile le vedi nella mia 'firma', comunque bypasso il problema sia del problema 'visivo' che del bottone.

Per il primo ho creato un sofisticato filtro dei records, memorizzabile, per il secondo ho eliminato il bottone e richiamo una scheda utilizzando un metodo che in passato hai suggerito te, richiamato da un semplice evento click:

Codice: [Seleziona]
Dim FCO As FContatto
Dim ret As Integer
Dim $_Param As New Integer[]
$_Param.add(GridBox1.CurrentCell.Value)
FCO = New FContatto($_Param)
ret = FCO.ShowModal()
« Ultima modifica: 08 Luglio 2011, 16:15:16 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #487 il: 08 Luglio 2011, 16:18:45 »
@Andy

Ok ti si blocca nella classe _Button... ma che errore ti da?

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #488 il: 08 Luglio 2011, 17:36:33 »
@Andy

Ok ti si blocca nella classe _Button... ma che errore ti da?


non me lo sono segnato, ad ogni modo è come se non riconoscesse il comando, mi era venuto il dubbio di non aver messo qualche componente

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #489 il: 13 Luglio 2011, 13:42:18 »
nuova segnalazione per Milio premetto che sto usando la versione senza implementazione del bottone nella grid (se non erro la 2.99.134). Ho i seguenti campi data:

Codice: [Seleziona]
With GridBox1.Columns[Col]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.Date
    .Field = "Gma"
    .Text = "Start"
    .Name = "gma"
    .DefaultValue = Date(Now)
    .Required = True
    .w = 100
    .Alignment = 3
  End With
  
   Inc Col
  With GridBox1.Columns[Col]
    .Hide = False
    .Type = Grid.Type.Field
    .DataType = Grid.DataType.Date
    .Field = "Gmaclose"
    .Text = "End"
    .Name = "gmaclose"
    .w = 100
    .Alignment = 3
  End With

nel secondo campo (gmaclose), è ammesso una valore null, è un campo che chiude un record di to-do-list

Guarda se non metto nulla cosa compare, allego l'immagine. Non escludo miei errori nella formulazione del recordset di origine, ad ogni modo dai una guardata. Preciso anche che il valore di gmaclose lo inserisco nella cella con un controllo  DateBox1 ( DateBox1.value) che restituisce un valore date completo di ore minuti e secondi. Il comando di inserimento del valore del DateBox funziona. Ma se elimino il valore inserito e salvo mi compare quello che vedi nell'immagine. Nel campo è memorizzato il dato 20:25:32

Domanda sulle formule

Ho visto che hai messo in un esempio:

Codice: [Seleziona]
.formula = "=IIf(C[esenteiva]=0,(C[qta] * C[prezzo])* ((C[iva] / 100) + 1),(C[qta] * C[prezzo]))"

E' possibile far si che se clicco un checkbox una cella assuma il valore della data di oggi?
Ho provato:
 
Codice: [Seleziona]
.formula = "=IIf(C[campocheck]=-1,now())"

ma non va

ancora, la prima funziona, la seconda no..avrei bisogno di non inserire nulla nella cella se l'evento non si verifica
Codice: [Seleziona]
 'FUNGE
  Inc Col
  With GridBox1.Columns[Col]
   .Hide = False
    .Type = Grid.Type.Formula
    .DataType = Grid.DataType.String
    .Field = "Luogo"
    .Text = "Luogo"
    .Name = "luogo"
    .formula = "=IIf(C[chiuso]=0,'roma','brescia')"
    .w = 100
    .Alignment = 3
  End With
  
  Inc Col
  With GridBox1.Columns[Col]
    .Hide = False
    .Type = Grid.Type.Formula
    .DataType = Grid.DataType.Date
    .Field = "Luogo"
    .Text = "Luogo"
    .Name = "luogo"
    .formula = "=IIf(C[chiuso]=0,,date(now))"
    .w = 100
    .Alignment = 3
  End With
« Ultima modifica: 13 Luglio 2011, 19:49:23 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #490 il: 13 Luglio 2011, 23:17:48 »
Per la questione della data penso di aver messo a posto tutto quanto in questa release che posto.

.formula = "=IIf(C[campocheck]=-1,now())"

la sintassi per il comando IIF e' questa:

IIF(<espressione>,<se vero>,<se falso>)

Quindi dovrai sempre indicare i due valori di se vero o se falso

ancora, la prima funziona, la seconda no..avrei bisogno di non inserire nulla nella cella se l'evento non si verifica

.formula = "=IIf(C[chiuso]=0,'roma','brescia')"
.formula = "=IIf(C[chiuso]=0,,date(now))"


Nella seconda devi indicare il valore se vero:

.formula = "=IIf(C[chiuso]=0,null,date(now))"
« Ultima modifica: 23 Luglio 2011, 00:33:34 da milio »

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #491 il: 14 Luglio 2011, 00:06:41 »
@milio

Codice: [Seleziona]
Inc col 
  With GridBox1.Columns[Col]
    .Hide = False
    .Type = Grid.Type.Formula
    .DataType = Grid.DataType.Date
    .Field = "Gmaclose"
    .Text = "GMA2"
    .Name = "gma2"
    .Required = False
    .Formula = "=IIf(C[chiuso]=0,null,date(now))"
    .w = 100
    .Alignment = 3
  End With
« Ultima modifica: 14 Luglio 2011, 00:39:24 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #492 il: 14 Luglio 2011, 02:58:23 »
Nuova release con una novità: possibilità di legare degli oggetti (es TextBox) alle Colonne di GridBox in modo di avere una sorta di inserimento dati a 'Maschera' .

Le nuove proprietà sono:

GridBox.EnableObjectLinked
Abilita il controllo sugli oggetti esterni.

GridBox.Columns[].ObjectLinked
Qui viene passato l'oggetto

GridBox.Columns[].ObjectPropertyLinked
Qui viene definita la proprietà a cui deve essere passato il valore della cella (esempio per textBox sarà la proprietà Text)

Troverete all'interno del progetto l'esempio 'Rubrica' riadattato alle nuove modifiche


@Andy

Mi dici a che punto del codice viene fuori quell'errore?
« Ultima modifica: 23 Luglio 2011, 00:33:47 da milio »

Offline andy60

  • Senatore Gambero
  • ******
  • Post: 1.256
    • Mostra profilo
    • https://www.linkedin.com/in/andbertini
Re: Creazione componente: gb.gridbox
« Risposta #493 il: 14 Luglio 2011, 09:02:07 »
Subito utilizzate le nuove proprietà!

1. errore che si verifica con il :

Codice: [Seleziona]
 .Formula = "=IIf(C[chiuso]=0,C[gma],Now())"

oppure con

Codice: [Seleziona]
.Formula ="IIf(C[chiuso]=0,null,date(now))"

non mi si blocca il programma, esce solo l'alert dell'errore.
2. colonna del tipo:

Codice: [Seleziona]
 Inc Col
   With GridBox1.Columns[Col]
    .Hide = False
    .Type = Grid.Type.ComboBox
    .Field = "Idcontatto"
    .Text = "CONTATTO"
    .DataType = Grid.DataType.Integer
    .Box.ListCombo = GridBox1.ReturnCollection("SELECT Idcontatto, Cognome || ' ' || Nome FROM Contatti ORDER BY Cognome,Nome;")
    .Name = "idcontatto"
    .Required = True
    .w = 215
  End With

non ho trovato un altro moddo di collegare due campi testo in quanto il codice campo1 & ' ' & campo2 non viene preso

3. ordinamento recordset collegato alla griglia: non mi prende l'ordinamento il seguente ordinamento multiplo:
Codice: [Seleziona]
With GridBox1
    .Expand = True
    .Color.RowAlternating = Color.RGB(230, 230, 230)
    .AutoDataType = True
    .GridOnly = True
    .TableName = "Tasks"
    .LoadData("SELECT Gma,Chiuso,Gmaclose,Id,Idcontatto,Idtask,Urgenza,Note,Richieste,Luogo FROM Tasks ORDER BY Gma,Idcontatto;")
    .ColorRowAlternating = True
    .AlwaysEditable = True
    .EnableObjectLinked = True
    .ReadOnly = False
    .AutoNew = True
  End With

questo si:
Codice: [Seleziona]
With GridBox1
    .Expand = True
    .Color.RowAlternating = Color.RGB(230, 230, 230)
    .AutoDataType = True
    .GridOnly = True
    .TableName = "Tasks"
    .LoadData("SELECT Gma,Chiuso,Gmaclose,Id,Idcontatto,Idtask,Urgenza,Note,Richieste,Luogo FROM Tasks ORDER BY Gma;")
    .ColorRowAlternating = True
    .AlwaysEditable = True
    .EnableObjectLinked = True
    .ReadOnly = False
    .AutoNew = True
  End With

« Ultima modifica: 14 Luglio 2011, 09:19:32 da andy60 »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #494 il: 14 Luglio 2011, 09:55:20 »
@Andy

1: New Release: Bug-Fix   ;)

2-3: Ordinamenti e concatenazione di campi e' tutto gestito da codice sql... come viene fuori il record la gridbox lo visualizza di conseguenza.

Per questo:
Codice: [Seleziona]
.Box.ListCombo = GridBox1.ReturnCollection("SELECT Idcontatto, Cognome || ' ' || Nome FROM Contatti ORDER BY Cognome,Nome;") 

prova cosi':
Codice: [Seleziona]
.Box.ListCombo = GridBox1.ReturnCollection("SELECT Idcontatto, (Cognome || ' ' || Nome) AS Nominativo FROM Contatti ORDER BY Cognome,Nome;") 

e nella GridBox setti una colonna con .Field = "Nominativo" in sola lettura


« Ultima modifica: 23 Luglio 2011, 00:34:05 da milio »