Avatar billede chrisx Nybegynder
28. maj 2002 - 18:07 Der er 4 kommentarer og
1 løsning

StringGrid - 3. Col Højrestillet

En form med 3 LabelEdit og 1 StringGrid á 3 Col og 25 Row.
Der tastes tekst på hver LabelEdit, og derpå overføres disse 3 tekster uden problemer til Col 1, 2 og 3 - da Col 3 angiver en kilo-pris er det ønskeligt at prisen holder bagkant, dvs. er højre-stillet.
Det er tilsyneladende ikke muligt via Object-in-spector at definere denne 3. Col, men er der en anden mulighed?

Jeg ved godt at med et data-aware StringGrid er det ikke noget problem, men af forskellige andre grunde er dette ikke ønskeligt.
Avatar billede valbjorn Nybegynder
28. maj 2002 - 19:46 #1
Der er en event der hedder onDrawCell, her kan man sige bestemte at den skal reagere hvis det er en bestemt Row eller Col der bliver tegenet. Om man lige gøre som du vil kan jeg ikke husk...men det skal ihvertfald gøre der...
Avatar billede hatecaps Nybegynder
28. maj 2002 - 21:46 #2
procedure TForm1.stringgrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
const
  FmtCentered = DT_SINGLELINE or DT_VCENTER or DT_NOCLIP or DT_CENTER;
  FmtLeft    = DT_SINGLELINE or DT_VCENTER or DT_NOCLIP or DT_LEFT;
  FmtRight    = DT_SINGLELINE or DT_VCENTER or DT_NOCLIP or DT_RIGHT;
var
  TempString : array[0..80] of char;
begin
  with StringGrid1 do
  begin
    if acol = 2 then  // den tredje kolonne
    begin
      format := FmtRight;
    end;
    canvas.fillrect(rect);
    rect.right := rect.right -3;
    rect.left  := rect.left  +3;
    strpcopy(@(TempString[0]),StringGrid1.cells[acol,arow]);
    drawtext(canvas.handle, TempString, -1, rect, format);
  end;
end;

denne kode skulle gi' dig det du gerne vil ha'

husk at sætte defaultdrawing til false

ha' det godt
hatecaps
Avatar billede chrisx Nybegynder
29. maj 2002 - 16:46 #3
hatecaps...

Tak for dit svar - desværre vil jeg 'save benene over' hvis jeg sætter defaultdrawing til false, derved at jeg ikke længere kan til-
skrive StringGrid1, hvad angår Col1 og 2.

Desude fejlmeldes i din procedure ved linien 'Format:=FmtRight:
'Not enough actual parameters' når der compiles

Endelig: Jeg skal som nævnt kun anvende teksten i LabelEdit3, place-ret højrestillet i Col3, så er de øvrige constanter nødvendige?

Sluttelig: Selve tilskrivningen af Col3 fungerer som nævnt, blot venstrestillet - så det er at foretrække at tilskrivning til Col3 be-vares - blot altså højrestillet.

Er det muligt at anvise hvordan, uden at ændre i mit program  måske ved at fjerne 'flødeskum' og herved kon-centrere din rutine så den kun muliggør højrestilling af teksten som tilskrives Col3?

Ha' det osse godt
29.05.02 Chrisx
Avatar billede hatecaps Nybegynder
29. maj 2002 - 22:31 #4
hmm, hvad for en delphi kører du ?. I delphi 5 ent. virker format := fmtright; fint.

hvis du med tilskrive mener at fylde værdier i celler kan du stadigvæk gøre det. de formateres med default værdier.

du er nødt til at sætte defaultdrawing til false hvis du vil bestemme over formateringen af enkelte kolonner/rækker, i hvert fald har vi ikke fundet andre kuligheder endnu :-) (ud over de dyre komponenter som bare kan det hele)

de øvrige konstanter er ikke nødvendige i dette tilfælde, men de er vel rare at ha' skulle du få brug for dem :-)

hatecaps
Avatar billede chrisx Nybegynder
18. juni 2002 - 12:06 #5
Hej hatecaps...
Der er gået lidt tid siden din kommentar - jeg har 'kringlet' udenom problemet ved at anvende 'Courier New' som font, idet alle tegn er lige brede, så jeg kompenserer for den varierende bredde (1,2,3,4 og 5 tal) ved at forantræde med et antal SB i henhold til det aktuelle tal.
Jeg kører iøvrigt Delphi 6, Enterprise-udgaven, så det er måske  derfor jeg ikke kan bruge din rutine - jeg har iøvrigt prøvet forskellige varianter - uden held. Jeg accepterer imidlertid dit svar - jeg kan vel bruge den ved en senere lejæighed.
Jeg opretter et nyt spørgsmål vedr. display af udsnit af StringGrid-arrayet - se venligst dette.

m.v.h.
Chrisx - 17.6.02
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