Avatar billede iver25 Nybegynder
29. oktober 2001 - 14:40 Der er 14 kommentarer og
1 løsning

400 point.......

Hvis der er en der kan hjælpe mig med at få min TChart til at fungere efter hensigten, er der 400 point at hente. Jeg bruger en TBarChart til at vise en kalender over ansattes mødetider, med en farve bar for en ansat, og en anden farve for en anden ansat. Hen af x - aksen har jeg dato, og op af y - aksen har jeg klokkeslæt. Jeg kan sagtens lave nye bar\'er ud for de data jeg har i min tabel. Jeg bruger følgende funktion: 
Series1.Addxy(dato, forskel, datetostr(dato), farve);

Problemet er at Bar\'erne alle starter i 00:00 på y-aksen. Hvordan rykker jeg dem op
Avatar billede stelki Nybegynder
29. oktober 2001 - 14:47 #1
yx??
Avatar billede parazite Nybegynder
29. oktober 2001 - 14:49 #2
Hvis du HAR i sinde at give 400 point for hjælpen, så kommer følgende lige: www.rush.dk/for_mange_point.php
Avatar billede hreiff Nybegynder
29. oktober 2001 - 14:58 #3
Du burde kunne ændre det via AdmDlg (design) (min value)
eller SetAdm(Handle,CSA_Min,x) (run-time)
Avatar billede iver25 Nybegynder
29. oktober 2001 - 14:58 #4
Sorry, det vidste jeg ikke. Jeg er ved at skrive hovedopgave, og er ved at være presset med tid, så jeg er lidt desperat.

Det er dog ikke kun ovenstående problem jeg skal have løst mht. min TChart, så der skal nok kommer kød på. Men jeg sætter hermed pointtallet ned til 100.......
Avatar billede iver25 Nybegynder
29. oktober 2001 - 15:00 #5
Hvordan skal jeg bruge SetAdm? Der står ikke noget om den i Delphi-hjælp?
Avatar billede hreiff Nybegynder
29. oktober 2001 - 15:05 #6
Det er fordi den hedder Chart_SetAdm(Handle,Parameter,Value)

//hreiff
Avatar billede iver25 Nybegynder
29. oktober 2001 - 15:09 #7
Der er ikke noget der hedder :  ChartMoedetid.SetAdm(

ChartMoedetid er navnet på min TChart. Jeg burde jo kunne vælge \"Setadm\" når jeg trykker på . 
Der kommer heller ingen hints når jeg laver (\'en
Avatar billede hreiff Nybegynder
29. oktober 2001 - 15:22 #8
Nej, du styrer det med din handle. Den får du når du opretter med
Handle := chart_create(bla bla bla)

Ellers må du AdmDlg i design-fasen.

Alternativt kan du bruge

for i := 0 to componentcount-1 do
  if components[i] is TChart then
    Chart_SetAdm(components[i],CSA_Min,800);
eller noget i den stil,

eller finde ud af din handle og så bruge en konstant.

Avatar billede iver25 Nybegynder
29. oktober 2001 - 15:30 #9
Jeg er rimelig grøn i Delphi, så jeg ved ikke hvad en handle er, og det ser rimelig langhåret ud. Jeg kan ikke forstå at man ikke på en simpel måde kan rykke den enkelte bar opad.
Men hvis det ikke kan lade sig gøre, på en forholdsvis simpel måde, er der så nogen der har en ide til hvordan jeg kan lave en kalender der viser hele den enkelte dag, og hvem der skal på arbejde de forskellige tidspunkter? Jeg har selv tænkt på et DBGRID, men bliver jeg så ikke nødt til at lave en forekomst i tabellen for hvert kvarter i døgnet, forudsat at jeg gerne vil have kalenderen delt op så man kan hvem der skal arbejde hvert kvarter?
Avatar billede hreiff Nybegynder
29. oktober 2001 - 15:42 #10
Det er nu ikke så langhåret.

Den handle du mangler er et nummer der fortæller hvilken komponent du arbejder med. Den lille procedure checker alle komponenter på formen og undersøger om den er af TChart-typen. Hvis den er, så ændres minnimum værdien (her sat til 800). Hvis du kun har en enkelt komponent på din form (din TChart), er det ikke så vanskeligt at gætte at du skal bruge components[0],
dvs Chart_SetAdm(components[0],Parameter,Value);
Avatar billede iver25 Nybegynder
29. oktober 2001 - 15:45 #11
Sætter jeg så ikke bare Chartens minimumsværdi? Det jeg gerne vil er at sætte hver enkelt bar\'s minimumsværdi til sluttiden på den forrige bar.

Jeg bruger følgende kode til at lave alle bar\'ene:

  while not q.Eof do
  begin
    dato :=  q.FieldByName(\'dato\').AsDateTime;
    navn :=  q.FieldByName(\'navn\').AsString;
    starttid :=  q.FieldByName(\'starttid\').AsDateTime;
    sluttid :=  q.FieldByName(\'sluttid\').AsDateTime;
    forskel :=  sluttid - starttid;
    tempfarve :=  q.FieldByName(\'farve\').AsString;
    farve := stringtocolor(tempfarve);
    Series1.Addxy(starttid, forskel, datetostr(dato), farve);
    q.Next;
    inc(i);
  end;
Avatar billede hreiff Nybegynder
29. oktober 2001 - 15:57 #12
Du burde faktisk også kunne bruge:

ChartMoedeTid.Adm[0] := 8;

for at ændre minimum værdien til 8.
Avatar billede iver25 Nybegynder
29. oktober 2001 - 16:02 #13
Jeg forstår stadig ikke hvordan jeg skal bruge den handle. Skal jeg lave en variabel af typen THandle, og så på en eller anden måde sætte den lig med den TBar jeg vil ændre på? Hvordan gør jeg det?
Avatar billede hreiff Nybegynder
29. oktober 2001 - 16:21 #14
Ok, jeg kan se problemet.
Du vil kunne starte i vilkårlig højde (ikke den samme for alle søjler)
og så er det ikke et spørgsmål om værdier. Et Bar chart vil ALTID lave søjlerne fra 0. Du bliver nok nødt til at bruge en StringGrid som du selv foreslog, og så farve for hvert kvarter, selvom det bliver mange felter.
Der var et spørgsmål om at farve felter for ikke så længe siden (hvis du skal bruge hjælp til det: Farve celle i stringgrid (spgm 125784) )

sorry.
Avatar billede iver25 Nybegynder
29. oktober 2001 - 16:22 #15
Tak for hjælpen. Det må jeg så prøve
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

SAP-medarbejder til Roller & Autorisationer i Forsvarets Cyberdivision

Kræftens Bekæmpelse

IT-driftsleder

Politiets Efterretningstjeneste

AI/ML udvikler i PET