Hej! Lite svårt att förstå hur du menar . Men Hej Sven! Vem har sagt att det skulle vara enkelt ? Jag tycket att Svens förslag är lysande. Någon ? Tror jag skall göra ett lite exempel. För att sätta dig på spår så kolla detta lilla exempel. Roade mig med att göra ett exempel som du kan haka på Torbjörn.Horisontell stapel
Jag vill skapa en uppdelad stapel som beroende på data ändras horisontellt och varje record ska har en egen färg dvs den ska visa alla record i samma stapel med olika färger.
Har letat men kan inte hitta något och kommer inte på något bra själv heller.
Finns det någon färdig funktion i vb ?
/TobbeSv: Horisontell stapel
Jag skulle bygga upp en horisontell array av tomma Label:s där dom har olika BackColor.
En Label för varje Record. Tror att det är det optimala.Sv:Horisontell stapel
Skulle gå med label men lite jobbig kod eftersom dom ska ändras i både längd och placering efter ett värde från recordet samt att nästa label sak lägga sig direkt efter med en längd beroende på värdet osv.
TobbeSv: Horisontell stapel
Hade det varit enkelt kunde vilken djä... idiot som helst fixat det !!!
Du får tänka lite x y .Sv:Horisontell stapel
Även om det skulle finnas ett färdigt objekt, så måste ju färg och längd anges.
När det gäller en label har man ju dessutom möjligheten att förtydliga vad värdet representerar.Sv: Horisontell stapel
Hur är det nu när man skapar ett objekt in "fly" Dvs ökar på med tex Label(1) (2) osv.
New osv. har glömt. Så skall Torbjörns problem lösas.Sv:Horisontell stapel
Intressant att bolla matematik + x och widht och BackColor RGB och näste Label(x)Sv: Horisontell stapel
1: Lägg upp den första Label1 och sätt index till (0) Noll ,sätt också den färg/width du vill ha på den.
2: Ladda in nästa Label1 med index 1 se exempel. Sätt nya färgen och Left och Width.
3: Ladda in Label1(2) enl ovan osv. newX + width vs oldX
Kör i pixelmod. Tänk Left X i pixel som blir + width på Label1(0) osv.
<code>
Load Label1(1)
Label1(1).Visible = True 'default är dom Visible = False
Label1(1).BackColor = vbBlue 'Kombinera RGB värde som du vill
Label1(1).Left = 100 'här blir matte trixet X
</code>
Mycket jobb blir det , men du blir så djä... nöjd när det är klart.Sv:Horisontell stapel
<code>
Option Explicit
Dim oldSpoint As Long
Dim newSpoint
Dim sWid As Long
Dim nWid As Long
Dim oldCol As Double
Dim newCol As Double
Dim ColArray(9) As Double
Private Sub Form_Load()
Randomize
Form1.ScaleMode = 3 'Pixel
Form1.Width = 13500
ColArray(0) = 0
ColArray(1) = 255
ColArray(2) = 65280
ColArray(3) = 65535
ColArray(4) = 16711680
ColArray(5) = 16711935
ColArray(6) = 16776960
ColArray(7) = 16777215
oldSpoint = 4
Label1(0).Left = oldSpoint
sWid = Int(Rnd * 100) + 20
Label1(0).Width = sWid
oldCol = Int(Rnd * 8)
Label1(0).BackColor = ColArray(oldCol)
oldSpoint = oldSpoint + sWid
End Sub
Private Sub Command1_Click()
Dim i As Long
i = 1
On Error Resume Next
Do Until i > 9
newCol = Int(Rnd * 8)
If newCol = oldCol Then
Else
Load Label1(i)
Label1(i).Visible = True
newSpoint = oldSpoint
Label1(i).Left = newSpoint
nWid = Int(Rnd * 100) + 20
Label1(i).Width = nWid
Label1(i).BackColor = ColArray(newCol)
Label1(i).Caption = i + 1
oldSpoint = oldSpoint + nWid + 1
oldCol = newCol
i = i + 1
End If
Loop
End Sub
</code>