28. maj 2002 - 18:07Der 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.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
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...
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;
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?
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 :-)
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
Synes godt om
Ny brugerNybegynder
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.