Buongiorno a tutti.
La mia App per la contabilit oramai quasi finita… ( ce ne sono in giro una marea … ma non per MAC OS e LINUX ) mancano alcuni aggiustamenti, ma veramente delle piccolezze.
In questo momento sto facendo debugging a tutto spiano per trovare errori e correggerli, e devo scrivere un tool per la verifica/modifica dei dati in archivio.
In pratica devo poter creare una form con le barre di scorrimento per visualizzare / cercare / modificare i dati nei record
Il contenuto variabile perch letto direttamente dal ‘database schema’ e quindi devo poter inserire label e textfield in base a questa tabella
Chiedo quindi, qualcuno ha un’idea di come creare ON THE FLY elementi in una finestra ?
E per attivare le barre di scorrimento verticale ???
Sarei molto grato.
Di nuovo buona giornata a tutti.
Ti conviene creare dei container control per ogni tipologia di dato
Aggiungerli alla bisogna e spostarli all’interno usando una scrollbar (da dimensionare in base alla grandezza virtuale del contenuto)
Ho creato un container control con un canvas e una scrollbar …
Un’altro container control con una label e un textfield
che popolo in questo modo …
Sub apri(tabella as string)
// il db per l'applicazione
dim db as new MySQLCommunityServer
db.DatabaseName = procedure.dbname
db.Host = procedure.dbhost
db.Port = procedure.dbport
db.Username = procedure.dbusername
db.Password = procedure.dbpassword
if not db.Connect() then
MsgBox("Errore durante la connessione del db.azienda ")
else
// imposto il db come principale
db.SQLExecute("USE " + procedure.dbname + ";")
if db.error then
MsgBox("Errore la selezione del db di default ")
exit sub
else
db.SQLExecute("SET SQL_SAFE_UPDATES = 0;")
if db.Error then
MsgBox("Errore durante esecuzione del comando set sql_safe_update ")
exit sub
end if
end if
// Se sono qui ...
dim rspragma as RecordSet
rspragma = db.FieldSchema(tabella)
dim campo(-1) as campotesto
dim indice as integer = -1
dim altezza as integer = 22
dim margine as integer = 5
while not rspragma.EOF
indice = indice + 1
numeroelementi = numeroelementi + 1
campo.Append(new campotesto)
campo(indice) = new campotesto
campo(indice).EmbedWithin( fieldarea.nomecanvas, 10, fieldarea.posizioneverticale + (25 * (indice + 1)), 360,22 )
campo(indice).testoetichetta = rspragma.IdxField(1).StringValue
campo(indice).field = rspragma.IdxField(1).StringValue
campo(indice).tipocampo = rspragma.IdxField(2).IntegerValue
campo(indice).lunghezza = rspragma.IdxField(5).IntegerValue
rspragma.MoveNext
wend
end if
End Sub
Il codice qui : CODICE
Vorrei capire come effettuare lo scrolling della finestra o dell’elemento fieldarea
Metterei il vettore dei campi come vettore della fieldarea
semplificherei i parametri (o sono sul fieldArea o nella procedura)
In ogni caso
Calcoli l’area (altezza) che fuori della dimensione attuale
Questa il valore dello scroll (se <=0 disabiliti lo scroll e lo poni come value a 0)
Al variare dello scroll ricalcoli la posizione dei campi (top) in base alla loro (altezza + margineverticale) * i
Ricordati di ricalcolate l’altezza disponibile sul resized
Qui trovi un esempio (al volo) sul tuo codice
https://www.dropbox.com/s/n224fwjz5hi43y7/test-3.xojo_binary_project?dl=0