Newsgroup: it.comp.appl.access
Titolo: esempio di creazione linea da vba con AcLine

qualcuno ha un esempio di creazione linea su una form in vba
riesco a creare le label ma non le linee 
 
grazie.


Innanzitutto [acLine] non è nulla è solo una Constante di tipo che si
usa per definire il Type di un controllo.
 
Nel tuo caso il controllo è [LINE]:
Sub Line(flags As Integer, x1 As Single, y1 As Single, x2 As Single,
y2 As Single, color As Long)
    Membro di Access.Report
 
Come vedi, ma la guida andrebbe letta bene... solo i REPORT supportano
questa Opzione.
@Alex

 grazie.
 
Metti nella form una linea impostando Visible=False, poi quando ti serve
da 
VBA puoi spostarla, ridimensionarla e renderla visibile.
Ciao.
-Marco-
 
 
-- 
 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it
 
 
 

 VBA puoi spostarla, ridimensionarla e renderla visibile.
 
Si può anche creare, posizionare e dimensionare direttamente da VBA,
con un po' di pazienza...
 
Bruno
 
 

@Alex
 
Non sapevo o non avevo letto bene la guida e quindi non sapevo che fosse 
solo per i report e la trovo una limitazione senza senso essendo un 
controllo utilizzabile anche nelle form, a volte access mi stupisce in 
entrambi i sensi
 
 
 

-Marco-
 
Ottima idea grazie per la dritta ma il problema è che quella form la 
costruisco da vba al volo
ovvero leggendo i record da una tabella vado a costruire la griglia con 
etichette varie che poi cancello ogni volta che l'utente cambia la sede
siccome cancello tutti i controlli della form cancellerei anche le linee che 
poi dovrei rimettere oppure non eliminare le linee ma come?
 
sai come posso modificare questo codice per evitare di cancellare le linee 
nascoste dalla form?
 
+++ CODE ++++
 
    Dim i As Variant
 
    DoCmd.OpenForm NomeForm, acDesign, , , , acHidden
    Do Until Forms(NomeForm).Controls.Count = 0
        For Each i In Forms(NomeForm).Controls
            DeleteControl NomeForm, i.Name
        Next
    Loop
    DoCmd.Close acForm, NomeForm, acSaveYes
 

Bruno
 
 
e come? hai un esempio? 
 

After serious thinking @Alex wrote :

La guide MS andrebbero lette con sospetto indi verificate.
I MS sono degli ottimi programmatori di linguaggi, poi però fanno 
esempi alla Fantozzi e per quanto riguarda l'Help, dopo Access 97... è 
una gran porcheria.
Io non ho verificato che le linee si possano scrivere in un Report 
(poiché lo asseriscono... potrebbe anche essere falso).
Ho verificato invece (poiché lo negano) che le linee si possono 
scrivere sulle schede.
 
Per esempio così:
=========================
Private Sub Command40_Click()
 
Dim ctrl As Control
Dim CtrlW As Double, CtrlH As Double
Dim CtrlT As Double, CtrlL As Double
Dim Twp As Integer, F As String
 
GridX = 24      ' Proprietà Grid X della scheda
GridY = 24      ' Proprietà Grid Y della scheda
CtrlW = 1       ' Control Width     dati rilevabili dalle Properties
CtrlH = 0       '    "    Height        "       "       "       "
CtrlT = 0.125   '    "    Top           "       "       "       "
CtrlL = 0.125   '    "    Left          "       "       "       "
                ' 0.125 sono tre spazi di una griglia 24 (X * Y)
                ' uno spazio essendo 0.041667
Twp = 1440      ' Twips per Inch
F = "Form3"     ' Form to open
 
DoCmd.OpenForm F, acDesign
Set ctrl = CreateControl(F, acLine, acDetail, , , _
    Left:=CtrlL * Twp, _
    Top:=CtrlT * Twp, _
    Width:=CtrlW * Twp, _
    Height:=CtrlH * Twp)
    ctrl.Name = "Line1"
DoCmd.Close acForm, F, acSaveYes
 
End Sub
============================
 
Bruno
 
 

     DoCmd.Close acForm, NomeForm, acSaveYes
 
Bruno
 
 

"Bruno Campanini"  ha scritto nel messaggio 
news:51b207b3$0$1366$4faf...@reader2.news.tin.it...

in realtï¿œ ho dovuto modificare cosi il codice, le linee sono 37 quindi il do 
until deve uscire quando ï¿œ a 37
 
    Dim i As Variant
 
    DoCmd.OpenForm NomeForm, acDesign, , , , acHidden
    Do Until Forms(NomeForm).Controls.Count = 37
        For Each i In Forms(NomeForm).Controls
            'cancello tutte le etichette ma non cancello le righe verticali
            If Left(i.Name, 5) <> "Linea" Then
                DeleteControl NomeForm, i.Name
            ElseIf Left(i.Name, 5) = "Linea" Then
                Forms(NomeForm).Controls(i.Name).Visible = False


     DoCmd.Close acForm, NomeForm, acSaveYes
 
Dovendo eliminare tutti i controlli (questa era l'ipotesi iniziale)
il Do... Until non ci doveva essere se l'operazione di cancellazione 
dalle tabelle avesse tenuto il passo, in termini di velocità, con la 
velocità del For... Next del VBA.
Se fai la prova con un centinaio di Controlli t'accorgi che il solo 
For... Next ne cancella la metà, quindi dovresti ripetrlo molte volte 
per ottenere la cancellazione completa.
Alle ripetizioni ci pensa allora il Do... Until che conta i Controlli 
rimasti ad ogni ciclo e si arresta solo quando il numero di controlli è 
 zero.
 
Nel caso concrteto, dovendo rimanere 37 Controlli, se si pone la 
condizione a ZERO il loop divernta infinito...
 
Bruno
 
 

Bruno
 
Ahhhh andiamo bene neppure della guida ci si può fidare!!!