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

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #345 il: 03 Novembre 2010, 00:22:44 »
E' perche', per adesso, non ne ho mai avuto bisogno :)... con PosChange gestisco tutto... comunque se vuoi dammi 5 min e ti posto la modifica...

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #346 il: 03 Novembre 2010, 00:25:24 »
Eccomi quà anch'io.
Ho fatto delle prove su gnome e purcrioppo devo segnalarti ancora qualche cosetta :(
1) Nella colonna Check si perde il focus quando si passa con spostamento frecce (solo in una nuova riga)
2) Succede che non sò come, si aggiungono colonne a dx, e più righe nuove si aggiungono, più colonne si formano.
Il resto è ok, combobox funziona bene
 :2birre:

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #347 il: 03 Novembre 2010, 00:30:53 »
hahaahah ...giustamente.  ;D

Ho provato ad usare il PosChange, però si scatena anche da tastiera... e se per errore con le frecce finisci su una cella di quella colonna poi elimini il record...

Hai valutato anche l'ipotesi di un evento _MouseOver... ad esempio per cambiare il puntatore, oppure per far comparire un "MessageAllert"...

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #348 il: 03 Novembre 2010, 01:00:04 »
2) Succede che non sò come, si aggiungono colonne a dx, e più righe nuove si aggiungono, più colonne si formano.

Corretta la seconda vaccata che ho fatto... per la prima ci devo lavorare un pochino :)




Per scaricare i soprgenti, da terminale, digitare:
wget http://milio.appix.net/components/gb.gridbox-2.99.30.tar.gz
« Ultima modifica: 03 Novembre 2010, 01:45:14 da milio »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #349 il: 03 Novembre 2010, 01:09:46 »
Aggiunto evento Click()  ;D

Citazione
Hai valutato anche l'ipotesi di un evento _MouseOver... ad esempio per cambiare il puntatore, oppure per far comparire un "MessageAllert"...

Non ho capito   :-\

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #350 il: 03 Novembre 2010, 01:23:23 »
L'evento _MouseOver (o rollover) si dovrebbe scatenare quando il puntatore del mouse passa sull'oggetto.

Metti che fosse possibile farlo scatenare quando passa solo su una colonna, o su una riga, o addirittura su una cella... potrebbe essere buono per far comparire dei messagi.info. Ad esempio, quando con il mouse passi sulla colonna che cliccata ti fa eliminare il record... potrebbe comparire un messaggio che ti ricorda questa cosa. Oppure... potrebbe far comparire un label con la spiegazione di quel campo. Metti che è un campo "prezzo" potrebbe ricordare la conversione in dollari $, oppure se un campo quantità, potrebbe ricordare il massimo numero disponibile, oppure quante ne sono rimaste in magazzino...

[Edit]
Scaricato e provato il nuovo evento _click()

E' come sempre perfetto!  :ok:

In pratica dando nell'evento _Click() un:

IF GridBox.column = numero_della_colonna then --> TRY GridBox.DeleteRecord(GridBox.Row)

...mi cancella ogni record, quando click sulla [numero_della_colonna] colonna!
[/Edit]
« Ultima modifica: 03 Novembre 2010, 01:34:37 da perseo »

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: Creazione componente: gb.gridbox
« Risposta #351 il: 03 Novembre 2010, 01:27:33 »
L'evento _MouseOver (o rollover) si dovrebbe scatenare quando il puntatore del mouse passa sull'oggetto.

Metti che fosse possibile farlo scatenare quando passa solo su una colonna, o su una riga, o addirittura su una cella... potrebbe essere buono per far comparire dei messagi.info. Ad esempio, quando con il mouse passi sulla colonna che cliccata ti fa eliminare il record... potrebbe comparire un messaggio che ti ricorda questa cosa. Oppure... potrebbe far comparire un label con la spiegazione di quel campo. Metti che è un campo "prezzo" potrebbe ricordare la conversione in dollari $, oppure se un campo quantità, potrebbe ricordare il massimo numero disponibile, oppure quante ne sono rimaste in magazzino...




Una cosa simile esiste già e si chiama _MouseMove...viene generato quando il mouse "passa" su un oggetto con un tasto premuto....

Per quanto riguarda l'apparizione di informazioni, invece, esistono i tooltips...

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #352 il: 03 Novembre 2010, 01:52:32 »
Altra cosa che mi viene in mente...

Si può cambiare sia il colore_di_fondo che del testo, di una colonna, o di una riga, o di una cella?
Faccio degli esempi di utilizzo in un gestionale:
Metti che in un campo, numerico, il valore abbia superato un certo limite potrebbe essere utile evidenziarlo, colorandolo. Oppure, metti che il valore inserito non rispetti certi requisiti, o piuttosto che il codice di un prodotto è incompleto... Oppure vuoi dare più risalto a certe colonne...

Ho visto che c'è la proprietà GridBox.Color e che si riferisce al colore delle righe in generale, oppure alle righe selezionate, o alle celle selezionate...
Intendo una cosa di questo tipo:
per ogni cella della colonna "costo" IF Valore > 10 THEN colore_sfondo_cella = rosso, ELSEIF Valore < 4 THEN colore_sfondo_cella = verde, ELSE colore_sfondo_cella = default... END  ;D

Pensandoci bene, mi sembra una cosa abbastanza complessa, però io intanto ti do uno spunto di riflessione, se lo valuti interessante.  :)
« Ultima modifica: 03 Novembre 2010, 01:58:14 da perseo »

Offline Golia

  • Senatore Gambero
  • ******
  • Post: 1.298
  • no xe mai massa tardi
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #353 il: 03 Novembre 2010, 01:57:46 »
Citazione
Metti che in un campo, numerico, il valore abbia superato un certo limite potrebbe essere utile evidenziarlo, colorandolo
Questo è già stato fatto, .Formatting.
Però l'ho utilizzato con G2, non ho più provato con G3, devo rivedere l'esempio

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #354 il: 03 Novembre 2010, 02:02:10 »
esatto

Formatting e' una piccola Formattazione condizionata come hai sui fogli di calcolo.... Ovviamente non c'e' ancora la guida... se hai problemi dimmi pure :)

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #355 il: 03 Novembre 2010, 02:12:00 »
Anzi faccio gia' che spiegarti come funziona

Innanzi tutto nella colonna dove vuoi fare n formattazioni condizionate dichiari:

Codice: vb [Seleziona]
GridBox.Columns[Colonna].Formatting.Count = n


Poi setti le varie formattazioni in questo modo:

Codice: vb [Seleziona]
With GridBox.Columns[Colonna].Formatting[0]
  .Comparison = "=C[Colonna] > 0"
  .Formatting.Alignement = Align.Center
  .Formatting.BackGround = Color.Yellow
  ....
End With

Ovviamente non devi settare tutte le proprietà, ma solo quelle che ti servono ;)

« Ultima modifica: 03 Novembre 2010, 02:13:33 da milio »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #356 il: 03 Novembre 2010, 03:09:03 »
Capito...

Codice: vb.net [Seleziona]

 griglia.Columns[5].Formatting.Count = 2 '--> vuol dire... crea 2 condizioni ([0] e [1]) per i campi della colonna[5]

 With griglia.Columns[5]
   .Hide = False
   .ReadOnly = True
   .Type = Grid.Type.Field 
   .Field = "palline" 
   .Text = "palline" 
   .Name = "palline"
   .Formatting[0].Comparison = "=c[5]>4 and c[5]<9" '--> condizione[0] = "uguale a: valori della colonna[5] compreso tra 4 e 9"
   .Formatting[0].Formatting.background = Color.Red '--> colora di rosso tutti i valori tra 4 e 9, cioè se è verificata la condizione[0]
   .Formatting[1].Comparison = "=c[5]>11" '--> condizione[1] = "tutti i valori della colonna[5] maggiori di 11"
   .Formatting[1].Formatting.Font = Font["bold, 14"] '--> cambia il font in bold, da 14... se è verificata la condizione[1]
   .Formatting[1].Formatting.Foreground = Color.Blue '--> colora di blue tutti i valori maggiori di 11, cioè se è verificata la condizione[1]
 End With


Ho capito che una o più colonne della GridBox possono anche essere virtuali, ossia inventate da una formula!
Ad esempio, potrei creare una colonna in più (che non fa parte del record) per fare dei calcoli da visualizzare, tipo gli sconti. In questo modo potrei ad esempio decidere se il prezzo calcolato in base allo sconto è superiore ad una certa cifra ed evidenziarlo... Oppure posso evidenziare, come dicevo prima, i campi di una colonna che superino un certo range.

 :ok:

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #357 il: 03 Novembre 2010, 08:22:11 »
Ha cosa importante: se vuoi puoi dare un nome alla colonna: GridBox.Columns[n].Name = "pippo"

dopodiche' puoi richiamare la colonna con GridBox.Columns["pippo"] e anche nelle formule "=C[pippo] > 0"

Questo l'ho fatto perche' se devi aggiungere una colonna alla griglia non devi riguardarti anche tutte le formule... ;)
« Ultima modifica: 04 Novembre 2010, 00:05:06 da milio »

Offline perseo

  • Maestro Gambero
  • ****
  • Post: 264
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #358 il: 05 Novembre 2010, 11:47:53 »
Ciao grande mago,

sono qui a riportarti altri due piccoli comportamenti anomali (su Gnome, sia con gb.qt4 che con gb.gtk, con DB MySQL). Il primo è fastidioso, il secondo meno.

bug_1a) Riguarda le colonne con valori DATE. Se con il mouse entri in un campo, lo evidenzi, e tenendo premuto scorri lungo una colonna di campi DATE, le celle dei campi DATE, senza che subiscono modifiche, si colorano in giallo post-it, come se fossero state modificate. Questo strano comportamento, poi è altalenante, ossia alcune le colora altre no. Sui campi TIMESTAMP (DATE & TIME) non lo fa!
bug_1b) Se assegno anche il formato ad esempio "yyyy-mmm-dd", la cella che prima non aveva orario lo riceve come 00:00:00.
Mi pare di capire che sia un problema di conflitto con i campi DATE del DB di MySQL... però la cosa strana è che le modifiche sono altalenanti... Quindi non so.

bug_2) Se entro in un campo della gridbox e poi mi sposto premendo sulle scrollbar del datagrid il campo rimane fermo e non si sposta insieme agli altri campi. Se invece lo spostamento lo faccio con la rotellina del mouse allora è ok (chiaramente qui è solo up e down).
« Ultima modifica: 05 Novembre 2010, 11:50:40 da perseo »

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.271
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Creazione componente: gb.gridbox
« Risposta #359 il: 05 Novembre 2010, 22:41:54 »
Bug 1a e 1b effettivamente ci sono dei problemi... il fatto e' che anche gambas stesso non riconosce il formati Time... e quando imposti l'AutoDatatype si creano dei pasticci...
Devo integrare un componente che accetti solo valori in ore ed un'altro che si possa impostare sia data che ora assieme... me tocca lavora' :)

per il bug 2 mi vien quasi voglia di togliere l'edit quando si fa lo scroll... ho aggiustato il bug ma ne e' venuto fuori un altro... se ci fai caso la casella editabile, uscendo dal contorno superiore o quello di sinistra, va a coprire le intestazioni di colonne/righe... ho provato e  riprovato ma...  :hard: